Avec le développement continu de la technologie Internet, le traitement et la gestion des données deviennent de plus en plus importants. Surtout avec l’essor de l’Internet des objets (IoT) et du Big Data, le traitement des données chronologiques est devenu de plus en plus important. Dans ce contexte, la base de données de séries chronologiques InfluxDB est devenue le choix de plus en plus de personnes.
InfluxDB est une base de données open source distribuée spécialement conçue pour stocker et interroger des données de séries chronologiques. Il résout spécifiquement le problème de l'écriture et de l'interrogation des données de séries chronologiques et dispose également de puissantes fonctions d'agrégation et de visualisation. Comparé aux bases de données relationnelles, InfluxDB est plus léger et plus efficace, et est particulièrement adapté aux scénarios de traitement de données en temps réel à grande échelle. Cet article explique comment utiliser PHP pour implémenter la base de données de séries chronologiques InfluxDB.
1. Présentation d'InfluxDB
InfluxDB est une base de données de séries chronologiques distribuées open source qui est efficace, évolutive et facile à utiliser. InfluxDB stocke les données dans une structure de données sans schéma, permettant aux utilisateurs d'indexer ou d'interroger des données ad hoc à la demande. InfluxDB prend en charge les écritures à haut débit et les requêtes complexes rapides, ce qui en fait le premier choix dans des domaines tels que l'IoT, l'analyse et la surveillance en temps réel.
La structure de données d'InfluxDB se compose de séries chronologiques et de points de données. Une série chronologique est une collection de données stockées par ordre chronologique. Chaque point de données contient trois parties : l'horodatage, la balise et le champ. L'horodatage est l'identifiant unique du point de données, l'étiquette est les métadonnées du point de données, utilisées pour décrire les caractéristiques du point de données, telles que l'ID du capteur, l'emplacement, etc., et le champ correspond aux données réelles du point de données. point de données.
InfluxDB fournit une variété d'API et d'outils pour écrire, interroger et visualiser facilement des données.
2. Utilisez PHP pour accéder à InfluxDB
L'utilisation de PHP pour accéder à InfluxDB nécessite l'installation de l'extension influxdb-php, qui peut être installée à l'aide de Composer. Après l'installation, vous pouvez utiliser les classes liées à InfluxDB dans les programmes PHP pour interagir avec la base de données.
Ce qui suit est un exemple simple qui montre comment utiliser PHP pour écrire des données dans InfluxDB :
<?php require_once __DIR__ . '/vendor/autoload.php'; use InfluxDBClient; use InfluxDBPoint; $client = new Client([ 'host' => 'localhost', 'port' => 8086, 'username' => 'username', 'password' => 'password', 'database' => 'database' ]); $point = new Point( 'weather_temperature', // 表名 30.0, // 温度 ['location' => 'beijing'], // 标签 ['unit' => 'celsius'], // 字段 time() // 时间戳 ); $client->write([$point]);
Le code ci-dessus crée d'abord un client InfluxDB, définit les paramètres de connexion et le nom de la base de données. Ensuite, un objet de point de données Point est créé et des informations telles que le nom de la table, l'étiquette, le champ et l'horodatage sont définies. Enfin, utilisez l'objet client pour écrire les points de données dans la base de données.
3. Utilisez InfluxQL pour interroger les données
InfluxQL est le langage de requête d'InfluxDB. Il est similaire à SQL, mais accorde plus d'attention au traitement et à l'agrégation des données de séries chronologiques. Ce qui suit est un exemple simple de requête InfluxQL pour interroger les données de température d'un certain capteur dans un délai de 10 minutes :
SELECT mean("temperature") FROM "sensors" WHERE "sensor_id" = '123' AND time > now() - 10m GROUP BY time(1m)
Vous pouvez utiliser la classe Query dans l'extension influxdb-php pour écrire et exécuter des requêtes InfluxQL. Voici un exemple simple :
'localhost', 'port' => 8086, 'username' => 'username', 'password' => 'password', 'database' => 'database' ]); $query = new Query('SELECT mean("temperature") FROM "sensors" WHERE "sensor_id" = '123' AND time > now() - 10m GROUP BY time(1m)', 'database'); $results = $client->query($query); print_r($results);
Le code ci-dessus crée d'abord un objet client InfluxDB, puis crée un objet Query, définit l'instruction de requête et le nom de la base de données. Enfin, utilisez la requête d'objet client pour exécuter la requête et afficher les résultats.
4. Visualisation des données d'InfluxDB
Les données dans InfluxDB peuvent être affichées visuellement à l'aide d'outils de visualisation de données tels que Grafana. Grafana est une plateforme open source de visualisation et de surveillance de données qui prend en charge plusieurs bases de données telles que InfluxDB et peut facilement créer des tableaux de bord de données riches via une interface Web.
Pour utiliser Grafana, vous devez d'abord installer et configurer le serveur Grafana. Pour les étapes d'installation spécifiques, veuillez vous référer à la documentation officielle de Grafana.
Après l'installation, ajoutez la source de données InfluxDB dans Grafana, puis créez un tableau de bord de données pour afficher les données dans InfluxDB. Grafana prend en charge une variété de types de graphiques et de méthodes d'affichage de données différents, qui peuvent être sélectionnés et configurés selon les besoins.
V. Résumé
Cet article présente les concepts de base et l'utilisation de la base de données de séries temporelles InfluxDB, et présente également les classes associées permettant à PHP d'accéder à InfluxDB et l'utilisation du langage de requête InfluxQL. Les fonctionnalités légères, efficaces et faciles à utiliser d'InfluxDB en font l'un des premiers choix pour le traitement des données de séries chronologiques. J'espère que cet article vous sera utile pour apprendre et utiliser InfluxDB.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!