Tablestore SDK for Java を使用して、時系列テーブルを作成し、データとメタデータの Time-to-Live (TTL)、時系列識別子、データフィールドのプライマリキー、分析ストア、および Lastpoint インデックスを設定します。
前提条件
Tablestore SDK for Java をインストールし、時系列クライアントを初期化します。
説明
createTimeseriesTable を呼び出して、時系列データとメタデータを格納する時系列テーブルを作成します。 時系列テーブル名は、インスタンス内のデータテーブルおよび時系列テーブルにおいて一意である必要があります。
public CreateTimeseriesTableResponse createTimeseriesTable(CreateTimeseriesTableRequest request)
次の例では、example_timeseries_table を作成します。 デフォルトでは、時系列データの TTL は -1 で、データが期限切れにならないことを意味し、分析ストアは作成されません。
TimeseriesClient timeseriesClient = client.asTimeseriesClient();
String tableName = "example_timeseries_table";
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
timeseriesClient.createTimeseriesTable(request);
パラメーター
CreateTimeseriesTableRequest には、次のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
timeseriesTableMeta (必須) |
|
時系列テーブルのスキーマ。 |
|
analyticalStores (オプション) |
|
カスタム分析ストア。 デフォルト値:空のリスト。 時系列テーブルの作成時に、分析ストアは最大 1 つ作成できます。 |
|
enableAnalyticalStore (オプション) |
|
デフォルトの分析ストアを作成するかどうかを指定します。 デフォルト値: |
|
lastpointIndexes (オプション) |
|
時系列テーブルとともに作成する Lastpoint インデックス。 デフォルト値:空のリスト。 時系列テーブルの作成時に、Lastpoint インデックスは最大 1 つ作成できます。 1 つの時系列テーブルには、合計で最大 10 個の Lastpoint インデックスと分析ストアを含めることができます。 |
時系列テーブルのスキーマ
timeseriesTableMeta は TimeseriesTableMeta 型で、次のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
timeseriesTableName (必須) |
|
時系列テーブル名。 インスタンス内のデータテーブルおよび時系列テーブルにおいて一意である必要があります。 |
|
timeseriesTableOptions (オプション) |
|
時系列データの TTL 設定。 このパラメーターが設定されていない場合は、デフォルト設定が使用されます。 |
|
timeseriesMetaOptions (オプション) |
|
メタデータの TTL や属性の更新設定などを含む、時系列メタデータの設定。 |
|
timeseriesKeys (オプション) |
|
カスタム時系列識別子を構成するフィールド。 最大 6 つのフィールドを指定できます。 デフォルトでは、時系列識別子はメトリクス名、データソース、およびタグで構成されます。 詳細については、「時系列識別子とデータフィールドプライマリキーのカスタマイズ」をご参照ください。 |
|
fieldPrimaryKeys (オプション) |
|
プライマリキーとして使用するデータフィールド。 最大 4 つのフィールドを指定して、同じ時系列識別子とタイムスタンプを持つ複数の行を格納できます。 詳細については、「時系列識別子とデータフィールドプライマリキーのカスタマイズ」をご参照ください。 |
時系列データの保持
timeseriesTableMeta.timeseriesTableOptions は TimeseriesTableOptions 型で、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
timeToLive (オプション) |
|
時系列データの TTL (秒単位)。 デフォルト値: |
時系列メタデータ
timeseriesTableMeta.timeseriesMetaOptions は TimeseriesMetaOptions 型で、次のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
metaTimeToLive (オプション) |
|
時系列メタデータの TTL (秒単位)。 値を |
|
allowUpdateAttributes (オプション) |
|
メタデータ属性列を更新できるかどうかを指定します。 |
データフィールドのプライマリキー
timeseriesTableMeta.fieldPrimaryKeys[] 内の各要素は PrimaryKeySchema 型で、次のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
name (必須) |
|
プライマリキーとして使用するデータフィールド名。 |
|
type (必須) |
|
データフィールドのタイプ。 有効な値: |
分析ストア
analyticalStores[] 内の各要素は TimeseriesAnalyticalStore 型で、次のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
analyticalStoreName (必須) |
|
分析ストア名。 |
|
timeToLive (オプション) |
|
分析ストアの TTL (秒単位)。 デフォルト値: |
|
syncOption (オプション) |
|
データ同期モード。 デフォルト値: |
Lastpoint インデックス
lastpointIndexes[] 内の各要素は CreateTimeseriesTableRequest.LastpointIndex 型で、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
indexName (必須) |
|
Lastpoint インデックス名。 詳細については、「Lastpoint インデックス」をご参照ください。 |
例
メタデータ TTL の設定
次の例では、時系列データの TTL を 7 日間、メタデータの TTL を 14 日間に設定し、メタデータ属性の更新を無効にします。
String tableName = "example_timeseries_table";
TimeseriesTableOptions tableOptions = new TimeseriesTableOptions(604800);
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName, tableOptions);
TimeseriesMetaOptions metaOptions = new TimeseriesMetaOptions();
metaOptions.setMetaTimeToLive(1209600);
metaOptions.setAllowUpdateAttributes(false);
tableMeta.setTimeseriesMetaOptions(metaOptions);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
timeseriesClient.createTimeseriesTable(request);
時系列識別子とデータフィールドプライマリキーのカスタマイズ
カスタム時系列識別子とデータフィールドプライマリキーには、Tablestore SDK for Java 5.17.1 以降が必要です。 最新バージョンの SDK を使用することを推奨します。 これらの機能を使用する前に、インスタンスのリージョンがそれらをサポートしていることを確認してください。
次の例では、時系列識別子として pk1 と pk2 を、データフィールドプライマリキーとして field1 と field2 を使用します。
String tableName = "example_timeseries_table";
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName);
tableMeta.addTimeseriesKey("pk1");
tableMeta.addTimeseriesKey("pk2");
tableMeta.addFieldPrimaryKey("field1", PrimaryKeyType.INTEGER);
tableMeta.addFieldPrimaryKey("field2", PrimaryKeyType.STRING);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
timeseriesClient.createTimeseriesTable(request);
Lastpoint インデックスの作成
Lastpoint インデックスには、Tablestore SDK for Java 5.17.1 以降が必要です。 最新バージョンの SDK を使用することを推奨します。 この機能を使用するには、サポートされているリージョンに時系列モデルインスタンスを作成する必要があります。 サポートされているリージョンについては、「Lastpoint インデックス」をご参照ください。
次の例では、example_lastpoint_index を時系列テーブルとともに作成します。
String tableName = "example_timeseries_table";
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
request.addLastpointIndex(
new CreateTimeseriesTableRequest.LastpointIndex("example_lastpoint_index"));
timeseriesClient.createTimeseriesTable(request);
分析ストアの作成
分析ストアは、時系列データに対してコスト効率の高いストレージと分析を提供します。 この機能を使用するには、サポートされているリージョンに時系列モデルインスタンスを作成する必要があります。 サポートされているリージョンと機能の詳細については、「分析ストア」をご参照ください。
デフォルトの分析ストア
enableAnalyticalStore を true に設定して、default_analytical_store という名前のデフォルトの分析ストアを作成します。
String tableName = "example_timeseries_table";
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
request.setEnableAnalyticalStore(true);
timeseriesClient.createTimeseriesTable(request);
カスタム分析ストア
次の例では、example_analytical_store を時系列テーブルとともに作成します。 分析ストア内のデータは期限切れにならず、完全同期が使用されます。
String tableName = "example_timeseries_table";
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
TimeseriesAnalyticalStore analyticalStore =
new TimeseriesAnalyticalStore("example_analytical_store");
analyticalStore.setTimeToLive(-1);
analyticalStore.setSyncOption(AnalyticalStoreSyncType.SYNC_TYPE_FULL);
request.setAnalyticalStores(Collections.singletonList(analyticalStore));
timeseriesClient.createTimeseriesTable(request);
関連ドキュメント
-
時系列テーブルを作成した後、テーブルに時系列データを書き込みます。
-
データを書き込んだ後、テーブルから時系列データを読み取ります。