ホームページ >バックエンド開発 >PHPチュートリアル >PHP はオープンソース InfluxDB 時系列データベースを実装します

PHP はオープンソース InfluxDB 時系列データベースを実装します

WBOY
WBOYオリジナル
2023-06-18 22:16:381951ブラウズ

インターネット技術の継続的な発展に伴い、データの処理と管理の重要性がますます高まっています。特にIoT(モノのインターネット)やビッグデータの台頭により、時系列データ処理の重要性が増しています。この文脈において、InfluxDB 時系列データベースはますます多くの人々に選ばれるようになりました。

InfluxDB は、時系列データの保存とクエリのために特別に設計された分散型オープン ソース データベースです。特に時系列データの書き込みとクエリの問題を解決し、強力な集計機能と視覚化機能も備えています。リレーショナル データベースと比較して、InfluxDB は軽量かつ効率的であり、大規模なリアルタイム データ処理シナリオに特に適しています。この記事では、PHP を使用して InfluxDB 時系列データベースを実装する方法を紹介します。

1. InfluxDB の概要

InfluxDB は、効率的でスケーラブルで使いやすいオープンソースの分散時系列データベースです。 InfluxDB はスキーマのないデータ構造にデータを保存するため、ユーザーはオンデマンドでアドホックにデータのインデックス作成やクエリを行うことができます。 InfluxDB は、高スループットの書き込みと高速で複雑なクエリをサポートしており、IoT、リアルタイム分析、モニタリングなどの分野での最初の選択肢となっています。

InfluxDB のデータ構造は、時系列とデータ ポイントで構成されます。時系列は、時系列に保存されたデータの集合であり、各データ ポイントには、タイムスタンプ、タグ、フィールドの 3 つの部分が含まれています。タイムスタンプはデータ ポイントの一意の識別子であり、ラベルはデータ ポイントのメタデータであり、センサー ID、位置などのデータ ポイントの特性を記述するために使用され、フィールドは実際のデータです。データポイント。

InfluxDB は、データの書き込み、クエリ、視覚化を簡単に行うためのさまざまな API とツールを提供します。

2. PHP を使用して InfluxDB にアクセスする

PHP を使用して InfluxDB にアクセスするには、Composer を使用してインストールできる influxdb-php 拡張機能をインストールする必要があります。インストール後、PHP プログラムで InfluxDB 関連クラスを使用してデータベースと対話できるようになります。

以下は、PHP を使用して 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]);

上記のコードは、まず InfluxDB クライアントを作成し、接続パラメーターとデータベース名を設定します。次にデータポイントオブジェクトPointを作成し、テーブル名、ラベル、フィールド、タイムスタンプなどの情報を設定します。最後に、クライアント オブジェクトを使用して、データ ポイントをデータベースに書き込みます。

3. InfluxQL を使用してデータをクエリする

InfluxQL は InfluxDB のクエリ言語であり、SQL に似ていますが、時系列データの処理と集計により重点を置いています。以下は、10 分以内に特定のセンサーの温度データをクエリする簡単な InfluxQL クエリの例です。

SELECT mean("temperature") FROM "sensors" WHERE "sensor_id" = '123' AND time > now() - 10m GROUP BY time(1m)

influxdb-php 拡張機能の Query クラスを使用して、InfluxQL クエリを作成および実行できます。以下は簡単な例です:

 '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);

上記のコードは、まず InfluxDB クライアント オブジェクトを作成し、次に Query オブジェクトを作成して、クエリ ステートメントとデータベース名を設定します。最後に、クライアント オブジェクト クエリを使用してクエリを実行し、結果を出力します。

4. InfluxDB データの視覚化

InfluxDB のデータは、Grafana などのデータ視覚化ツールを使用して視覚的に表示できます。 Grafana は、InfluxDB などの複数のデータベースをサポートし、Web インターフェイスを通じて豊富なデータ ダッシュボードを簡単に構築できるオープン ソースのデータ視覚化および監視プラットフォームです。

Grafana を使用するには、まず Grafana サーバーをインストールして構成する必要があります。具体的なインストール手順については、Grafana の公式ドキュメントを参照してください。

インストール後、Grafana に InfluxDB データ ソースを追加し、InfluxDB のデータを表示するデータ ダッシュボードを作成します。 Grafana は、必要に応じて選択して構成できる、さまざまなチャート タイプとデータ表示方法をサポートしています。

5. 概要

この記事では、InfluxDB 時系列データベースの基本概念と使用法を紹介し、また、InfluxDB にアクセスするための PHP の関連クラスと InfluxQL クエリ言語の使用法も紹介します。 InfluxDB は軽量で効率的で使いやすい機能を備えているため、時系列データ処理の最初の選択肢の 1 つとなっています。この記事が InfluxDB の学習と使用に役立つことを願っています。

以上がPHP はオープンソース InfluxDB 時系列データベースを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。