Accueil | Objets Connectés | InfluxDB | InfluxDB (Partie 1) : installation sur macOS, méthodes, shell

InfluxDB (Partie 1) : installation sur macOS, méthodes, shell

InfluxDB est une base de données Open Source spécialisée dans le stockage de données qui dépendent du temps développée par la société InfluxData. Cette base de données un peu particulière est très bien adaptée pour les applications de monitoring, événements (aussi appelé metric), enregistrement de mesures en provenance d’objets connectés, analyse temps réel. InfluxDB peut facilement être utilisée avec Node-RED. Dans cette première partie, nous allons installer InfluxDB sur macOS mais il est aussi possible de l’installer sur une distribution Linux. InfluxDB est disponible pour Windows 64 bits uniquement. Si vous avez une version 32 bits, il faudra installer Docker ( docker pull influxdb ) ou une machine virtuelle.

Installer InfluxDB sur Windows

Il faut un peu chercher sur le site d’InfluxData, mais il existe bien une version pour Windows. Elle n’est disponible que pour Windows 64 bits.

Vous pouvez l’installer en téléchargeant depuis cette page ou en installant wget pour Windows. Dans ce cas, exécutez la commande suivante

N’ayant pas de Windows 64 bits à ma disposition, je n’ai pas testé sur cet environnement.

Installer InfluxDB sur macOS

Version macOS testée : 10.11.6 (El Captain) sur un Mac Mini 2011

InfluxDB s’installe sur macOS à l’aide de Brew. Brew est un gestionnaire de paquets pour Mac (page officielle du projet).

node-red mongodb brew

Ouvrez un Terminal et collez cette commande

Répondez aux questions pour terminer l’installation de Brew sur votre Mac.

Maintenant, on peut installer InfluxDB en exécutant ces commandes

Pour démarrer influxDB au démarrage, exécutez cette commande

Maintenant, pour démarrer InfluxDB, exécutez cette commande (acceptez la demande de connexions entrantes dans la fenêtre qui apparait)

Ou pour démarrer manuellement dans un Terminal

Tester si InfluxDB fonctionne

InfluxDB expose une API avec laquelle on peut facilement vérifier son bon état de fonctionnement. Voici ce que vous devriez recevoir en retour de cette commande curl

InfluxDB est correctement démarré

Terminologie, différence avec une base SQL

Comme toutes les base de données non relationnelles, InfluxDB dispose de son propre vocabulaire qu’il convient de connaître avant de se lancer.

  • Measurement est équivalent à une table SQL
  • Tags est similaire à une colonne indexée (column) dans une base SQL
  • Fields est similaire aux colonnes non indexées dans une base SQL
  • Points est équivalent à une ligne (row)dans une base SQL

Méthodes de gestion de base de données

Il existe 6 méthodes de gestion de base de données (CREATE DATABASE, DROP DATABASE, DROP SERIES, DELETE, DROP MEASUREMENT, DROP SHARD). Voici comment fonctionnent les 2 premières, pour les autres, tout se trouve ici.

Créer une base de données (create database)

Syntaxe

Paramètres de base

  • database_name : nom de la base de données
  • duration : on peut indiquer une durée de rétention (conservation) des données mais il est plus judicieux de mettre en place une politique de rétention (voir paragraphe suivant)

Exemple

Effacer une base de données (drop database)

Syntaxe

On indique juste le nom de la base (database_name) à supprimer.

Mettre en place une politique de rétention

InfluxDB intègre un système de suppression automatique de données, c’est la Politique de Rétention (Retention Policy). Passé un certain temps, les données sont automatiquement supprimées de la base. Ce mécanisme est très pratique car on a une bonne maitrise de la taille de la base et on a pas à se soucier de cette opération de maintenance. Libre à chacun de définir la durée de vie de telle ou telle mesure. Si on veut suivre la température de son microprocesseur, une durée d’un moins peut être suffisante, au contraire la politique de rétention devra être plus souple si on veut pouvoir comparer la température dans une maison d’une année sur l’autre. Il faudra aussi penser au système en amont, inutile de stocker une mesure de température d’ambiance toute les 10 secondes ! Une mesure par minute, voir 15 minutes, c’est largement suffisant. Au contraire dans un process industriel, on voudra certainement aller chercher la seconde…ou beaucoup moins.

On dispose donc de 3 méthodes

  • Create : pour créer un règle de conservation des données
  • Alter : pour modifier une règle
  • Drop : pour supprimer une règle

Créer un politique de rétention (create retention policy)

Syntaxe

Paramètres

  • nom_politique_retention : un nom court sans espaces de préférence
  • nom_database : la base de données sur laquelle s’applique la politique de rétention
  • duree : durée de conservation des données.  C’est une expression littérale qui doit respecter la convention InfluxDB (ici). Par exemple si on veut conserver les données 30 jours, on indiquera 30d. Si on veut garder sans limitation de temps, on indique INF (infini).
  • duree_shard : la durée de stockage des données dans la zone tampon. Ici pour plus d’infos.
  • n : nombre de réplication (obligatoire), mettre 1 si aucun cluster installé

Exemple

Cette politique permet de conserver les enregistrements durant un jour (one_day_only) sur la base NOAA_water_database. Les données sont stockées dans l’espace shard 1 jour. Replication 1 indique qu’une copie de chaque élément est recopié dans le cluster (il faut qu’il cluster existe).

Modifier une politique de rétention (alter retention policy)

Cette méthode permet de modifier une politique de rétention existante.

Syntaxe

 Paramètres

  • nom_politique_retention : le nom de la politique à modifier
  • nom_database : base de donnée sur laquelle elle s’applique
  • duree, duree_shard : voir ci-dessus
  • n : nombre de réplication (obligatoire), mettre 1 si aucun cluster installé

Exemple

La méthode retourne un résultat vide.

Détruite une politique de rétention (drop retention policy)

Syntaxe

 Paramètres

  • nom_politique_retention : le nom de la politique à modifier
  • nom_database : base de donnée sur laquelle elle s’applique

Le shell InfluxDB

Maintenant que nous connaissons quelques méthodes, nous allons pourvoir faire quelques tests. Tout comme MongoDB, InfluxDB dispose de son propre shell de commande qui permet de réaliser toutes les opérations sur les bases de données. Pour le lancer, rien de bien compliqué, il suffit de saisir influx dans le Terminal.

La commande exit permet de sortir du shell.

Remarque. Toutes les opérations décrites dans ce paragraphe peuvent également être réalisées à l’aide de commandes curl.

Commençons par créer une base de données

Ajoutons un utilisateur projetsdiy pour cette base de données

Et maintenant, on lui donne tous les droits sur la base basetest.

Maintenant on ajoute une politique de rétention de 30 jours

Vérifions la politique de rétention

Voilà, c’est terminé pour ce premier article de présentation sur InfluxDB. Il reste encore beaucoup à découvrir mais c’est largement suffisant pour la prendre en main et commencer à travailler avec. Dans le prochain tutoriel, nous verrons comment enregistrer des mesures d’une sonde DHT22 construite autour du firmware MySensors à l’aide de Node-RED.