Définition du modèle ThingWorx dans Composer > Stockage des données > Flux de valeurs > Utilisation du service QueryDataTableEntries et QueryStreamEntriesWithData
Utilisation du service QueryDataTableEntries et QueryStreamEntriesWithData
Le service QueryDataTableEntries interroge les tables de données et renvoie une table d'informations d'enregistrements correspondant aux paramètres de requête. L'utilisation de requêtes de données non optimisées dans ThingWorx peut entraîner des problèmes de performances et même une panne du système.
Pour comprendre le fonctionnement de ce service, consultez les exemples de scénarios ci-dessous.
Scénarios d'exemple
Scénario 1 : le filtre de requête est toujours appliqué en mémoire sur ThingWorx Platform et n'est jamais utilisé par l'instruction SQL.
var query = {
"filters": {
"type": "EQ",
"fieldName": "firstname",
"value": "Doe"
}
};
var result = Things["myDataTable"].QueryDataTableEntries({query: query})
Le code ci-dessus récupère l'intégralité de la table de données de la base de données, puis le filtre est appliqué en mémoire à ThingWorx Platform.
Ce scénario s'applique à : QueryDataTableEntries, QueryStreamData, QueryStreamEntries, QueryStreamEntriesWithData
Autres alternatifs : table de données utilisant des paramètres de valeurs sur FindDataTableEntries et QueryDataTableEntries
Scénario 2 : le paramètre maxItems du service QueryDataTableEntries est appliqué en mémoire sur ThingWorx Platform et n'est pas utilisé par l'instruction SQL
var result = Things["myDataTable"].QueryDataTableEntries({maxItems: 1 });
Le code ci-dessus récupère la totalité de la table de données de la base de données. La limite est ensuite appliquée en mémoire sur ThingWorx Platform.
Le comportement est différent avec l'API Stream Query. Pour plus d'informations, consultez le scénario 3 ci-dessous.
Scénario 3 : le paramètre maxItems des services Stream Query est appliqué en mémoire sur ThingWorx Platform lorsqu'il est utilisé conjointement avec le filtre de requête (toujours en mémoire pour les tables de données, voir le scénario 2).
var query = {...};
var result = Things["myStream"].QueryStreamEntriesWithData({maxItems: 1, query: query});)
Le code ci-dessus récupère le flux entier de la base de données.
var result = Things["myStream"].QueryStreamEntriesWithData({maxItems: 1, source: "myThing"});
Le code ci-dessus ne récupère qu'un seul enregistrement de la base de données, car le paramètre de requête n'est pas utilisé.
Est-ce que cela a été utile ?