Indicizzazione dei dati di runtime in ThingWorx
Tutti i sistemi di database relazionali, come PostgreSQL, MSSQL e H2, consentono di indicizzare un campo o una combinazione di campi in una tabella. L'indicizzazione viene utilizzata con il servizio FindDataTableEntries. In questo modo migliora la velocità di recupero dei dati con le operazioni di interrogazione e di ricerca nei dati. Tuttavia, l'indicizzazione richiede ulteriore spazio di memorizzazione, nonché altre operazioni di scrittura durante l'inserimento dei dati, poiché il motore del database deve gestire strutture dati aggiuntive per ogni riga di dati inserita. ThingWorx utilizza data shape e tipi di base a livello dell'applicazione. Di conseguenza, il formato utilizzato per memorizzare i dati è basato su data shape e tipi di base anziché sul tipo di dati delle tabelle relazionali. Ciò consente a ThingWorx di modificare i tipi di dati in modo dinamico senza modificare lo schema del database e di salvare i dati come blob JSON o di testo. Lo schema di indicizzazione di default utilizzato in ThingWorx è il risultato del tentativo di bilanciare le prestazioni di scrittura/lettura tenendo conto dei fattori sopra indicati.
Dati delle proprietà di un oggetto persistente
I dati vengono memorizzati nella tabella property_vtq del database. Ogni proprietà viene memorizzata in un'apposita riga della tabella. In altre parole, le proprietà di un oggetto vengono mappate alle righe della tabella anziché alle colonne. Questa struttura rende questa tabella inadatta per la memorizzazione di dati cronologici. I campi indicizzati sono:
id - Nome dell'oggetto, oggetto
name - Nome della proprietà
Dati delle proprietà di un oggetto registrato negli stream di valori
I dati vengono memorizzati nella tabella value_stream del database. Ogni proprietà viene memorizzata in un'apposita riga della tabella per mappare le proprietà di un oggetto alle righe della tabella anziché alle colonne.
I campi indicizzati sono:
entity_id - Nome dello stream di valori
source_id - Nome dell'oggetto
property_name - Nome della proprietà
time - Data e ora della voce
Dati della tabella dati
I dati vengono memorizzati nella tabella data_table del database. Tutti i valori dei campi vengono memorizzati in una riga della tabella, con il risultato che i campi definiti nella data shape associata vengono mappati a un'unica colonna per ogni voce come stringa JSON.
{"DataShape_Field1": "aaa", "DataShape_Field2": 2}
Sono disponibili diversi indici:
entity_key - Chiave principale definita nella data shape associata alla tabella dati
entity_key, entity_id - Chiave della data shape, nome della tabella dati
field_values - Indicizzazione della stringa JSON
Dati dello stream
I dati vengono memorizzati nella tabella stream del database. Tutti i valori dei campi vengono memorizzati in una riga della tabella. I campi definiti nella data shape associata vengono mappati a un'unica colonna per ogni voce come stringa JSON. I campi indicizzati sono:
entity_id - Nome dello stream
source_id - Nome dell'oggetto
source_type - Tipo di entità dell'origine (utente, oggetto e così via)
time - Data e ora della voce
È stato utile?