Definizione del modello ThingWorx in Composer > Archiviazione dati > Provider di persistenza > Utilizzo di InfluxDB come provider di persistenza
Utilizzo di InfluxDB come provider di persistenza
Panoramica
Se il sistema si occupa in modo intensivo di dati di serie temporali e l'implementazione dipende in larga misura da stream di valori o stream per la persistenza o il recupero di dati, consigliamo di utilizzare InfluxDB come provider di persistenza in ThingWorx. InfluxDB è un archivio dati ad alte prestazioni scritto in modo specifico per i dati di serie temporali. Consente l'inserimento, la compressione e l'interrogazione in tempo reale di throughput elevati degli stessi dati. InfluxDB viene utilizzato come archivio dati per qualsiasi caso d'uso che coinvolga grandi quantità di dati con timestamp, tra cui monitoraggio DevOps, dati di log, metriche di applicazione, dati del sensore IoT e analisi in tempo reale. Fornisce inoltre altre funzionalità tra cui criteri di conservazione dei dati e così via. InfluxDB Enterprise offre disponibilità elevata e una soluzione di clustering altamente scalabile per le esigenze di dati di serie temporali.
I provider archiviazione di persistenza dati InfluxDB sono disponibili nell'ambito dell'installazione di default di PostgreSQL, MSSQL o Azure SQL utilizzato per i provider di proprietà:
InfluxPersistenceProviderPackage
Influx2PersistenceProviderPackage
ThingWorx supporta le versioni OSS, Enterprise e Cloud.
InfluxDB OSS 1.x e InfluxDB Enterprise 1.x. sono supportati tramite InfluxPersistenceProviderPackage. InfluxDB Enterprise è supportato solo con InfluxDB 1.x.
InfluxDB OSS 2.x è supportato tramite Influx2PersistenceProviderPackage.
InfluxDB Cloud è supportato solo tramite Influx2PersistenceProviderPackage.
Per le versioni specifiche supportate, fare riferimento a Release Advisor.
* 
Il supporto per Influx 2.0 è stato aggiunto in ThingWorx a partire dalla versione 9.3.1.
* 
Il provider di dati InfluxDB attualmente supporta solo stream di valori e stream. Il supporto per tabelle dati, wiki e blog non è disponibile.
* 
L'esportazione dei dati è supportata con InfluxPersistenceProviderPackage. In ThingWorx 9.3.8 e versioni successive, l'esportazione dei dati è ora supportata con Influx2PersistenceProviderPackage.
* 
InfluxDB non è supportato come provider di proprietà.
* 
I clienti che desiderano eseguire l'aggiornamento a ThingWorx 9.3.9 e versioni successive e a ThingWorx 9.4.0 e versioni successive e che utilizzano InfluxDB OSS 2.0, per utilizzare Influx2PersistenceProviderPackage devono innanzitutto eseguire l'aggiornamento a ThingWorx 9.3.8 per passare a InfluxDB OSS v2.6 poiché è richiesta l'esportazione dei dati prima dell'aggiornamento a InfluxDB v2.6. Nel caso di InfluxDB Cloud non è richiesta l'esportazione dei dati prima dell'aggiornamento, quindi non è necessario passare a ThingWorx 9.3.8 prima di eseguire l'aggiornamento a ThingWorx 9.3.9 e versioni successive e a ThingWorx 9.4.0 e versioni successive.
Ambiente di avvio di InfluxDB Enterprise e ThingWorx
* 
Il diagramma sopra riportato include InfluxDB Enterprise. Per InfluxDB open source, il diagramma dell'architettura sarebbe lo stesso, tranne per il fatto che funziona con un solo nodo. Per quanto riguarda InfluxDB Cloud, il database è invece ospitato all'esterno dell'ambiente ThingWorx e gestito dalla società InfluxData.
Di seguito vengono spiegati i termini utilizzati in questa documentazione in riferimento alla configurazione di InfluxDB Enterprise.
Bilanciamento del carico: InfluxDB Enterprise non funziona come bilanciamento del carico. Un amministratore deve configurarlo.
Cluster: un cluster InfluxDB Enterprise comprende due tipi di nodi: metanodi e nodi di dati.
Nodi di dati: sono inclusi tutti i dati delle serie temporali non elaborate. Per la disponibilità elevata, è necessario un fattore di replica pari almeno a due.
Metanodi: questi nodi hanno un compito semplice, ovvero mantenere lo stato coerente. Includono solo informazioni di base che riguardano lo stato, come criteri di conservazione, utenti e database. In un ambiente ad alta disponibilità sono necessari almeno tre metanodi.
Maggiori informazioni sulla disponibilità elevata sono disponibili all'indirizzo https://www.influxdata.com/blog/understanding-influxenterprise-what-is-a-cluster/.
Scelta dell'opzione di database Influx corretta
Di seguito è riportata una panoramica delle due opzioni di InfluxDB attualmente disponibili per i clienti PTC che utilizzano un'installazione locale. Quando si sceglie un prodotto Influx, è necessario considerare attentamente le opzioni software del database e le opzioni di supporto annesse. Per eventuali domande relative alla scelta delle opzioni di database corrette, contattare il servizio di supporto Influx: https://www.influxdata.com/Contact-Sales. I clienti PTC devono identificarsi come utenti di PTC ThingWorx.
InfluxDB open source OSS (nodo singolo)
Solo nodo singolo, non scalabile.
Gratuito
Supporto di Influx disponibile tramite il sito Influx Community nella pagina InfluxData Community Forums.
Opzione non consigliata per le istanze di produzione a causa dei limiti del supporto tecnico Influx (nessun supporto live di Influx per situazioni urgenti).
I clienti PTC sono responsabili per la manutenzione e il monitoraggio del database.
PTC fornirà al meglio consigli in merito al database Influx, sebbene per alcune situazioni possa essere necessario l'intervento delle risorse tecniche di Influx.
InfluxDB Enterprise
InfluxDB Enterprise può apportare i vantaggi elencati di seguito in termini di possibilità di archiviare dati di volumi e velocità maggiori rispetto a quelli attualmente disponibili con altri database.
Maggiore velocità di inserimento dei dati.
Per i dati della fase di esecuzione è possibile utilizzare più repository di dati. Ad esempio è possibile mantenere i dati relazionali in PostgreSQL, mentre si utilizza InfluxDB per i dati di stream di valori e stream dai volumi elevati. Quando si definisce uno stream o uno stream di valori, ThingWorx utilizza il provider dell'archivio dei dati della fase di esecuzione di default, ma può essere configurato per utilizzare qualsiasi provider di persistenza definito. È ancora possibile esportare dati da altri provider di dati e importarli in InfluxDB. ThingWorx gestisce l'astrazione dei dati.
Architettura cloud-friendly (scala orizzontale, solo con InfluxDB Enterprise).
Disponibilità elevata disponibile.
Supporto tecnico Influx disponibile con contratto Influx tramite il sito del supporto tecnico Influx nella pagina InfluxData.
I clienti PTC possono aprire richieste di supporto presso Influx se necessario in funzione della collaborazione PTC/Influx.
I clienti PTC sono responsabili per la manutenzione e il monitoraggio del database.
InfluxDB Cloud (ospitato all'esterno dell'ambiente ThingWorx e gestito dalla società InfluxData)
InfluxDB Cloud offre i seguenti vantaggi:
InfluxDB Cloud è una piattaforma serverless, cloud-native, multi-tenant a scalabilità elastica.
Offre disponibilità, durata e scalabilità in più aree geografiche su AWS, Google e Azure.
È sicuro e protetto con tutte le funzionalità di sicurezza e le patch più recenti installate e configurate.
InfluxDB Cloud riequilibra automaticamente i cluster, gestisce il partizionamento e utilizza i fattori di replica incorporati.
Installazione e configurazione di InfluxDB
* 
È responsabilità di chiunque installi il database Influx leggere e comprendere tutta la documentazione relativa alla sicurezza fornita per InfluxDB. PTC consiglia vivamente di installare e configurare InfluxDB utilizzando configurazioni sicure, tra cui un nome utente e una password complessa.
* 
Questa procedura presuppone che ThingWorx sia installato. Vedere Installare ThingWorx.
* 
Se InfluxDB e ThingWorx si trovano su macchine con fusi orari diversi, potrebbero verificarsi problemi durante il recupero dei dati. Per evitare questi problemi, è consigliabile utilizzare una delle opzioni di distribuzione riportate di seguito.
Distribuire InfluxDB e ThingWorx sullo stesso host/computer.
Se InfluxDB e ThingWorx vengono distribuiti in host/macchine differenti, il fuso orario del server InfluxDB deve essere allineato al parametro Tomcat -Duser.timezone con clock sincronizzati in modo da evitare problemi correlati ai risultati dell'interrogazione.
1. Scaricare e installare Influx DB
Linee guida per il download e l'installazione di Influx DB 2.0:
InfluxDB Open Source (nodo singolo): fare riferimento a Utilizzo di InfluxDB come provider di persistenza Link per il download - Nodo di dati:
InfluxDB Enterprise (disponibilità elevata): non disponibile per Influx 2.0
Linee guida per il download e l'installazione di Influx DB 1.x:
* 
InfluxDB non è supportato in Windows. I passi descritti di seguito utilizzano il sistema operativo UNIX.
InfluxDB Open Source (nodo singolo): riferimento Install InfluxDB
Link per il download:
InfluxDB Enterprise (disponibilità elevata): riferimento Install an InfluxDB Enterprise cluster in your own environment
Link per il download - Nodo di dati:
Link per il download - Metanodo:
2. Per Influx1
Creare un database all'interno di InfluxDB. Ottenere ed eseguire lo script thingworxInfluxDBSetup.sh per creare il database in InfluxDB. L'interfaccia della riga di comando di InfluxDB deve essere disponibile dalla posizione in cui viene eseguito lo script. Per ulteriori informazioni, vedere Launchinflux.
* 
Lo script thingworxInfluxDBSetup.sh è disponibile nel portale di supporto PTC, nella cartella install del pacchetto di download del software.
Il comando di esempio seguente crea un database con i criteri di conservazione di default:
CREATE DATABASE thingworx with DURATION 365d REPLICATION 1 SHARD DURATION 30d NAME autogen
* 
Attualmente il provider di dati InfluxDB supporta un criterio di conservazione solo con il nome autogen. Durante la creazione del database da utilizzare con il provider di dati è possibile specificare il nome del criterio e altri criteri, come il fattore di replica.
Creare un utente InfluxDB dall'interfaccia della riga di comando di InfluxDB. Il seguente comando di esempio crea un utente:
CREATE USER twadmin WITH PASSWORD 'password' WITH ALL PRIVILEGES
3. Per Influx2, creare un bucket iniziale e un utente utilizzando il comando influx setup. Per ulteriori informazioni, vedere https://docs.influxdata.com/influxdb/v2.0/reference/cli/influx/setup/
4. In ThingWorx Composer creare un nuovo provider di persistenza.
5. Nel campo Package provider di persistenza selezionare le opzioni seguenti:
Per le versioni precedenti a Influx 2.0, selezionare InfluxPersistenceProviderPackage
Per la versione Influx 2.0, selezionare Influx2PersistenceProviderPackage
6. Fare clic su Salva.
7. Fare clic sulla scheda Configurazione, configurare le informazioni di connessione in base alle esigenze, quindi salvare. Fare riferimento alle opzioni di configurazione nelle tabelle riportate di seguito.
Se si utilizza un'istanza del provider di persistenza (creata utilizzando il package del provider di persistenza InfluxDB) come provider di persistenza di default, è possibile modificare le impostazioni di configurazione delle code di stream e stream di valori riportate di seguito, che verranno applicate a tutti gli stream e stream di valori. Non è possibile modificare queste impostazioni per uno stream o uno stream di valori specifico.
* 
Quando si cambia il provider di persistenza di uno stream di valori (ad esempio si passa da ThingworxPersistenceProvider a InfluxPersistenceProviderPackage), qualsiasi oggetto che implementi uno stream di valori deve chiamare il servizio RestartThing per recuperare le voci scritte nel nuovo provider di persistenza. Se gli oggetti non vengono riavviati, le voci potrebbero essere scritte nel database, ma non vengono recuperate fino al riavvio dell'oggetto.
Informazioni di connessione per Influx 2.0
Nome
Descrizione
Valore di default
URL connessione
L'URL del database da cui le connessioni devono essere acquisite.
http://localhost:8086
Token
Token di sicurezza per l'accesso al sistema, utilizzato al posto della password (esattamente come una chiave di accesso).
Nome organizzazione
Nome dell'organizzazione
Nome bucket
Nome del bucket di dati (schema in cui sono memorizzati tutti i dati).
Creazione automatica bucket
Se è impostata su true, crea il bucket specificato in bucketName, se non esiste già. In caso contrario, si verifica un errore se il bucket non esiste.
False
Periodo di conservazione (giorni)
Il numero di giorni in cui dati vengono conservati, trascorsi i quali vengono eliminati. Il valore di default 0 prevede che i dati vengano mantenuti per sempre.
0
Dimensione batch
Si tratta della dimensione batch utilizzata dal client Influx. Invia sempre i punti dati in batch per migliorare le prestazioni. Si somma alla dimensione batch stream. Quando il numero di punti dati della dimensione batch è pronto per l'invio, invia i dati a Influx.
* 
Il valore non è in uso e verrà rimosso in una release futura.
1000
Intervallo di scaricamento
Indica la frequenza con cui il client Influx esegue lo scaricamento dei dati se non hanno raggiunto la dimensione batch. Il valore è specificato in millisecondi.
* 
Il valore non è in uso e verrà rimosso in una release futura.
1000 o una volta al secondo
Dimensione recupero dati da provider di persistenza
Conteggio delle righe da recuperare in batch invece di memorizzare nella cache tutte le righe sul lato client.
5000
Timeout connessione
Tempo concesso per tentare una connessione a Influx. Il valore è specificato in secondi.
10
Timeout lettura
Tempo concesso per leggere i dati da Influx per una richiesta. Il valore è specificato in secondi.
10
Timeout scrittura
Tempo concesso per provare a scrivere i dati in Influx. Il valore è specificato in secondi.
* 
Per InFluxDB Cloud, PTC consiglia di impostare il valore di Timeout scrittura su 20 secondi.
10
Livello di registrazione
Il livello di registrazione del client Influx e i log vengono inviati all'output della console. I valori possono essere NONE, BASIC, HEADERS o BODY e ogni livello fornisce informazioni aggiuntive.
NONE
Informazioni di connessione per Influx 1.8
Nome
Descrizione
Valore di default
URL connessione
L'URL del database da cui le connessioni devono essere acquisite.
http://localhost:8086
Schema database
Schema per connettersi.
thingworx
Nome utente
Nome utente utilizzato per acquisire una connessione di database.
twadmin
Password
Password utilizzata per acquisire una connessione di database.
n/d
Dimensione recupero dati da provider di persistenza
Dimensione recupero dati da provider di persistenza.
5000
Timeout connessione
Tempo, in secondi, per un timeout di connessione.
10
Timeout lettura
Tempo, in secondi, per un timeout di lettura.
10
Timeout scrittura
Tempo, in secondi, per un timeout di scrittura.
10
Impostazioni di Elaborazione stream per Influx 1.8 e 2.0
Nome
Descrizione
Tipo di base
Valore di default
Dimensione max coda
Numero massimo di voci dello stream da mettere in coda. Una volta raggiunto il valore specificato, le voci successive vengono rifiutate.
Number
250000
Tempo max di attesa prima di scaricare il buffer dello stream (millisec)
Numero di millisecondi che il sistema attende prima di scaricare il buffer dello stream.
Number
2000
Numero di thread di elaborazione
Numero dei thread di elaborazione dedicati allo stream.
* 
Il provider InfluxPersistenceProviderPackage funziona meglio con un numero minore di thread. È altamente ottimizzato per gestire i dati da un numero inferiore di canali.
Per quanto riguarda Influx2PersistenceProviderPackage, non è più il caso. PTC consiglia di aumentare il numero di thread per un throughput migliore. Per InfluxDB Cloud, PTC consiglia di aumentare il valore di Numero di thread di elaborazione a 10, Dimensione max coda a 100000 e Numero max di scritture dello stream di valori da elaborare in blocco a 25000, per raggiungere un throughput di 80.000 wps.
Number
5
Numero max di elementi prima di scaricare il buffer dello stream
Numero massimo di elementi da accumulare prima di scaricare il buffer dello stream.
Number
1000
Numero max di scritture dello stream di valori da elaborare in blocco
Numero massimo di scritture dello stream da elaborare in un unico blocco.
Number
2500
Frequenza analisi stato buffer (millisec)
Lo stato del buffer viene controllato in base al valore della frequenza specificata in millisecondi.
Number
5
Impostazioni di Elaborazione stream di valori per Influx 1.8 e 2.0
Nome
Descrizione
Tipo di base
Valore di default
Dimensione max coda
Numero massimo di voci dello stream di valori da mettere in coda. Una volta raggiunto il valore specificato, le voci seguenti vengono rifiutate.
Number
500000
Tempo max di attesa prima di scaricare il buffer dello stream di valori (millisec)
Numero di millisecondi che il sistema attende prima di scaricare il buffer dello stream di valori.
Number
10000
Numero di thread di elaborazione
Numero di thread di elaborazione allocati allo stream di valori.
* 
Il provider InfluxPersistenceProviderPackage funziona meglio con un numero minore di thread. È altamente ottimizzato per gestire i dati da un numero inferiore di canali.
Per quanto riguarda Influx2PersistenceProviderPackage, non è più il caso. PTC consiglia di aumentare il numero di thread per un throughput migliore. Per InfluxDB Cloud, PTC consiglia di aumentare il valore di Numero di thread di elaborazione a 10, Dimensione max coda a 100000 e Numero max di scritture dello stream di valori da elaborare in blocco a 25000, per raggiungere un throughput di 80.000 wps.
Number
5
Numero max di elementi prima di scaricare il buffer dei valori
Numero massimo di elementi da accumulare prima di scaricare il buffer dello stream di valori.
Number
1000
Numero max di scritture dello stream di valori da elaborare in blocco
Numero massimo di elementi da elaborare in un unico blocco.
Number
2500
Frequenza analisi stato buffer (millisec)
Lo stato del buffer viene controllato in base al valore della frequenza specificata in millisecondi.
Number
5
8. Fare clic sulla scheda Informazioni generali e selezionare la casella di controllo Attivo.
9. Fare clic su Salva.
Best practice
Limite di serie
Per serie si intende il numero totale di proprietà per tutti gli oggetti registrate in InfluxDB. InfluxDB funziona bene con un volume di dati elevato diretto a una piccola quantità di oggetti e proprietà di oggetti, ad esempio 10K o 100K. Per default, in InfluxDB il numero di serie totale è limitato a 1 milione. Questo limite può essere aumentato ma, quando il numero di serie lo supera, si ha una riduzione delle prestazioni di InfluxDB.
Se si dispone di molti oggetti e proprietà, è possibile scegliere quelli con il volume di dati più elevato e puntare solo questi a InfluxDB per evitare il sovraccarico in PostgreSQL o MSSQL.
In alternativa, se si desidera dividere la serie su più server, è possibile avere più istanze del provider di dati InfluxDB che puntano a diverse istanze del server InfluxDB.
Limite di scrittura
100K scritture al secondo con una memoria VM da 60 GB con 32 core. Andare oltre questo limite può causare problemi a ThingWorx e può esaurire le risorse necessarie per gestire qualsiasi richiesta o operazione, come scrivere sul database. A quel punto, ThingWorx si blocca mentre InfluxDB continua a scrivere sul database. Questo problema non viene riscontrato con PostgreSQL perché PostgreSQL diventa il collo di bottiglia e ThingWorx non riesce mai ad arrivare al punto di esaurire le risorse necessarie per gestire i task internamente.
SSL/Connessione protetta
InfluxDB supporta connessioni SSL e HTTPS. È possibile attivare queste connessioni per aumentare la protezione, se la rete tra ThingWorx e InfluxDB non è supportata. Un certificato autofirmato è adeguato, se la chiave privata di accesso è conservata in modo sicuro.
Limitazioni note di InfluxDB sui tipi di base delle proprietà
Non è possibile modificare il tipo di base di una proprietà dopo che è stato registrato in uno stream di valori. Per ulteriori informazioni, vedere Type conflict on insert int value in float field#3460.
Eliminazione delle proprietà
Per eliminare le proprietà da InfluxDB, è possibile utilizzare i servizi PurgeAllPropertyHistory, PurgeSelectedPropertyHistory e PurgePropertyHistory. Utilizzare i parametri startDate ed endDate per specificare un intervallo.
* 
L'eliminazione non è supportata quando si utilizza il provider Influx2PersistenceProviderPackage. I servizi PurgePropertyHistory, PurgeAllPropertyHistory e PurgeSelectedPropertyHistory non hanno alcun effetto.
È stato utile?