Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes | ||
info:bdd:influxdb_nr [2021/08/10 11:18] – [6.1 Créer un politique de rétention (create retention policy)] phil | info:bdd:influxdb_nr [2021/08/11 12:15] – [6.1 Créer un politique de rétention (create retention policy)] phil | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | [[info: | ||
+ | ===== BDD - InfluxDB, une base TSDB ===== | ||
+ | |||
+ | [Mise à jour le 10/8/2021] | ||
+ | |||
+ | * **Sources** | ||
+ | * Site < | ||
+ | * Tutoriel < | ||
+ | * Tutoriel < | ||
+ | |||
+ | * **Lectures connexes** | ||
+ | * [[raspberrypi: | ||
+ | * [[arduino: | ||
+ | * [[reseaux: | ||
+ | * [[raspberrypi: | ||
+ | * [[web: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== 1. Généralités ==== | ||
+ | **InfluxDB** est un système de gestion de base de données orientée **TSDB**((Time Series DataBase)) ou **séries chronologiques** hautes performances, | ||
+ | |||
+ | Les bases de données traditionnelles (MariaDB, MySQL etc.) sont conçues pour stoker et mettre en relation les données . Elles sont bien adaptées pour gérer les comptes client et enregistrer les commandes d’un site marchand. Rien n’interdit l’enregistrement de données qui dépendent du temps mais dans ce cas il faut effacer manuellement les données périmées. D’autres architectures de bases de données ont été imaginées. | ||
+ | |||
+ | InfluxDB répond à **trois objectifs** : | ||
+ | * **Simplifier** la configuration et la gestion | ||
+ | * Moteur d’enregistrement et d’accès aux données qui dépendent du temps (**horodatage**) | ||
+ | * Créer des règles de rétention et de suppression **automatique** des données périmées | ||
+ | |||
+ | ==== 2.Installer InfluxDB ==== | ||
+ | {{ : | ||
+ | === 2.1 Sur Raspbian Stretch ou supérieur pour Raspberry Pi === | ||
+ | * **Source** sur < | ||
+ | |||
+ | Mettre à jour le système. | ||
+ | |||
+ | <code bash *.bash> | ||
+ | sudo apt-get update && sudo apt-get upgrade | ||
+ | </ | ||
+ | |||
+ | Avant de pouvoir installer InfluxDB sur Raspbian, il est nécessaire d’indiquer au système ou se trouvent les clés du dépôts du projet InfluxDB. | ||
+ | |||
+ | <code bash *.bash> | ||
+ | curl -sL https:// | ||
+ | </ | ||
+ | |||
+ | Il existe deux versions d’InfluxDB. La première est adaptée à Debian 8.0 ou supérieur (Raspbian Jessie, | ||
+ | |||
+ | Pour connaître la version de votre système, exécutez la commande **lsb_release -a** | ||
+ | |||
+ | <code bash *.bash> | ||
+ | pi@RPi3bp2: | ||
+ | No LSB modules are available. | ||
+ | Distributor ID: | ||
+ | Description: | ||
+ | Release: 10 | ||
+ | Codename: | ||
+ | </ | ||
+ | |||
+ | Exécutez ensuite les commandes ci-dessous pour ajouter le paquet apt-transport-https et le lien vers la source d’InfluxDB puis mettre à jour le système et enfin installer InfluxDB. | ||
+ | |||
+ | <code bash *.bash> | ||
+ | sudo apt install apt-transport-https | ||
+ | echo "deb https:// | ||
+ | sudo apt-get update | ||
+ | sudo apt-get install influxdb | ||
+ | </ | ||
+ | |||
+ | InfluxDB est maintenant installé déjà pré-configuré mais pour enregistrer des données depuis un objet connecté à l’aide d’une requête HTTP ou depuis Node-RED on doit autoriser les connexions depuis le port HTTP. Pour cela, il suffit de modifier le fichier de configuration qui se trouve dans le répertoire **/ | ||
+ | |||
+ | <code bash *.bash> | ||
+ | sudo nano / | ||
+ | </ | ||
+ | |||
+ | On dé-commente les lignes suivantes | ||
+ | |||
+ | < | ||
+ | [http] | ||
+ | # Determines whether HTTP endpoint is enabled. | ||
+ | enabled = true | ||
+ | |||
+ | # The bind address used by the HTTP service. | ||
+ | bind-address = ": | ||
+ | |||
+ | # Determines whether user authentication is enabled over HTTP/HTTPS. | ||
+ | auth-enabled = false | ||
+ | </ | ||
+ | {{ : | ||
+ | \\ | ||
+ | === 2.2 Sur Windows 64-bits === | ||
+ | Vous pouvez l’installer en le téléchargeant depuis cette < | ||
+ | |||
+ | <code cmd *.bash> | ||
+ | wget https:// | ||
+ | tar xvfz influxdb-1.1.0_linux_amd64.tar.gz | ||
+ | </ | ||
+ | |||
+ | ==== 3. Tester le fonctionnement ==== | ||
+ | Une fois l’installation terminée, vérifions que tout fonctionne correctement. InfluxDB expose une API avec laquelle on peut facilement vérifier son fonctionnement. La commande curl ci-dessous devrait donner : | ||
+ | |||
+ | <code bash *.bash> | ||
+ | $ curl -sl -I localhost: | ||
+ | HTTP/1.1 204 No Content | ||
+ | Content-Type: | ||
+ | Request-Id: 165b0fa4-ad88-11e6-8a6f-000000000000 | ||
+ | X-Influxdb-Version: | ||
+ | Date: Fri, 18 Nov 2016 12:11:08 GMT | ||
+ | </ | ||
+ | |||
+ | ==== 4. Terminologie, | ||
+ | Comme toutes les base de données non relationnelles, | ||
+ | |||
+ | *** 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 | ||
+ | |||
+ | ==== 5. Gestion des bases de données ==== | ||
+ | Il existe 6 méthodes pour la gestion des bases 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 < | ||
+ | \\ | ||
+ | === 5.1 Créer une base de données (create database) === | ||
+ | * **Syntaxe** | ||
+ | <code sql *.sql> | ||
+ | CREATE DATABASE " | ||
+ | </ | ||
+ | |||
+ | * **Paramètres** | ||
+ | * // | ||
+ | * // | ||
+ | |||
+ | * **Exemple** | ||
+ | <code sql *.sql> | ||
+ | CREATE DATABASE " | ||
+ | </ | ||
+ | |||
+ | === 5.2 Effacer une base de données (drop database) === | ||
+ | |||
+ | * **Syntaxe** | ||
+ | <code sql *.sql> | ||
+ | DROP DATABASE " | ||
+ | </ | ||
+ | |||
+ | On indique juste le nom de la base (database_name) à supprimer. | ||
+ | |||
+ | ==== 6. 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 n'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, | ||
+ | |||
+ | 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 | ||
+ | \\ | ||
+ | === 6.1 Créer un politique de rétention (create retention policy) === | ||
+ | * **Syntaxe** | ||
+ | |||
+ | <code sql *.sql> | ||
+ | CREATE RETENTION POLICY " | ||
+ | </ | ||
+ | |||
+ | * **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. | ||
+ | * **duree_shard** : la durée de stockage des données dans la zone tampon. Voir < | ||
+ | * **n** : nombre de réplication (obligatoire), | ||
+ | |||
+ | * **Exemple** | ||
+ | |||
+ | <code sql *.sql> | ||
+ | CREATE RETENTION POLICY " | ||
+ | </ | ||
+ | |||
+ | 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). \\ | ||
+ | \\ | ||
+ | === 6.2 Modifier une politique de rétention (alter retention policy) === | ||
+ | Cette méthode permet de modifier une politique de rétention existante. | ||
+ | |||
+ | * **Syntaxe** | ||
+ | |||
+ | <code sql *.sqm> | ||
+ | ALTER RETENTION POLICY " | ||
+ | </ | ||
+ | |||
+ | * **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), | ||
+ | |||
+ | * **Exemple** | ||
+ | |||
+ | <code sql *.sql> | ||
+ | ALTER RETENTION POLICY " | ||
+ | </ | ||
+ | |||
+ | La méthode retourne un résultat vide. | ||
+ | |||
+ | === 6.3 Détruite une politique de rétention (drop retention policy) === | ||
+ | |||
+ | * **Syntaxe** | ||
+ | |||
+ | <code sql *.sql> | ||
+ | DROP RETENTION POLICY " | ||
+ | </ | ||
+ | |||
+ | * **Paramètres** | ||
+ | * **nom_politique_retention** : le nom de la politique à modifier | ||
+ | * **nom_database** : base de donnée sur laquelle elle s’applique | ||
+ | |||
+ | ==== 7. Le shell InfluxDB ==== | ||
+ | InfluxDB dispose d'un shell qui permet de réaliser toutes les opérations sur les bases de données. Pour le lancer, il suffit de saisir **influx** dans le Terminal. | ||
+ | |||
+ | <code bash *.bash> | ||
+ | pi@RPi3bp2: | ||
+ | Connected to http:// | ||
+ | InfluxDB shell version: 1.7.7 | ||
+ | </ | ||
+ | |||
+ | La commande **exit** permet de sortir du shell. | ||
+ | |||
+ | < | ||
+ | |||
+ | ==== 8. Une première mise en oeuvre ==== | ||
+ | |||
+ | === 8.1 Création d'une base === | ||
+ | |||
+ | <code sql *.sql> | ||
+ | > CREATE DATABASE basetest | ||
+ | > SHOW DATABASES | ||
+ | name: databases | ||
+ | name | ||
+ | ---- | ||
+ | _internal | ||
+ | basetest | ||
+ | </ | ||
+ | |||
+ | On ajoute un utilisateur | ||
+ | |||
+ | <code sql *.sql> | ||
+ | > CREATE USER utilisateur WITH PASSWORD ' | ||
+ | </ | ||
+ | |||
+ | On lui donne tous les < | ||
+ | |||
+ | <code sql *.sql> | ||
+ | > GRANT ALL ON basetest TO projetsdiy | ||
+ | </ | ||
+ | |||
+ | Et on ajoute une politique de rétention de 30 jours. | ||
+ | |||
+ | <code sql *.sql> | ||
+ | > CREATE RETENTION POLICY " | ||
+ | </ | ||
+ | |||
+ | On vérifie la politique de rétention. | ||
+ | |||
+ | <code sql *.sql> | ||
+ | > SHOW RETENTION POLICIES ON basetest | ||
+ | |||
+ | name duration shardGroupDuration replicaN default | ||
+ | ---- -------- ------------------ -------- ------- | ||
+ | autogen 0s | ||
+ | |||
+ | </ | ||
+ | |||
+ | Destruction de la base. | ||
+ | |||
+ | <code sql *.sql> | ||
+ | > DROP DATABASE " | ||
+ | </ | ||
+ | |||
+ | ==== 9. Enregistrer des mesures dans InfluxDB avec Node-RED ==== | ||
+ | A faire |