このトピックでは、Lindorm Time Series Database (LindormTSDB) を使用してデータを格納するアプリケーションを開発する方法について説明します。
手順
一般に、LindormTSDB を使用するアプリケーションを開発するには、次の手順を実行します。
1. SDK を選択する
Lindorm では、さまざまな SQL ベースの方法を使用して、LindormTSDB にアクセスする必要があるアプリケーションを開発できます。
Java を使用してアプリケーションを開発する場合は、LindormTSDB SDK for Java または Lindorm 用 JDBC ドライバーを使用できます。詳細については、Java ネイティブ SDK および Java JDBC ドライバー をご参照ください。
アプリケーションの開発には、LindormTSDB SDK for Java を使用することをお勧めします。 LindormTSDB SDK for Java を使用すると、アプリケーションは効率的で使いやすい方法で LindormTSDB にアクセスでき、基盤となる接続管理、バッチデータ書き込み、エラー再試行メカニズムなどのさまざまな機能が提供されます。さらに、LindormTSDB SDK for Java では、データ送信時のエンコードが最適化され、データ書き込み効率が向上しています。
他のプログラミング言語を使用してアプリケーションを開発する場合は、LindormTSDB の HTTP ベースの SQL API と InfluxDB ラインプロトコルを使用できます。詳細については、LindormTSDB の HTTP ベースの SQL API の使用 および InfluxDB ラインプロトコルを使用したデータの書き込み をご参照ください。
InfluxDB ラインプロトコルを使用して LindormTSDB にデータを書き込み、LindormTSDB の HTTP ベースの SQL API を使用してデータをクエリすることをお勧めします。
2. データモデルを作成する
時系列データとテーブルを作成する前に、ビジネスに基づいてデータモデルを作成し、テーブル内のタグ、時間、および値の列を決定する必要があります。次に、データ特性に基づいて時系列テーブルのプライマリキーを決定し、データを異なるシャードに分散する必要があります。詳細については、データモデル をご参照ください。
LindormTSDB は、強い制約、弱い制約、制約なしの 3 種類のスキーマ制約ポリシーを提供します。要件に基づいてポリシーを選択できます。詳細については、時系列モデルのスキーマの制約 をご参照ください。
3. LindormTSDB にデータを書き込む
LindormTSDB SDK for Java、InfluxDB ラインプロトコル、標準 SQL ステートメントなど、複数の方法を使用して Lindorm にデータを書き込むことができます。 LindormTSDB は、強い制約、弱い制約、制約なしの 3 種類のスキーマ制約ポリシーを提供します。 LindormTSDB SDK for Java、InfluxDB ラインプロトコル、または Time Series Database (TSDB) と互換性のある API 操作を使用して LindormTSDB にデータを書き込む場合は、スキーマ制約ポリシーを弱い制約に設定できます。この場合、LindormTSDB はスキーマレスのシナリオでテーブルを自動的に作成します。要件に基づいてデータ書き込み方法を選択してください。
4. LindormTSDB 内のデータをクエリする
LindormTSDB では、標準 SQL ステートメントを使用して時系列データにアクセスできます。さらに、LindormTSDB は時系列データの SQL 構文を最適化し、データのダウンサンプリング、データの集計、最新値のクエリなど、時系列データに固有の機能をサポートしています。
5. 継続クエリを実行する
継続クエリはビッグデータシナリオに適用できます。継続クエリを作成して、新しく書き込まれたデータを事前に集計できます。これにより、リアルタイムでクエリされるデータ量が削減され、クエリレイテンシが短縮されます。
6. 事前ダウンサンプリングを実行する
事前ダウンサンプリングは、長い時間範囲内のデータのクエリに適用できます。データは、LindormTSDB に書き込まれるときに、指定されたルールに基づいてダウンサンプリングされます。ダウンサンプリングされたデータがクエリされると、クエリされるデータ量が削減され、クエリレイテンシが短縮されます。
OpenTSDB または TSDB を使用してデータを格納するアプリケーションの開発手順
LindormTSDB は、OpenTSDB および TSDB の API 操作と互換性があります。次の手順を実行して、アプリケーションで使用されるデータベースエンジンを OpenTSDB または TSDB から LindormTSDB に移行できます。
LindormTSDB 用にアプリケーションを適合させる
アプリケーションコードで、OpenTSDB または TSDB のエンドポイントを LindormTSDB のエンドポイントに変更します。 LindormTSDB のエンドポイントを取得する方法の詳細については、エンドポイントの取得 をご参照ください。
LindormTSDB の機能に基づいてアプリケーションを変更します。
HTTP ベースの API 操作に基づいて開発されたアプリケーション: LindormTSDB によって提供される HTTP ベースの API 操作は、基本的に TSDB によって提供される API 操作と互換性があります。詳細については、HTTP API の概要 をご参照ください。
TSDB 用 SDK を使用して開発された Java アプリケーション: LindormTSDB は、TSDB によって提供される機能の 90% と互換性があります。変更なしでアプリケーションを直接使用して LindormTSDB にアクセスできます。
複数値モデルを使用してデータを書き込むアプリケーション: デフォルトでは、データは LindormTSDB の default という名前のデータベースに書き込まれます。 LindormTSDB のデフォルトのスキーマ制約ポリシーは制約なしです。これは、LindormTSDB で時系列テーブルが自動的に作成されないことを示します。 SQL ステートメントを使用して LindormTSDB 内のデータをクエリするには、時系列テーブルを手動で作成するか、スキーマ制約ポリシーを弱い制約に設定します。 LindormTSDB は、時系列データに固有の SQL ベースの機能を提供し、時系列データの SQL クエリのパフォーマンスを最適化します。 SQL ステートメントを使用して LindormTSDB 内のデータをクエリすることをお勧めします。
OpenTSDB または単一値モデルを使用してデータを書き込むアプリケーション: LindormTSDB のデフォルトのスキーマ制約ポリシーは制約なしです。これは、LindormTSDB で時系列テーブルを自動的に作成できないことを示します。したがって、これらのアプリケーションは SQL ステートメントを使用して LindormTSDB 内のデータをクエリできません。
アプリケーションを LindormTSDB に接続してデバッグとテストを実行し、アプリケーションがすべてのテストに合格したらアプリケーションをリリースします。
アプリケーションデータを移行する
TSDB 内のデータは LindormTSDB に完全に移行できます。詳細については、TSDB から LindormTSDB へのすべてのデータの移行 をご参照ください。
Prometheus を使用するアプリケーションの開発手順
LindormTSDB は、リモートストレージのリモート書き込みおよびリモート読み取りインターフェースをサポートし、クエリのネイティブ PromQL 構文をサポートしています。詳細については、Prometheus を使用して LindormTSDB に接続して使用する をご参照ください。
InfluxDB を使用するアプリケーションの開発手順
InfluxDB ラインプロトコルを使用して、LindormTSDB にデータを書き込むことができます。詳細については、ラインプロトコルのリファレンス をご参照ください。