すべてのプロダクト
Search
ドキュメントセンター

Tablestore:多次元インデックスの TTL の設定

最終更新日:Jul 25, 2026

Tablestore SDK for Java を使用して、多次元インデックスの生存時間 (TTL) を設定します。Tablestore は、保持期間が過ぎたインデックスデータを自動的に削除します。

前提条件

開始する前に、以下が準備できていることを確認してください。

  • Tablestore SDK for Java 5.12.0 以降がインストールされ、クライアントが初期化されていること

  • データバージョンが最大 1 つの既存のテーブルがあること

注意事項

  • 多次元インデックスのライフサイクル管理を使用する前に、テーブルと多次元インデックス間のデータ不整合を防ぐため、テーブルでの UpdateRow 操作を無効にしてください。

    テーブルの TTL は個々の属性列に適用されますが、多次元インデックスの TTL は行全体に適用されます。UpdateRow を使用すると、TTL のクリーンアップによってテーブルの一部の列のみが削除され、多次元インデックスには行全体が保持される場合があります。

    データを更新するには、PutRow を使用して行全体を上書きしてください。

  • 多次元インデックスの TTL は秒単位で測定され、-1 または正の 32 ビット整数を受け入れます。値が -1 の場合、データは永続的に保存されます。正の最大値は、約 68 年の保持期間に相当します。

  • 多次元インデックスの TTL とテーブルの TTL は独立して設定されますが、多次元インデックスの TTL はテーブルの TTL 以下である必要があります。ターゲットの多次元インデックスの TTL が現在のテーブルの TTL よりも大きい場合は、まずテーブルの TTL を増やしてください。両方の TTL を減らす場合は、まず多次元インデックスの TTL を減らしてください。

  • Tablestore は、期限切れの多次元インデックスデータを 1 日 1 回削除します。次回のクリーンアップが完了するまで、クエリはまだ削除されていない期限切れのデータを返す可能性があります。

  • テーブルまたは多次元インデックスの TTL を更新した後、Tablestore はその変更によって有効期限が切れたデータを、次のクリーンアップサイクル中に削除します。

操作手順

ライフサイクル管理は、テーブルの UpdateRow 更新の無効化、多次元インデックスの TTL の設定、およびオプションでテーブルの TTL の設定で構成されます。テーブルの TTL の設定は、必ずしも最後の操作ではありません。操作の順序は、多次元インデックスの TTL がテーブルの TTL 以下になるようにする必要があります。ターゲットの多次元インデックスの TTL が現在のテーブルの TTL よりも大きい場合は、まずテーブルの TTL を増やしてください。両方の TTL を減らす場合は、まず多次元インデックスの TTL を減らしてください。

  1. UpdateRow によるテーブルの更新を無効にします。

    次の例では、UpdateRowexample_table に対する更新を無効にします。

    String tableName = "example_table";
    UpdateTableRequest request = new UpdateTableRequest(tableName);
    TableOptions tableOptions = new TableOptions();
    tableOptions.setAllowUpdate(false);
    request.setTableOptionsForUpdate(tableOptions);
    
    client.updateTable(request);
  2. 検索インデックスの TTL を設定します。

    検索インデックスの有無に応じてオプションを選択します。

    新しいインデックス

    検索インデックスを作成する際に、7 日間の TTL を設定します。

    String tableName = "example_table";
    String indexName = "example_index";
    IndexSchema indexSchema = new IndexSchema();
    indexSchema.setFieldSchemas(Arrays.asList(
            new FieldSchema("category", FieldType.KEYWORD),
            new FieldSchema("price", FieldType.LONG)));
    
    CreateSearchIndexRequest request = new CreateSearchIndexRequest();
    request.setTableName(tableName);
    request.setIndexName(indexName);
    request.setIndexSchema(indexSchema);
    request.setTimeToLiveInDays(7);
    
    client.createSearchIndex(request);

    既存のインデックス

    既存の多次元インデックスの TTL を 7 日間に更新します。

    String tableName = "example_table";
    String indexName = "example_index";
    UpdateSearchIndexRequest request =
            new UpdateSearchIndexRequest(tableName, indexName);
    request.setTimeToLiveInDays(7);
    
    client.updateSearchIndex(request);
  3. 必要に応じて、テーブルの TTL を設定します。

    次の例では、example_table の TTL を 7 日間に設定します。この操作は、前述の TTL の制約に基づいて、多次元インデックスの TTL を設定する前または後に実行してください。

    String tableName = "example_table";
    UpdateTableRequest request = new UpdateTableRequest(tableName);
    TableOptions tableOptions = new TableOptions();
    tableOptions.setTimeToLiveInDays(7);
    request.setTableOptionsForUpdate(tableOptions);
    
    client.updateTable(request);

設定後、テーブル情報多次元インデックス情報をクエリして、両方の TTL を確認します。