Definizione del modello ThingWorx in Composer > Archiviazione dati > Stream di valori > Utilizzo del servizio QueryDataTableEntries e QueryStreamEntriesWithData
Utilizzo del servizio QueryDataTableEntries e QueryStreamEntriesWithData
Il servizio QueryDataTableEntries interroga le tabelle dati e restituisce una infotable di record che corrispondono ai parametri di richiesta. L'utilizzo di interrogazioni sui dati non ottimizzate in ThingWorx può causare problemi di prestazioni e persino un'interruzione del sistema.
Per comprendere il funzionamento di questo servizio, vedere gli scenari di esempio riportati di seguito.
Scenari di esempio
Scenario 1: il filtro di interrogazione viene sempre applicato in memoria in ThingWorx Platform e non viene mai utilizzato dall'istruzione SQL.
var query = {
"filters": {
"type": "EQ",
"fieldName": "firstname",
"value": "Doe"
}
};
var result = Things["myDataTable"].QueryDataTableEntries({query: query})
Il codice riportato sopra recupera l'intera tabella dati dal database, quindi viene applicato il filtro in memoria in ThingWorx Platform.
Questo scenario si applica a: QueryDataTableEntries, QueryStreamData, QueryStreamEntries QueryStreamEntriesWithData
Scenari alternativi: tabella dati che utilizza i parametri dei valori in FindDataTableEntries e QueryDataTableEntries
Scenario 2: il parametro maxItems per il servizio QueryDataTableEntries viene applicato in memoria in ThingWorx Platform e non viene utilizzato dall'istruzione SQL
var result = Things["myDataTable"].QueryDataTableEntries({maxItems: 1 });
Il codice riportato sopra recupera l'intera tabella dati dal database, quindi viene applicato il limite in memoria in ThingWorx Platform.
Il comportamento è diverso per l'API di interrogazione degli stream. Per ulteriori informazioni, vedere lo Scenario 3 riportato di seguito.
Scenario 3: maxItems nei servizi di interrogazione degli stream viene applicato in memoria in ThingWorx Platform quando viene utilizzato insieme al filtro di interrogazione (sempre in memoria per le tabelle dati, vedere lo Scenario 2)
var query = {...};
var result = Things["myStream"].QueryStreamEntriesWithData({maxItems: 1, query: query});)
Il codice riportato sopra recupera l'intero stream dal database.
var result = Things["myStream"].QueryStreamEntriesWithData({maxItems: 1, source: "myThing"});
Il codice riportato sopra recupera solo un record dal database in quanto non viene utilizzato il parametro di interrogazione.
È stato utile?