Time Series Database (TSDB) for InfluxDB® を使い始める前に、データベースの特定の主要な概念をよく理解しておくことをお勧めします。このトピックでは、TSDB for InfluxDB® に関連する主要な概念と一般的な用語を紹介します。次の表に、このトピックで説明するすべての用語を示します。 TSDB for InfluxDB® を完全に理解するために、このトピックをよく読んでおくことをお勧めします。
データベース | フィールドキー | フィールドセット |
|---|---|---|
フィールド値 | メジャーメント | ポイント |
リテンションポリシー | シリーズ | タグキー |
タグセット | タグ値 | タイムスタンプ |
詳細については、「用語」をご参照ください。
サンプルデータ
このセクションでは、次のサンプルデータを使用する例を示します。サンプルデータは実際のユースケースから収集されたものではありませんが、TSDB for InfluxDB® のセットアップのための貴重な参考資料となります。サンプルデータは、2015 年 8 月 18 日 00:00 から 2015 年 8 月 18 日 06:12 までの期間に、2 人の科学者 langstroth と perpetua によって場所 1 と場所 2 でカウントされた butterflies と honeybees の数を示しています。この例では、サンプルデータは my_database という名前のデータベースに格納され、autogen データリテンションポリシーが使用されます。サンプルデータでは、メジャーメントは census です。タイムスタンプは time 列に格納されます。フィールドキーは butterflies と honeybees で、フィールド値は butterflies 列と honeybees 列の値です。タグキーは location と scientist で、タグ値は location 列と scientist 列の値です。
name: census
time | butterflies | honeybees | location | scientist |
|---|---|---|---|---|
2015-08-18T00:00:00Z | 12 | 23 | 1 | langstroth |
2015-08-18T00:00:00Z | 1 | 30 | 1 | perpetua |
2015-08-18T00:06:00Z | 11 | 28 | 1 | langstroth |
2015-08-18T00:06:00Z | 3 | 28 | 1 | perpetua |
2015-08-18T05:54:00Z | 2 | 11 | 2 | langstroth |
2015-08-18T06:00:00Z | 1 | 10 | 2 | langstroth |
2015-08-18T06:06:00Z | 8 | 23 | 2 | perpetua |
2015-08-18T06:12:00Z | 7 | 22 | 2 | perpetua |
説明
このセクションでは、TSDB for InfluxDB® のサンプルデータについて説明します。
TSDB for InfluxDB® は時系列データベースサービスです。そのため、このセクションでは時間の分析から始めます。上記のサンプルデータには、time という名前の列が含まれています。 TSDB for InfluxDB® のすべてのデータには、この列があります。 time 列にはタイムスタンプが格納されます。各タイムスタンプは、特定のデータに関連付けられた日付と時刻を示します。日付と時刻は UTC+0 タイムゾーンを使用し、RFC 3339 標準に準拠しています。
butterflies 列と honeybees 列はフィールドです。フィールドは、フィールドキーとフィールド値で構成されます。サンプルデータでは、butterflies と honeybees はフィールドキーです。フィールドキーは文字列です。 butterflies フィールドキーは蝶の数を示し、対応するフィールド値は上から下へ 12 から 7 です。 honeybees フィールドキーはミツバチの数を示し、対応するフィールド値は上から下へ 23 から 22 です。
フィールド値は実際のデータです。文字列、浮動小数点数、整数、およびブール値にすることができます。 TSDB for InfluxDB® は時系列データベースサービスであるため、フィールド値は常にタイムスタンプに関連付けられています。サンプルデータには、次のフィールド値が含まれています。
12 23
1 30
11 28
3 28
2 11
1 10
8 23
7 22フィールドセットは、フィールドのキーと値のペアの集合です。上記のサンプルデータには、8 つのフィールドセットが含まれています。
* butterflies = 12 honeybees = 23
* butterflies = 1 honeybees = 30
* butterflies = 11 honeybees = 28
* butterflies = 3 honeybees = 28
* butterflies = 2 honeybees = 11
* butterflies = 1 honeybees = 10
* butterflies = 8 honeybees = 23
* butterflies = 7 honeybees = 22フィールドは、TSDB for InfluxDB® のデータ構造の必須要素です。 TSDB for InfluxDB® では、データを格納するためにフィールドを指定する必要があります。 TSDB for InfluxDB® のフィールドにはインデックスが付けられていないことに注意してください。フィールド値をクエリのフィルターとして使用する場合、システムはクエリ内の他の条件に一致するすべての値をスキャンする必要があります。その結果、フィールド値をフィルターとして使用するクエリは、タグをフィルターとして使用するクエリよりも応答時間が長くなります。タグに関する詳細は、次のパートで説明します。ほとんどの場合、フィールドには頻繁にクエリされるメタデータを含めることはできません。
サンプルデータの location 列と scientist 列はタグです。タグは、タグキーとタグ値で構成されます。タグキーとタグ値は、メタデータを記録する文字列として格納されます。サンプルデータでは、タグキーは location と scientist です。 location タグキーには、1 と 2 の 2 つのタグ値があります。 scientist タグキーにも、langstroth と perpetua の 2 つのタグ値があります。
タグセットは、タグのキーと値のペアのさまざまな組み合わせです。サンプルデータには、4 つのタグセットが含まれています。
* location = 1, scientist = langstroth
* location = 2, scientist = langstroth
* location = 1, scientist = perpetua
* location = 2, scientist = perpetuaTSDB for InfluxDB® では、タグはオプションです。データ構造でタグを使用する必要はありません。ただし、タグにはインデックスが付けられているため、タグを使用するとメリットがあります。これにより、タグをフィルターとして使用するクエリは、フィールド値をフィルターとして使用するクエリよりも高速に実行されます。そのため、タグは頻繁にクエリされるメタデータの格納に適しています。
インデックス作成が重要な理由: スキーマのユースケース
このセクションでは、ほとんどのクエリで butterflies フィールドと honeybees フィールドの値をフィルターとして使用するユースケースを示します。たとえば、SELECT FROM "census" WHERE "butterflies"= 1 や SELECT FROM "census" WHERE "honeybees"= 23 などです。
フィールドにはインデックスが作成されません。そのため、TSDB for InfluxDB® は最初のクエリでは butterflies のすべての値をスキャンし、2 番目のクエリでは honeybees のすべての値をスキャンします。次に、TSDB for InfluxDB® はクエリ結果を返します。これにより、特に大量のデータに基づいてクエリを実行する場合、クエリの応答時間が長くなります。クエリのパフォーマンスを最適化するには、butterflies フィールドと honeybees フィールドをタグに変更し、location タグと scientist タグをフィールドに変更することで、スキーマを再編成できます。
name: census
time | location | scientist | butterflies | honeybees |
|---|---|---|---|---|
2015-08-18T00:00:00Z | 1 | langstroth | 12 | 23 |
2015-08-18T00:00:00Z | 1 | perpetua | 1 | 30 |
2015-08-18T00:06:00Z | 1 | langstroth | 11 | 28 |
2015-08-18T00:06:00Z | 1 | perpetua | 3 | 28 |
2015-08-18T05:54:00Z | 2 | langstroth | 2 | 11 |
2015-08-18T06:00:00Z | 2 | langstroth | 1 | 10 |
2015-08-18T06:06:00Z | 2 | perpetua | 8 | 23 |
2015-08-18T06:12:00Z | 2 | perpetua | 7 | 22 |
このようにすると、上記のクエリを再実行するときに、TSDB for InfluxDB® はクエリ結果を返す前に butterflies と honeybees のすべての値をスキャンする必要がなくなります。
メジャーメントは、タグ、フィールド、および time 列のコンテナーとして使用されます。メジャーメントの名前は、関連付けられたフィールドに格納されているデータを記述します。メジャーメント名は文字列です。 SQL ユーザーにとって、メジャーメントは概念的にテーブルに似ています。サンプルデータには、メジャーメントは 1 つだけ存在します。メジャーメントの名前は census です。 census メジャーメントは、フィールド値がサイズ、方向、または幸福度指数ではなく、butterflies と honeybees の数を記録していることを示しています。
1 つのメジャーメントは複数のリテンションポリシーに属することができます。リテンションポリシーは、TSDB for InfluxDB® がデータを保持する期間と、クラスター内の各データポイントのコピー数を定義します。 DURATION 句を使用して保持期間を設定し、REPLICATION 句を使用してデータコピーの数を指定できます。
レプリケーション係数はスタンドアロンインスタンスには適用されません。
サンプルデータでは、census メジャーメントのすべてのデータは autogen リテンションポリシーに属しています。 TSDB for InfluxDB® は、autogen リテンションポリシーを自動的に作成します。このリテンションポリシーでは、データを永続的に格納でき、このリテンションポリシーのレプリケーション係数は 1 に設定されています。
TSDB for InfluxDB® では、シリーズは同じリテンションポリシーに属し、同じメジャーメントとタグセットを共有するデータポイントの集合です。上記のサンプルデータは、4 つのシリーズで構成されています。
任意のシリーズ番号 | リテンションポリシー | メジャーメント | タグセット |
|---|---|---|---|
シリーズ 1 | autogen | census | location = 1, scientist = langstroth |
シリーズ 2 | autogen | census | location = 2, scientist = langstroth |
シリーズ 3 | autogen | census | location = 1, scientist = perpetua |
シリーズ 4 | autogen | census | location = 2, scientist = perpetua |
データスキーマを設計し、TSDB for InfluxDB® を使用してデータを処理する前に、シリーズを理解しておくことをお勧めします。
データポイントは、同じシリーズの同じタイムスタンプに関連付けられたフィールドのセットで構成されます。次のデータは、データポイントの例を示しています。
name: census
-----------------
time butterflies honeybees location scientist
2015-08-18T00:00:00Z 1 30 1 perpetuaこの例では、リテンションポリシーは autogen、メジャーメントは census、タグセットは location =1, scientist = perpetua です。データポイントのタイムスタンプは 2015-08-18T00:00:00Z です。
このトピックで説明されているすべての要素は、データベースに格納されます。サンプルデータは、my_database データベースに格納されます。 TSDB for InfluxDB® データベースは、従来のデータベースに似ています。 TSDB for InfluxDB® データベースは、ユーザー、リテンションポリシー、継続クエリ、および時系列データの論理コンテナーとして機能します。
データベースは、複数のユーザー、継続クエリ、リテンションポリシー、およびメジャーメントをサポートします。 TSDB for InfluxDB® はスキーマレスデータベースを提供します。これにより、ビジネス要件に基づいて、新しいメジャーメント、タグ、およびフィールドを簡単に追加できます。 TSDB for InfluxDB® は、時系列データを処理するための簡単で効率的な方法を提供します。
TSDB for InfluxDB® を初めて使用する場合は、次のトピックをご覧ください: クイックスタート、HTTP API を使用してデータを書き込む、および HTTP API を使用してデータをクエリする。
InfluxDB® は InfluxData によって登録された商標であり、TSDB for InfluxDB® とは提携しておらず、TSDB for InfluxDB® を推奨していません。