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

Tablestore:Lifecycle management

最終更新日:Jun 22, 2026

生存時間 (TTL) は、データ保持期間を指定する多次元インデックスの属性です。Tablestore は、保持期間を超えたデータを自動的に削除し、ストレージ使用量を削減し、ストレージコストを低減します。

注意事項

ライフサイクル管理機能を使用するには、データテーブルに対する UpdateRow 書き込み操作を無効にする必要があります。

  • この要件により、データテーブルと多次元インデックス間のデータの不整合を防ぎます。

    データテーブルの TTL は属性列ごとに適用されますが、多次元インデックスの TTL は行全体に適用されます。UpdateRow 操作を使用すると、Tablestore はデータテーブルから一部の列を削除する可能性がありますが、対応する行は多次元インデックスに残るため、同期が取れなくなる原因となります。

    データを更新する必要がある場合は、代わりに PutRow 操作を使用して行全体を上書きしてください。

  • 多次元インデックスの TTL は秒単位で指定し、-1 または正の 32 ビット整数を設定できます。値 -1 は、データが永続的に保存されることを意味します。最大値は約 68 年です。

  • 多次元インデックスの TTL は、データテーブルの TTL とは独立しています。多次元インデックスの TTL 値は、データテーブルの TTL 値以下である必要があります。両方の TTL を短くする場合は、まず多次元インデックスの TTL を短くし、次にデータテーブルの TTL を短くしてください。

  • Tablestore は、期限切れのデータを多次元インデックスから毎日自動的にクリーンアップします。このクリーンアッププロセスで削除されるまで、期限切れのデータをクエリすることは可能です。

  • データテーブルと多次元インデックスの TTL を更新した後、Tablestore は次回のクリーンアップサイクルで、新たに期限切れとなったデータを削除します。

操作手順

コンソールまたは SDK を使用して、多次元インデックスの生存時間 (TTL) を設定できます。この機能を使用するには、データテーブルでの UpdateRow 操作を無効にしておく必要があります。

コンソール

  1. データテーブルの UpdateRow 書き込み操作を無効にします。

    1. データテーブルの 基本情報 タブで、ライフサイクルと最大バージョンの調整 をクリックします。

    2. ライフサイクルと最大バージョンの調整 ダイアログボックスで、いいえ[いいえ] に設定し、リスク通知のチェックボックスをオンにし、OK をクリックします。

  2. 検索インデックスの生存時間 (TTL) を設定します。

    データテーブルの UpdateRow 操作を無効にした後、新しいまたは既存の多次元インデックスに TTL を設定できます。

    新しいインデックス

    1. データテーブルのインデックス タブで、検索インデックスの作成 をクリックします。

    2. [インデックスの作成] ダイアログボックスで、インデックス名とスキーマ生成方法を設定します。

    3. 詳細設定 スイッチをオンにし、[生存時間] を設定してから、OK をクリックします。

      [生存時間]-1 に設定すると、データが期限切れになるのを防ぎます。

    既存のインデックス

    1. データテーブルの インデックス タブで、対象の多次元インデックスを見つけ、[操作] 列の インデックスの詳細 をクリックします。

    2. インデックスの詳細 ダイアログボックスで、変更 をクリックし、生存時間の値を更新してから、変更 をクリックします。

      [生存時間] の値は秒単位です。最小値は 86,400 (1 日) です。または、-1 に設定してデータが期限切れになるのを防ぐこともできます。多次元インデックスの TTL は、データテーブルの TTL を超えてはなりません。

  3. データテーブル自体のデータを期限切れにするには、その TTL を別途設定する必要があります。

    1. データテーブルの 基本情報 タブの 説明 セクションで、ライフサイクルと最大バージョンの調整 をクリックします。

    2. ライフサイクルと最大バージョンの調整 ダイアログボックスで、必要に応じて生存時間を設定し、OK をクリックします。

SDK

データライフサイクルを管理するには、Java SDK または Go SDK を使用できます。次の例では Java SDK を使用します。

  1. データテーブルでの UpdateRow 操作を禁止します。

    次のサンプルコードは、データテーブルでの UpdateRow 操作を禁止する方法の例です。

    public static void disableTableUpdate(SyncClient client) {
        UpdateTableRequest updateTableRequest = new UpdateTableRequest("<TABLE_NAME>");
        TableOptions options = new TableOptions();
        // ビジネスへの影響を防ぐため、データテーブルでの UpdateRow 操作を禁止します。
        options.setAllowUpdate(false);
        updateTableRequest.setTableOptionsForUpdate(options);
        client.updateTable(updateTableRequest);
    }
  2. 検索インデックスの TTL を指定します。

    データテーブルでの UpdateRow 操作が禁止された後、既存の多次元インデックスの TTL を指定するか、多次元インデックスを作成するときに TTL を指定できます。

    検索インデックスの作成時に TTL を指定する

    次のサンプルコードは、TTL を指定した検索インデックスを作成する方法の例を示します。この例では、検索インデックスは String 型の Col_Keyword カラムと Long 型の Col_Long カラムで構成されています。検索インデックスの TTL は 7 日間です。

    // Tablestore SDK for Java V5.12.0 以降を使用します。
    public static void createIndexWithTTL(SyncClient client) {
        int days = 7;
        CreateSearchIndexRequest createRequest = new CreateSearchIndexRequest();
        // データテーブルの名前を指定します。
        createRequest.setTableName("<TABLE_NAME>");
        // 多次元インデックスの名前を指定します。
        createRequest.setIndexName("<SEARCH_INDEX_NAME>");
        IndexSchema indexSchema = new IndexSchema();
        indexSchema.setFieldSchemas(Arrays.asList(
                // フィールドの名前と型を指定します。
                new FieldSchema("Col_Keyword", FieldType.KEYWORD), 
                new FieldSchema("Col_Long", FieldType.LONG)));
        createRequest.setIndexSchema(indexSchema);
        // 多次元インデックスの TTL を指定します。
        createRequest.setTimeToLiveInDays(days);
        // 多次元インデックスを作成します。
        client.createSearchIndex(createRequest);
    }

    既存の検索インデックスの TTL を変更する

    次のサンプルコードは、既存の検索インデックスの TTL を 7 日間にセットする方法の例です:

    // Java V5.12.0 以降の Tablestore SDK を使用します。
    public static void updateIndexWithTTL(SyncClient client) {
        int days = 7;
        UpdateSearchIndexRequest updateSearchIndexRequest = new UpdateSearchIndexRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>");
        // 検索インデックスの TTL を変更します。
        updateSearchIndexRequest.setTimeToLiveInDays(days);
        client.updateSearchIndex(updateSearchIndexRequest);
    }
  3. データテーブルの TTL は、そのデータテーブル用に作成された多次元インデックスの TTL とは独立しています。データテーブルの TTL を指定できます。

    次のサンプルコードは、データテーブルの TTL を 7 日間に設定する方法の例です。

    public static void updateTableTTL(SyncClient client) {
        int days = 7;
        UpdateTableRequest updateTableRequest = new UpdateTableRequest("<TABLE_NAME>");
        TableOptions options = new TableOptions();
        options.setTimeToLiveInDays(days);
        updateTableRequest.setTableOptionsForUpdate(options);
        client.updateTable(updateTableRequest);
    }