ホームページ  >  記事  >  Java  >  Spring Boot で時系列データベースを使用するための 1 つのトリックを教えます

Spring Boot で時系列データベースを使用するための 1 つのトリックを教えます

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-08-03 17:47:322896ブラウズ

最も一般的に使用されるリレーショナル データベースとキャッシュに加えて、Spring Boot で MongoDB と LDAP ストレージを構成して使用する方法の例を以前に紹介しました。次に、別の特別なデータベースの紹介を続けます。それは、Spring Boot での時系列データベース InfluxDB の使用です。

InfluxDB の概要

時系列データベースとは何ですか?正式名称は時系列データベースです。時系列データベースは、主に時間タグ付き(時間順に変化する、つまり時系列化)なデータを処理するために使用され、時間タグ付きデータは時系列データとも呼ばれます。

時系列データは主に、電力業界や化学業界などのさまざまな種類のリアルタイム監視、検査、分析装置によって収集および生成されます。これらの産業データの典型的な特徴は次のとおりです。 (監視ポイントごとに 1 つ)、複数のデータを数秒以内に生成できます)、収集時間に大きく依存します (各データは固有の時間に対応する必要があります)、測定ポイントが多く、大量のデータが存在します。 (従来のリアルタイム監視システムは数千の監視ポイントを持ち、毎秒データが生成され、毎日数十ギガバイトのデータが生成されます)。リレーショナル データベースも時系列に基づいてデータを保存できますが、ストレージ構造の欠点により、これらのデータは高頻度の保存とクエリ統計を効率的に実現できません。そのため、時系列の保存と最適化に特化した新しい手法が生まれました。より高い効率要件を満たすために。

InfluxDB は、現在人気のあるオープン ソースの時系列データベースです (公式 Web サイトのアドレス: https://www.influxdata.com/)。より一般的な使用シナリオは、時間に関連する高頻度のデータ レコードと統計です。たとえば、データ ストレージとクエリの監視が必要です。

次の実践セッションに進む前に、まず InfluxDB のいくつかの重要な用語を理解しましょう:

  • データベース: データベース

  • 測定: リレーショナル データベースのテーブル (テーブル) に似ています

  • ポイント: リレーショナル データベースの行 (データの行) に似ています

そのうち、Point は 3 つの部分で構成されます:

  • time: タイムスタンプ

  • ##fields: 記録された値

  • タグ: インデックス属性

自分で試してみる

時系列データベースとは何か、および InfluxDB の基本概念を理解したら、次に進みましょうInfluxDB の基本構成、データ構成、書き込み操作をさらに理解するために、監視データを定期的にレポートする簡単な小規模なケースを通じて!

ステップ 1: 基本的な Spring Boot プロジェクトを作成します (方法がまだわからない場合は、この記事を参照してください: クイック スタート 1)

ステップ 2: それを pom に導入します。 xml influx の公式 SDK

<dependency>
    <groupId>org.influxdb</groupId>
    <artifactId>influxdb-java</artifactId>
</dependency>

注: Spring Boot 2.x バージョンの親は InfluxDB の SDK バージョンを維持するため、バージョン情報を手動で指定する必要はありません。使用されている Spring Boot のバージョンが古い場合、バージョン情報が欠落している可能性があるため、手動で書き込む必要があります。

ステップ 3: 接続する influxdb 情報を構成する

spring.influx.url=http://localhost:8086
spring.influx.user=admin
spring.influx.password=

3 つの属性は、接続アドレス、ユーザー名、およびパスワードを表します。この時点で、基本的な構成は完了です。

注: Spring データはサポートされていませんが、InfluxDB の自動構成は Spring Boot 2.x バージョンにも実装されているため、構成情報を書き込むだけで使用できます。特定の構成プロパティについては、ソース コード org.springframework.boot.autoconfigure.influx.InfluxDbProperties を表示できます。

ステップ 4: スケジュールされたタスクを作成し、レポート データをシミュレートし、InfluxDB に書き込みます

@Service
@AllArgsConstructor
@Slf4j
public class Monitor {

    private InfluxDB influxDB;

    @Scheduled(fixedRate = 5000)
    public void writeQPS() {
        // 模拟要上报的统计数据
        int count = (int) (Math.random() * 100);

        Point point = Point.measurement("ApiQPS")     // ApiQPS表
                .tag("url", "/hello")  // url字段
                .addField("count", count)        // 统计数据
                .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)  // 时间
                .build();

        // 往test库写数据
        influxDB.write("test", "autogen", point);

        log.info("上报统计数据:" + count);
    }

}

テスト検証

ステップ 1: InfluxDB を起動し、コマンド ラインで準備します。使用するデータベース、関連する主なコマンドは次のとおりです;

InfluxDB を入力します:

$ influx

現在の既存のデータベースをクエリします:

> show databases

データベースを作成します (データベースに注意してください) name と上記の Java コード write の最初のパラメータは同じです):

> create database "test"

ステップ 2: Spring Boot アプリケーションを開始する スケジュールされたタスクのアクションの下に、次のようなログが表示されます。

2021-08-03 01:52:47.732  INFO 94110 --- [           main] c.d.chapter63.Chapter63Application       : Started Chapter63Application in 2.326 seconds (JVM running for 3.027)
2021-08-03 01:52:47.764  INFO 94110 --- [   scheduling-1] com.didispace.chapter63.Monitor          : 上报统计数据:25
2021-08-03 01:52:52.736  INFO 94110 --- [   scheduling-1] com.didispace.chapter63.Monitor          : 上报统计数据:30
2021-08-03 01:52:57.737  INFO 94110 --- [   scheduling-1] com.didispace.chapter63.Monitor          : 上报统计数据:38
2021-08-03 01:53:02.739  INFO 94110 --- [   scheduling-1] com.didispace.chapter63.Monitor          : 上报统计数据:51
2021-08-03 01:53:07.739  INFO 94110 --- [   scheduling-1] com.didispace.chapter63.Monitor          : 上报统计数据:31

ステップ 3: コマンドを使用して、InfluxDB にデータがすでに存在するかどうかを確認します。

> select * from ApiQPS order by time desc;

name: ApiQPS
time                count url
----                ----- ---
1627926787730000000 31    /hello
1627926782730000000 51    /hello
1627926777729000000 38    /hello
1627926772727000000 30    /hello
1627926767728000000 25    /hello

ログと同じデータがすでに存在していることがわかります。

さて、今日のチュートリアルはここで終了です。忘れずに自分で試してみてください。

推奨される関連ビデオ チュートリアル:

Java ビデオ チュートリアル

以上がSpring Boot で時系列データベースを使用するための 1 つのトリックを教えますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。