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

Tablestore:データバージョンと TTL

最終更新日:Mar 19, 2025

データバージョンと Time To Live(TTL)を使用して、データを効率的に管理し、ストレージの使用量とストレージコストを最小限に抑えることができます。

バージョンの最大数

バージョンの最大数の値は、属性列のデータに対して保持できるバージョンの最大数を指定します。属性列のデータのバージョン数がバージョンの最大数を超えると、システムは非同期モードで以前のバージョンのデータを自動的に削除します。

重要

Tablestore は、バージョンの最大数に制限を設けていません。ただし、最適なパフォーマンスと使いやすさを実現するために、バージョンの最大数を 500 以下の値に設定することをお勧めします。

データテーブルを作成するときにバージョンの最大数を指定しない場合、デフォルト値の 1 が使用されます。属性列のデータに対して、バージョンの最大数のカスタム値を指定することもできます。データテーブルを作成した後、UpdateTable 操作を呼び出して、データテーブルのバージョンの最大数を変更できます。

バージョン数が指定したバージョンの最大数を超えると、以前のバージョンのデータは無効になり、Tablestore によってデータが削除されていない場合でも、データを読み取ることができなくなります。

  • バージョンの最大数を減らすと、データのバージョン数がバージョンの最大数の新しい値を超えた場合、Tablestore は非同期的に以前のバージョンのデータを削除します。

  • バージョンの最大数を増やすと、Tablestore がそのバージョンのデータを削除しておらず、そのバージョンが新しいバージョン範囲内にある場合、特定のバージョンのデータを読み取ることができます。

バージョン番号

データテーブルのバージョンの最大数を構成した後、属性列の値を更新するたびに、Tablestore はその値の新しいバージョンを生成します。バージョン番号はミリ秒単位のタイムスタンプです。

属性列にデータを書き込むときに、バージョン番号を指定できます。バージョン番号を指定しない場合、Tablestore は自動的にバージョン番号を生成します。バージョン番号はミリ秒単位のタイムスタンプです。バージョン番号を TTL 値と比較したり、最大バージョンオフセットを計算したりする場合は、バージョン番号を 1,000 で割る必要があります。

  • デフォルトでは、Tablestore によって生成されるバージョン番号は現在のタイムスタンプです。これは、1970 年 1 月 1 日 00:00:00 UTC から経過したミリ秒数です。

  • 属性列のバージョン番号を指定する場合は、バージョン番号がミリ秒単位で正確な 64 ビットのタイムスタンプであり、有効なバージョン範囲内にあることを確認してください。

バージョン番号を使用して、次の機能を実装できます。

  • TTL

    データテーブルの属性列値の TTL をバージョン番号に基づいて指定できます。属性列の特定のバージョンのデータが TTL 値を超える期間保持されると、Tablestore は非同期モードで特定のバージョンのデータを自動的に削除します。

    たとえば、属性列のデータのバージョン番号が 1468944000000 であるとします。これは、2016 年 7 月 20 日 00:00:00 UTC + 08:00 に相当します。TTL の値を 86,400 秒(1 日)に設定すると、このバージョンのデータは 2016 年 7 月 21 日 00:00:00 UTC + 08:00 に期限切れになります。Tablestore は、データの期限が切れると、非同期モードでデータを自動的に削除します。

  • Tablestore が各属性列から読み取るバージョンの最大数またはバージョン番号の範囲

    Tablestore がデータの行を読み取るときに、Tablestore が各属性列から読み取るバージョンの最大数またはバージョン番号の範囲を指定できます。詳細については、「データの読み取り」をご参照ください。

TTL

TTL は、データテーブルのデータの有効期間を秒単位で指定します。属性列の特定のバージョンのデータが TTL 値を超える期間保持されると、Tablestore は属性列から特定のバージョンのデータを非同期モードで自動的に削除します。行のすべての属性列のデータが TTL 値を超える期間保持されると、Tablestore は行を非同期モードで自動的に削除します。

たとえば、データテーブルのデータの TTL を 86,400 秒(1 日)に設定したとします。2016 年 7 月 21 日 00:00:00 UTC + 08:00 に、バージョン番号が 1468944000000 より小さいデータは期限切れになります。バージョン番号 1468944000000 は、1,000 で割って秒に変換すると、2016 年 7 月 20 日 00:00:00 UTC + 08:00 に相当します。Tablestore は、期限切れのデータを非同期モードで自動的に削除します。

データテーブルを作成するときに TTL の値を指定しない場合、デフォルト値の -1 が使用されます。値 -1 は、データテーブルのデータが期限切れにならないことを示します。カスタム TTL 値を指定することもできます。データテーブルを作成した後、UpdateTable 操作を呼び出して、データテーブルのデータの TTL 値を変更できます。

データが TTL 値を超える期間保持されると、データは無効になり、Tablestore によってデータが削除されていない場合でも、データを読み取ることができなくなります。

重要

データテーブルの TTL は、データテーブルに対して作成されたセカンダリインデックスの TTL とは独立しており、セカンダリインデックスの TTL 以上である必要があります。データテーブルにセカンダリインデックスが作成されていて、データテーブルの TTL を変更する場合は、実際の状況に基づいて操作を実行します。

  • データテーブルの新しい TTL がセカンダリインデックスの TTL より小さい場合は、SDK を使用して UpdateTable 操作を呼び出し、セカンダリインデックスの TTL をデータテーブルの新しい TTL 以下の値に変更してから、データテーブルの TTL を新しい値に変更します。

  • データテーブルの新しい TTL がセカンダリインデックスの TTL 以上である場合は、データテーブルの TTL を新しい値に変更します。

  • TTL 値を減らすと、Tablestore は新しい TTL 値を超える期間保持されているデータを非同期的に削除します。

  • TTL 値を増やすと、Tablestore がデータを削除しておらず、そのバージョンのデータが新しい TTL 値以内の期間保持されている場合、特定のバージョンのデータを読み取ることができます。

最大バージョンオフセット

現在時刻と指定したバージョンのタイムスタンプの差が、データテーブルに指定した TTL 値を超えると、書き込まれたデータはすぐに期限切れになります。この問題を解決するために、Tablestore では最大バージョンオフセットを構成できます。

最大バージョンオフセットは、現在のシステム時刻と指定されたバージョン番号の最大差を秒単位で指定します。最大バージョンオフセットの値は、1970 年 1 月 1 日 00:00:00 UTC から経過した秒数よりも大きい正の整数です。

属性列にデータを書き込むと、Tablestore はデータのバージョン番号を確認します。属性列のデータの有効なバージョン範囲は、次の式を使用して計算されます。有効なバージョン範囲 = [max{データ書き込み時刻 - 最大バージョンオフセット, データ書き込み時刻 - TTL 値}, データ書き込み時刻 + 最大バージョンオフセット)。データのバージョン番号(1,000 で割って秒に変換)が有効なバージョン範囲内にある場合にのみ、属性列にデータを書き込むことができます。

たとえば、データテーブルの各属性列のデータの最大バージョンオフセットを 86,400 秒(1 日)に設定したとします。2016 年 7 月 21 日 00:00:00 UTC には、バージョン範囲が 1468944000000(2016 年 7 月 20 日 00:00:00 UTC + 08:00)から 1469116800000(2016 年 7 月 22 日 00:00:00 UTC + 08:00)の間のデータのみを書き込むことができます。属性列のデータのバージョン番号が 1468943999000(2016 年 7 月 19 日 23:59:59 UTC + 08:00)であるデータ行を書き込もうとすると、行の書き込みは失敗します。

データテーブルを作成するときに最大バージョンオフセットの値を指定しない場合、デフォルト値の 86400 が使用されます。データテーブルのデータのカスタム最大バージョンオフセットを指定することもできます。データテーブルを作成した後、UpdateTable 操作を呼び出して、データテーブルのデータの最大バージョンオフセットを変更できます。

使用方法

データテーブルを作成するときに、バージョンの最大数や TTL などのパラメータを構成できます。データテーブルを作成した後に、バージョンの最大数や TTL などのパラメータを変更することもできます。このセクションでは、データテーブルの作成後にデータテーブルの構成を変更する方法について説明します。

説明

データテーブルを作成するときにデータバージョンと TTL を構成する方法の詳細については、「テーブルに対する操作」をご参照ください。

Tablestore コンソールの使用

Tablestore コンソールで、データテーブルのバージョンの最大数、TTL、および最大バージョンオフセットを変更できます。

  1. Tablestore コンソール にログインします。

  2. [概要] ページで、管理するインスタンスを見つけ、[アクション] 列の [インスタンスの管理] をクリックします。

  3. [インスタンスの詳細] タブの [テーブル] セクションで、管理するデータテーブルの名前をクリックします。

  4. [基本情報] タブの [説明] セクションで、[属性の変更] をクリックします。

  5. [属性の変更] ダイアログボックスで、次の表の説明に従ってパラメータを変更します。

    パラメータ

    説明

    Time To Live

    データテーブルのデータの保持期間。保持期間が TTL 値を超えると、Tablestore は期限切れのデータを自動的に削除します。単位:秒。

    このパラメータの値は、-1、または 86400(1 日)以上である必要があります。値 -1 は、データが期限切れにならないことを指定します。

    重要

    データテーブルのインデックスを作成するには、データテーブルの TTL が次のいずれかの条件を満たしていることを確認してください。

    • データテーブルの TTL が -1 に設定されている。これは、データテーブルのデータが期限切れにならないことを示します。

    • データテーブルの TTL が -1 以外の値に設定されており、データテーブルの更新操作が禁止されている。

      データテーブルのインデックスをすでに作成している場合は、TTL を変更する前に、[更新を許可] パラメータを [いいえ] に設定する必要があります。

    バージョンの最大数

    データテーブルの属性列のデータに対して保持できるバージョンの最大数。属性列のデータのバージョン数がこのパラメータの値を超えると、システムは以前のバージョンのデータを削除します。

    このパラメータの値は正の整数である必要があります。

    重要

    データテーブルのインデックスを作成するには、このパラメータの値がデータテーブルに対して 1 に設定されていることを確認してください。データテーブルのインデックスをすでに作成している場合は、このパラメータの値を変更することはできません。

    最大バージョンオフセット

    現在のシステム時刻と指定されたデータバージョンの最大差。単位:秒。最大バージョンオフセットの値は、1970 年 1 月 1 日 00:00:00 UTC から経過した秒数よりも大きい正の整数です。

    バージョン番号とデータが書き込まれた時刻の差は、最大バージョンオフセット以下である必要があります。そうでない場合、データの書き込み時にエラーが発生します。

    属性列のデータの有効なバージョン範囲は、次の式を使用して計算されます。有効なバージョン範囲 = [max{データ書き込み時刻 - 最大バージョンオフセット, データ書き込み時刻 - TTL 値}, データ書き込み時刻 + 最大バージョンオフセット)

    更新を許可

    UpdateRow 操作を呼び出してデータの書き込みを許可するかどうかを指定します。デフォルト値:[はい]

    データテーブルのインデックスをすでに作成している場合は、TTL を変更する前に、[更新を許可] パラメータを [いいえ] に設定する必要があります。

    重要

    検索インデックスの TTL 機能を使用する場合は、このパラメータを [いいえ] に設定する必要があります。詳細については、「検索インデックスの TTL」をご参照ください。

  6. [OK] をクリックします。

Tablestore CLI の使用

Tablestore CLI を使用して、データテーブルの構成を変更できます。

alter コマンドを実行して、データテーブルのバージョンの最大数または TTL の値を変更します。詳細については、「テーブルの更新」をご参照ください。

次のサンプルコマンドは、mytable テーブルの TTL を 86400 秒(1 日)に、バージョンの最大数を 1 に変更します。

alter -t mytable --ttl 86400 --version 1

Tablestore SDK の使用

Tablestore Java SDKGo SDKPython SDKNode.js SDK.NET SDKPHP SDK を使用して、データテーブルのバージョンの最大数、TTL、最大バージョンオフセットなどのパラメータを変更できます。次の例では、Tablestore Java SDK を使用します。

次のサンプルコードは、データテーブルのバージョンの最大数を 5 に、TTL を -1 に、最大バージョンオフセットを 86400 に変更します。

private static void updateTable(SyncClient client) {
    // TTL を指定します。値 -1 は、データが期限切れにならないことを指定します。単位:秒。
    int timeToLive = -1;
    // バージョンの最大数を 5 に更新します。
    int maxVersions = 5; 
    // 最大バージョンオフセットを 86400 に更新します。単位:秒。
    int maxTimeDeviation=86400;
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions,maxTimeDeviation);
    // テーブルの名前を指定します。
    UpdateTableRequest request = new UpdateTableRequest("<TABLE_NAME>");
    request.setTableOptionsForUpdate(tableOptions);
    client.updateTable(request);
}

課金

  • バージョンの最大数機能を使用する場合、バージョン番号とさまざまなバージョン番号を持つデータのストレージ使用量に対して課金されます。

  • TTL を構成してデータを削除する場合、Tablestore によって実行される削除操作に対して課金されません。TTL 機能を有効にすると、Tablestore は各属性列にタイムスタンプをバージョン番号として追加します。バージョン番号とさまざまなバージョン番号を持つデータのストレージ使用量に対して課金されます。

詳細については、「ストレージの使用量」をご参照ください。

FAQ