SDK の選択から時系列データの書き込みとクエリまで、LindormTSDB を使用したアプリケーション開発方法について説明します。
アプリケーション開発手順
アプリケーションを開発するには、以下の手順を実行します。
1. ソフトウェア開発キット (SDK) の選択
Lindorm は、アプリケーションが LindormTSDB にアクセスするための SQL ベースのインターフェイスを複数提供しています。
-
Java で開発されたアプリケーション向けに、Lindorm はJava ネイティブ SDKとJava Database Connectivity (JDBC) ドライバーを提供しています。
Java ネイティブ SDK の使用を推奨します。接続管理、バッチデータ書き込み、リトライ機能を提供し、データ転送エンコーディングを最適化することで、書き込み効率が向上します。
-
その他の言語で開発されたアプリケーション向けに、Lindorm はHTTP ベースの APIとデータ書き込み用のラインプロトコルを提供しています。
ラインプロトコルを使用してデータを書き込み、HTTP API が提供する SQL インターフェイスを使用してデータをクエリします。
2. データモデリング
ビジネスシナリオに基づいて、データベースと時系列データテーブルを作成します。テーブルのタグ、タイムスタンプ、メトリック値を定義し、データパーティショニング用のプライマリキーを設定します。詳細については、「データモデル」をご参照ください。
LindormTSDB は、「強い」、「弱い」、「なし」の 3 つのスキーマ制約ポリシーを提供しています。これらのポリシーは、スキーマおよびスキーマレスシナリオに対応しています。詳細については、「スキーマ制約」をご参照ください。
3. データの書き込み
LindormTSDB は、Java ネイティブ SDK、ラインプロトコル、標準 SQL など、複数の書き込み方法をサポートしています。Java ネイティブ SDK、ラインプロトコル、TSDB インターフェイスと互換性のあるマルチバリュー書き込みは、スキーマレスシナリオでの自動テーブル作成をサポートする弱いスキーマ制約を提供します。要件に基づいて書き込み方法を選択してください。
4. データのクエリ
LindormTSDB は標準 SQL アクセスを提供し、SQL を時系列機能で拡張することで、ダウンサンプリング、集計、最新値クエリをサポートしています。
5. 継続的クエリ
ビッグデータクエリシナリオでは、継続的クエリが新しいデータを事前に集計します。これにより、リアルタイムクエリのデータ量が削減され、クエリレイテンシーが低減されます。
6. 事前ダウンサンプリング
事前ダウンサンプリングは、書き込み時にルールに基づいて生データを低精度で保存します。この低精度データに対するダウンサンプリングクエリは、データ量を削減し、長い時間範囲のクエリレイテンシーを低減します。
OpenTSDB または Time Series Database (TSDB) 向けアプリケーションの開発手順
LindormTSDB は OpenTSDB および TSDB インターフェイスと互換性があります。既存の OpenTSDB または TSDB アプリケーションを移行するには、以下の手順を実行してください。
-
アプリケーションの適応
-
アプリケーション内の接続文字列を、LindormTSDB を指すように更新します。詳細については、「エンドポイントの表示」をご参照ください。
-
アプリケーションを LindormTSDB の機能に適応させます。
-
HTTP API で開発されたアプリケーションについては、LindormTSDB がサポートする HTTP API は、TSDB API と高い互換性があります。
-
TSDB SDK で開発された Java アプリケーションについては、LindormTSDB は TSDB 機能の 90% 以上と互換性があり、ほぼシームレスな移行が可能です。
-
マルチバリューモデルで書き込む場合、データはデフォルトで
defaultデータベースに書き込まれます。スキーマ制約ポリシーはデフォルトでnoneであるため、時系列データテーブルは自動的に作成されません。SQL でデータをクエリするには、テーブルを手動で作成するか、スキーマ制約ポリシーをweakに設定する必要があります。LindormTSDB は SQL でより多くの時系列機能とより高いパフォーマンスを提供するため、SQL の使用を推奨します。 -
OpenTSDB またはシングルバリューモデルで書き込む場合、スキーマ制約ポリシーは
noneです。このポリシーでは時系列データテーブルは自動的に作成されないため、SQL クエリはサポートされません。
-
-
アプリケーションを LindormTSDB に接続してテストし、合格したらデプロイしてください。
-
-
データの移行
LindormTSDB は TSDB からの完全なデータ移行をサポートしています。詳細については、「TSDB から LindormTSDB への完全移行」をご参照ください。
Prometheus 向けアプリケーションの開発手順
LindormTSDB は remote_write および remote_read インターフェイスをサポートしており、Prometheus のリモートストレージバックエンドとして機能します。また、ネイティブな Prometheus Query Language (PromQL) クエリ機能も提供しています。詳細については、「Prometheus を使用した LindormTSDB へのアクセス」をご参照ください。
InfluxDB 向けアプリケーションの開発手順
LindormTSDB は、InfluxDB 互換のラインプロトコルを使用したデータ書き込みをサポートしています。詳細については、「ラインプロトコルリファレンス」をご参照ください。