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.
* 
L'utilisation d'InfluxDB requiert ThingWorx 8.4.0 ou version ultérieure.
InfluxPersistenceProviderPackage est disponible dans le cadre de l'installation par défaut pour PostgreSQL ou MSSQL.
* 
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.
* 
Le fournisseur de données InfluxDB ne prend actuellement pas en charge la fonctionnalité d'exportation.
* 
InfluxDB n'est pas pris en charge en tant que fournisseur de propriétés.
* 
Le fournisseur de données InfluxDB prend actuellement uniquement en charge une politique de rétention nommée "autogen". 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).
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.
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/.
Avantages de l'utilisation d'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)
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.
1. Téléchargez et installez InfluxDB.
* 
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érence https://docs.influxdata.com/influxdb/v1.7/introduction/installation/
Liens de téléchargement :
Liens de téléchargement - Noeud de données :
Liens de téléchargement - Noeud de métadonnées :
2. 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.
* 
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
3. Créez un utilisateur InfluxDB : L'exemple de commande suivant crée un utilisateur :
CREATE USER twadmin WITH PASSWORD 'password' WITH ALL PRIVILEGES
4. Dans ThingWorx Composer, créez un nouveau fournisseur de persistance.
5. Dans le champ Package de fournisseur de persistance, sélectionnez InfluxPersistenceProviderPackage.
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
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.
thingworx
Mot de passe
Mot de passe utilisé pour l'acquisition d'une connexion de base de données.
n/a
Paramètres de traitement des flux
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.
* 
InfluxDB 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.
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
1 000
Nbre max. d'écritures de flux 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)
La statut du tampon est vérifié selon la fréquence définie en millisecondes.
Number
5
Paramètres de traitement des flux de valeurs
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
250000
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
2000
Nombre de threads de traitement
Nombre de threads de traitement alloués au flux de valeurs.
* 
InfluxDB 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.
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
500
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)
La 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.
Conseils
Limites concernant les séries
Une série est le nombre total de combinaisons uniques d'objets et de flux de valeurs associés consigné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. Le dépassement de cette limite peut engendrer des problèmes dans ThingWorx, tel qu'un manque de ressources pour traiter une demande ou une tâche donnée, par exemple l'écriture dans la base de données. 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, reportez-vous à la page Web https://github.com/influxdata/influxdb/issues/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.