Définition du modèle ThingWorx dans Composer > Stockage des données > Fournisseurs de persistance > Utilisation d'InfluxDB en tant que fournisseur de persistance
Utilisation d'InfluxDB en tant que fournisseur de persistance
Vue d'ensemble
Si votre système traite intensivement des données de séries temporelles et que votre implémentation dépend fortement des flux de valeurs pour la persistance/récupération des données, nous vous recommandons d'utiliser InfluxDB comme fournisseur de persistance dans ThingWorx. InfluxDB est un magasin de données hautes performances écrit spécifiquement pour les données de séries temporelles. Il permet l'ingestion, la compression et l'interrogation en temps réel de ces données à haut débit. InfluxDB est utilisable comme magasin de données pour tout cas d'utilisation impliquant de grandes quantités de données horodatées, y compris la surveillance DevOps, les données des journaux, les mesures d'application, les données des capteurs IoT et l'analyse en temps réel. Le produit fournit également un certain nombre d'autres fonctionnalités, telles que des règles de rétention des données, notamment. InfluxDB Enterprise offre une solution de clustering haute disponibilité et haute évolutivité pour les besoins liés aux données de séries temporelles.
Les fournisseurs de stockage de persistance des données InfluxDB sont disponibles dans le cadre de l'installation par défaut pour PostgreSQL, MSSQL ou Azure SQL utilisés pour les fournisseurs de propriétés :
InfluxPersistenceProviderPackage
Influx2PersistenceProviderPackage
ThingWorx prend en charge les versions OSS, Enterprise et Cloud.
InfluxDB OSS 1.x et InfluxDB Enterprise 1.x. sont pris en charge via InfluxPersistenceProviderPackage. InfluxDB Enterprise n'est pris en charge qu'avec INfluxDB 1.x
InfluxDB OSS 2.x est pris en charge via Influx2PersistenceProviderPackage.
InfluxDB Cloud n'est pris en charge que via Influx2PersistenceProviderPackage.
Consultez Release Advisor pour connaître les versions particulières prises en charge.
* 
La prise en charge d'Influx 2.0 a été ajoutée de 9.3.1 à ThingWorx.
* 
Le fournisseur de données InfluxDB ne prend actuellement en charge que les flux et les flux de valeurs. La prise en charge des tables de données, des wikis et des blogs n'est pas assurée.
* 
L'exportation de données est prise en charge avec InfluxPersistenceProviderPackage et à partir de la version ThingWorx 9.3.8, l'exportation de données est désormais prise en charge avec Influx2PersistenceProviderPackage.
* 
InfluxDB n'est pas pris en charge en tant que fournisseur de propriétés.
* 
Les clients souhaitant effectuer une mise à niveau vers ThingWorx 9.3.9 et versions ultérieures, ThingWorx 9.4.0 et versions ultérieures et qui utilisent InfluxDB OSS 2.0 pour exploiter Influx2PersistenceProviderPackage doivent d'abord effectuer une mise à niveau vers ThingWorx 9.3.8 pour passer à InfluxDB OSS v2.6, car l'exportation est requise avant la mise à niveau vers InfluxDB v2.6. Pour InfluxDB Cloud, il n'est pas nécessaire d'exporter avant la mise à niveau ; par conséquent, il n'est pas nécessaire de passer à ThingWorx 9.3.8 avant la mise à niveau vers ThingWorx 9.3.9 et versions ultérieures et ThingWorx 9.4.0 et ultérieures.
InfluxDB Enterprise et ThingWorx, environnement de base
* 
Le schéma ci-dessus intègre InfluxDB Enterprise. Pour InfluxDB Open Source, le schéma d'architecture serait le même, mais avec un seul noeud. Pour InfluxDB Cloud, la base de données est hébergée en dehors de l'environnement ThingWorx et gérée par la société InfluxData.
Les termes suivants sont utilisés dans cette documentation en rapport avec la configuration d'InfluxDB Enterprise :
Equilibreur de charge : InfluxDB Enterprise ne se comporte pas comme un équilibreur de charge. Un administrateur doit mener à bien la configuration appropriée.
Cluster : un cluster InfluxDB Enterprise se compose de deux types de noeuds, des méta-noeuds et des noeuds de données.
Noeuds de données : abritent toutes les données de séries temporelles brutes. Pour assurer la haute disponibilité, un facteur de réplication d'au moins deux est nécessaire.
Méta-noeuds : ces noeuds ont une mission simple, maintenir un état cohérent. Ils ne contiennent que des informations de base sur l'état, concernant les politiques de rétention, les utilisateurs et les bases de données, par exemple. Dans un environnement haute disponibilité, au moins trois méta-noeuds sont nécessaires.
Vous trouverez davantage d'informations sur la haute disponibilité à l'adresse https://www.influxdata.com/blog/understanding-influxenterprise-what-is-a-cluster/.
Sélection de l'option de base de données Influx appropriée
Les deux options d'InfluxBD actuellement disponibles pour les clients PTC sur site sont présentées de manière générale ci-après. Les options du logiciel de base de données et du support sous-jacent doivent être soigneusement prises en compte lors de la sélection de votre produit Influx. Pour toute question relative à la sélection des options de base de données correctes, contactez le support Influx à l'adresse suivante : https://www.influxdata.com/contact-sales. Les clients PTC doivent s'identifier en tant qu'utilisateurs PTC ThingWorx.
InfluxDB open source OSS (noeud unique)
Noeud unique, non évolutif.
Gratuit
Prise en charge d'Influx par la Communauté disponible sur le site Influx Community à la page InfluxData Community Forums.
Non recommandé pour les instances de production, en raison du support technique Influx limité (pas de support en ligne en cas d'urgence).
Les clients PTC sont responsables de la maintenance et de la surveillance de la base de données.
PTC fournira des recommandations dans la mesure du possible. Certains cas pourront nécessiter un suivi par le support technique d'Influx.
InfluxDB Enterprise
Si vous êtes à la recherche d'un magasin de données pour la prise en charge de volumes et de vitesses de données supérieurs à ce qu'offrent actuellement les autres bases de données, InfluxDB Enterprise offre les avantages suivants :
Taux d'ingestion de données plus élevé
Vous pouvez disposer de plusieurs référentiels de données pour les données d'exécution. Par exemple, vous pouvez conserver les données relationnelles dans PostgreSQL, tout en utilisant InfluxDB pour les données de flux et de flux de valeurs à forte volumétrie. Lorsque vous définissez un flux ou un flux de valeurs, ThingWorx utilise le fournisseur de magasin de données d'exécution par défaut, mais vous pouvez le configurer pour qu'il utilise n'importe quel fournisseur de persistance défini. Vous pouvez toujours exécuter des exportations de données depuis d'autres fournisseurs de données et importer les données dans InfluxDB. ThingWorx gère l'abstraction des données.
Architecture Cloud (évolutivité horizontale, uniquement avec InfluxDB Enterprise)
Haute disponibilité possible.
Le support technique Influx est disponible pour les titulaires d'un contrat via le site de support Influx sur le site InfluxData.
Les clients PTC peuvent créer des requêtes auprès du support d'Influx dans le cadre de la collaboration entre PTC et Influx.
Les clients PTC sont responsables de la maintenance et de la surveillance de la base de données.
InfluxDB Cloud (hébergé en dehors de l'environnement ThingWorx et géré par la société InfluxData)
InfluxDB Cloud offre les atouts suivants :
InfluxDB Cloud a été élaboré en tant que plateforme Cloud, mutualisée, élastique, sans serveur.
Il offre disponibilité, durabilité et évolutivité dans plusieurs régions sur AWS, Google et Azure.
Il est sécurisé et robuste avec tous les derniers correctifs et fonctionnalités de sécurité installés et configurés.
InfluxDB Cloud rééquilibre automatiquement les clusters, gère les partitions et exploite les facteurs de réplication intégrés.
Installation et configuration d'InfluxDB
* 
Il est de la responsabilité de la personne qui installe la base de données Influx de lire attentivement l'ensemble de la documentation relative à la sécurité fournie pour InfluxDB. PTC recommande vivement d'installer et de configurer InfluxDB à l'aide de configurations sécurisées, y compris l'utilisation d'un nom d'utilisateur et d'un mot de passe fort.
* 
Cette procédure suppose que ThingWorx est installé. Consultez la rubrique Installation de ThingWorx.
* 
Si InfluxDB et ThingWorx sont installés sur des machines présentant des fuseaux horaires différents, des problèmes peuvent survenir lors de la récupération des données. Pour éviter ces problèmes, il est recommandé d'utiliser l'une des options de déploiement suivantes :
Déployez InfluxDB et ThingWorx sur le même hôte/la même machine.
Si InfluxDB et ThingWorx sont déployés sur des hôtes/machines différents, le fuseau horaire du serveur InfluxDB doit être aligné sur le paramètre Tomcat -Duser.timezone avec des horloges synchronisées pour éviter les problèmes liés aux résultats des requêtes.
1. Télécharger et installer InfluxDB
Instructions relatives au téléchargement et à l'installation d'InfluxDB 2.0 :
InfluxDB Open Source (noeud unique): référence : Utilisation d'InfluxDB en tant que fournisseur de persistance Liens de téléchargement - Noeud de données :
InfluxDB Enterprise (haute disponibilité) : non disponible pour Influx 2.0
Instructions relatives au téléchargement et à l'installation d'InfluxDB 1.x :
* 
InfluxDB n'est pas pris en charge sous Windows. Les étapes ci-dessous utilisent le système d'exploitation UNIX.
InfluxDB Open Source (noeud unique) : référez-vous à la rubrique Install InfluxDB (en anglais)
Liens de téléchargement :
InfluxDB Enterprise (haute disponibilité) : référez-vous à la rubrique Install an InfluxDB Enterprise cluster in your own environment (en anglais)
Liens de téléchargement - Noeud de données :
Liens de téléchargement - Noeud de métadonnées :
2. Pour Influx1
Créez une base de données dans InfluxDB. Récupérez et exécutez le script thingworxInfluxDBSetup.sh pour créer la base de données dans InfluxDB. L'interface de ligne de commande InfluxDB doit être disponible à partir de l'emplacement d'exécution du script. Pour plus d'informations, consultez la rubrique Launch Influx.
* 
Le script thingworxInfluxDBSetup.sh est disponible sur le portail de support PTC, dans le dossier install du package de téléchargement de logiciel.
L'exemple de commande suivant crée une base de données avec les règles de rétention par défaut :
CREATE DATABASE thingworx with DURATION 365d REPLICATION 1 SHARD DURATION 30d NAME autogen
* 
Le fournisseur de données InfluxDB prend actuellement en charge une stratégie de rétention avec le nom autogen uniquement. Lors de la création de la base de données à utiliser avec le fournisseur de données, vous pouvez spécifier le nom de la politique ainsi que d'autres politiques (pour configurer un facteur de réplication, par exemple).
Créez un utilisateur InfluxDB à partir de l'interface de ligne de commande InfluxDB. L'exemple de commande suivant crée un utilisateur :
CREATE USER twadmin WITH PASSWORD 'password' WITH ALL PRIVILEGES
3. Pour Influx2, créez un compartiment et un utilisateur initiaux à l'aide de la commande : influx setup. Pour plus d'informations, consultez la page https://docs.influxdata.com/influxdb/v2.0/reference/cli/influx/setup/.
4. Dans ThingWorx Composer, créez un nouveau fournisseur de persistance.
5. Dans le champ Package de fournisseur de persistance, procédez comme suit :
Pour les versions inférieures à Influx 2.0, sélectionnez InfluxPersistenceProviderPackage.
Pour Influx 2.0, sélectionnez Influx2PersistenceProviderPackage.
6. Cliquez sur Enregistrer.
7. Cliquez sur l'onglet Configuration et configurez les informations de connexion, puis enregistrez. Reportez-vous aux tables ci-dessous pour le paramétrage des options de configuration.
Si vous utilisez une instance du fournisseur de persistance (créée à l'aide du package du fournisseur de persistance InfluxDB) comme fournisseur de persistance par défaut, vous pouvez modifier les paramètres de configuration suivants des files d'attente de flux et flux de valeurs. Vos modifications s'appliqueront à l'ensemble des flux et des flux de valeurs. Ces modifications ne peuvent pas être appliquées à un flux ou flux de valeurs spécifique.
* 
Lorsque vous changez le fournisseur de persistance d'un flux de valeurs (par exemple, en passant de ThingworxPersistenceProvider à InfluxPersistenceProviderPackage), tout objet implémentant un flux de valeurs doit dès lors appeler le service RestartThing pour récupérer les entrées écrites sur le nouveau fournisseur de persistance. Si les objets ne sont pas redémarrés, les entrées pourront être écrites dans la base de données, mais elles ne seront pas récupérées tant que l'objet n'aura pas été redémarré.
Informations de connexion pour Influx 2.0
Nom
Description
Valeur par défaut
URL de connexion
URL de la base de données depuis laquelle les connexions doivent être acquises.
http://localhost:8086
Jeton
Jeton de sécurité pour l'accès au système, utilisé à la place d'un mot de passe (comme une clé d'application).
Nom organisation
Nom de l'organisation
Nom du compartiment
Nom du compartiment de données (schéma dans lequel toutes les données sont stockées).
Créer automatiquement un compartiment
Lorsque cette option est définie sur vrai, le compartiment spécifié dans bucketName est créé s'il n'existe pas déjà. Dans le cas contraire, une erreur est renvoyée si le compartiment n'existe pas.
Faux
Période de conservation (jours)
Nombre de jours pendant lequel les données sont conservées. Les données seront supprimées passé ce délai. La valeur par défaut est 0, ce qui permet de conserver les données de façon permanente.
0
Taille de lot
Il s'agit de la taille de lot utilisée par le client Influx. Le client Influx enverra toujours les points de données par lots pour optimiser les performances. Cette option est disponible en plus de la taille de lot de flux. Lorsque le nombre de points de données correspondant à la taille de lot est prêt à être envoyé, les données sont envoyées à Influx.
* 
La valeur n'est pas utilisée et sera supprimée dans une prochaine version.
1000
Intervalle de vidage
Indique la fréquence à laquelle le client Influx vide les données si la taille de lot n'a pas été atteinte. La valeur est spécifiée en millisecondes.
* 
La valeur n'est pas utilisée et sera supprimée dans une prochaine version.
1000 ou une fois par seconde
Taille d'extraction des données du fournisseur de persistance
Nombre de lignes à extraire par lots au lieu de mettre en cache toutes les lignes côté client.
5000
Délai d'inactivité de la connexion
Durée pendant laquelle la connexion à Influx sera tentée. La valeur est spécifiée en secondes.
10
Délai d'inactivité en lecture
Durée pendant laquelle les données Influx seront lues pour une requête. La valeur est spécifiée en secondes.
10
Délai d'inactivité en écriture
Durée pendant laquelle l'écriture des données dans Influx sera tentée. La valeur est spécifiée en secondes.
* 
Pour InfluxDB Cloud, PTC recommande de définir le Délai d'inactivité en écriture sur 20 secondes.
10
Niveau de journal
Le niveau de journal du client Influx. Les journaux sont envoyés à la sortie de la console. Les valeurs possibles sont NONE, BASIC, HEADERS ou BODY, chaque niveau fournissant des informations supplémentaires.
AUCUNE
Informations de connexion pour Influx 1.8
Nom
Description
Valeur par défaut
URL de connexion
URL de la base de données depuis laquelle les connexions doivent être acquises.
http://localhost:8086
Schéma de base de données
Schéma de connexion.
thingworx
Nom d'utilisateur
Nom d'utilisateur utilisé pour l'acquisition d'une connexion de base de données.
twadmin
Mot de passe
Mot de passe utilisé pour l'acquisition d'une connexion de base de données.
n/a
Taille d'extraction des données du fournisseur de persistance
Taille d'extraction des données du fournisseur de persistance.
5000
Délai d'inactivité de la connexion
Durée maximale, en secondes, d'inactivité de la connexion.
10
Délai d'inactivité en lecture
Durée maximale, en secondes, d'inactivité en lecture.
10
Délai d'inactivité en écriture
Durée maximale, en secondes, d'inactivité en écriture.
10
Paramètres de traitement du flux pour Influx 1.8 et 2.0
Nom
Description
Type de base
Valeur par défaut
Taille max. de la file d'attente
Nombre maximal d'entrées de flux à mettre en file d'attente. Lorsque la valeur spécifiée est atteinte, les entrées suivantes sont rejetées.
Number
250000
Délai d'attente avant le vidage du tampon de flux (ms)
Nombre de millisecondes attendues par le système avant le vidage du tampon de flux.
Number
2000
Nombre de threads de traitement
Nombre de threads de traitement dédiés au flux.
* 
Le fournisseur InfluxPersistenceProviderPackage est plus performant avec un plus petit nombre de threads. Il est hautement optimisé pour traiter les données d'un petit nombre de canaux.
Pour Influx2PersistenceProviderPackage, ce n'est plus le cas. PTC recommande d'augmenter le nombre de threads afin d'obtenir un meilleur débit. Pour InfluxDB Cloud, PTC recommande d'augmenter le Nombre de threads de traitement à 10, la Taille max. de la file d'attente à 100000 et le Nbre max. d'écritures de flux de valeurs dans un bloc de processus à 25000, pour atteindre un débit de 80000 wps.
Number
5
Nbre max. d'éléments avant le vidage du tampon de flux
Nombre maximal d'éléments à accumuler avant le vidage du tampon de flux.
Number
1000
Nbre max. d'écritures de flux de valeurs dans un bloc de processus
Nombre maximal d'écritures de flux à traiter dans un bloc.
Number
2500
Fréquence d'analyse du statut tampon (ms)
Le statut du tampon est vérifié selon la fréquence définie en millisecondes.
Number
5
Paramètres de traitement du flux de valeurs pour Influx 1.8 et 2.0
Nom
Description
Type de base
Valeur par défaut
Taille max. de la file d'attente
Nombre maximal d'entrées de flux de valeurs à mettre en file d'attente. Lorsque la valeur spécifiée est atteinte, les entrées suivantes sont rejetées.
Number
500000
Délai d'attente avant le vidage du tampon de flux de valeurs (ms)
Nombre de millisecondes attendues par le système avant le vidage du tampon de flux de valeurs.
Number
10000
Nombre de threads de traitement
Nombre de threads de traitement alloués au flux de valeurs.
* 
Le fournisseur InfluxPersistenceProviderPackage est plus performant avec un plus petit nombre de threads. Il est hautement optimisé pour traiter les données d'un petit nombre de canaux.
Pour Influx2PersistenceProviderPackage, ce n'est plus le cas. PTC recommande d'augmenter le nombre de threads afin d'obtenir un meilleur débit. Pour InfluxDB Cloud, PTC recommande d'augmenter le Nombre de threads de traitement à 10, la Taille max. de la file d'attente à 100000 et le Nbre max. d'écritures de flux de valeurs dans un bloc de processus à 25000, pour atteindre un débit de 80000 wps.
Number
5
Nbre max d'éléments avant le vidage du tampon de valeur
Nombre maximal d'éléments à accumuler avant le vidage du tampon de flux de valeurs.
Number
1000
Nbre max. d'écritures de flux de valeurs dans un bloc de processus
Nombre maximal d'éléments à traiter dans un bloc.
Number
2500
Fréquence d'analyse du statut tampon (ms)
Le statut du tampon est vérifié selon la fréquence définie en millisecondes.
Number
5
8. Cliquez sur l'onglet Informations générales, puis cochez la case Actif.
9. Cliquez sur Enregistrer.
Bonnes pratiques
Limites concernant les séries
On entend par "séries", le nombre total de propriétés de tous les objets journalisés dans InfluxDB. InfluxDB se comporte bien avec un volume élevé de données associées un petit nombre d'objets et de propriétés d'objets, par exemple 10 Ks ou 100 Ks. Le nombre total de séries est limité à 1 million par défaut dans InfluxDB. Cette limite peut être augmentée, mais les performances d'InfluxDB diminueront en conséquence.
Si vous disposez d'un grand nombre d'objets et de propriétés, vous pouvez choisir ceux auxquels est associé le volume de données le plus élevé et diriger ces seules données vers InfluxDB pour soulager PostgreSQL ou MSSQL.
Si vous voulez répartir les séries sur plusieurs serveurs, vous pouvez aussi utiliser plusieurs instances de fournisseur de données InfluxDB pointant vers différentes instances de serveur InfluxDB.
Limites en écriture
100 K d'écritures par seconde avec une VM de 60 Go de mémoire à 32 coeurs. En cas de dépassement de cette limite, des problèmes pourront se poser sur ThingWorx et les ressources pourront manquer pour traiter une demande ou une tâche donnée, comme écrire dans la base de données, par exemple. A ce stade, ThingWorx pourra se trouver bloqué alors même qu'InfluxDB continuera à écrire dans la base de données. Ce problème ne se produit pas avec PostgreSQL car PostgreSQL devient le goulot d'étranglement et ThingWorx n'en arrive jamais au point d'être à court de ressources pour gérer les tâches.
Connexion SSL/sécurisée
InfluxDB prend en charge les connexions SSL et HTTPS. Vous pouvez activer les connexions SSL et HTTPS pour renforcer la sécurité si le réseau entre ThingWorx et InfluxDB n'est pas pris en charge. Un certificat auto-signé est adéquat, dès lors que la clé privée de signature est sécurisée.
Limitations connues d'InfluxDB concernant les types de base de propriétés
Vous ne pouvez pas modifier le type de base d'une propriété après son enregistrement dans un flux de valeurs. Pour plus d'informations, consultez la rubrique Type conflict on insert int value in float field #3460 (en anglais).
Propriétés de purge
Les services PurgeAllPropertyHistory, PurgeSelectedPropertyHistory et PurgePropertyHistory peuvent être utilisés pour purger les propriétés d'InfluxDB. Utilisez les paramètres startDate et endDate pour spécifier une plage.
* 
La purge n'est pas prise en charge lors de l'utilisation du fournisseur Influx2PersistenceProviderPackage. Les services PurgePropertyHistory, PurgeAllPropertyHistory et PurgeSelectedPropertyHistory n'ont aucun effet.
Est-ce que cela a été utile ?