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

醉折花枝作酒筹
リリース: 2021-08-03 17:47:32
転載
2868 人が閲覧しました

最も一般的に使用されるリレーショナル データベースとキャッシュに加えて、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

 org.influxdb influxdb-java 
ログイン後にコピー

注: 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 までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!