Time to Live (TTL) を使用してデータの有効期限が切れる方法 - Amazon Keyspaces (Apache Cassandra 向け)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Time to Live (TTL) を使用してデータの有効期限が切れる方法

Amazon Keyspaces (Apache Cassandra 向け) コンソールまたは CQL を使用して、有効期限 (TTL、Time to Live) 設定を有効化、更新、および無効化することができます。

デフォルトの有効期限 (TTL) 設定を有効にして新しいテーブルを作成するには (コンソール)

次の手順に従って、Amazon Keyspaces コンソールを使用し、有効期限設定が有効になっている新規テーブルを作成します。

  1. にサインインし AWS Management Console、https://console.aws.amazon.com/keyspaces/home で Amazon Keyspaces コンソールを開きます。

  2. ナビゲーションペインで [Tables] (テーブル) を選択して、[Create table (テーブルの作成)] を選択します。

  3. [Table details (テーブルの詳細)] セクションの [Create table (テーブルの作成)] ページで、キースペースを選択し、新しいテーブルに名前を付けます。

  4. [Schema (スキーマ)] セクションで、テーブルのスキーマを作成します。

  5. [Table settings (テーブルの設定)] セクションで、[Customize settings (設定のカスタマイズ)] を選択します。

  6. 有効期限 (TTL) に進みます。

    このステップでは、テーブルのデフォルトの TTL 設定を選択します。

    [Default TTL period] (デフォルト TTL 期間) で、有効期限を入力し、入力したの時間の単位 (秒、日、年など) を選択します。Amazon Keyspaces では、値が秒単位で保存されます。

  7. [Create table (テーブルの作成)] を選択します。テーブルは、指定したデフォルトの TTL 値で作成されます。

注記

CQL エディタのデータ操作言語 (DML) を使用して、特定の行または列に対して、そのテーブルのデフォルト TTL 設定をオーバーライドすることができます。

既存のテーブルでデフォルト有効期限 (TTL) 設定を更新するには (コンソール)

次のステップに従い、Amazon Keyspaces コンソールを使用して、既存のテーブルの有効期限 (TTL) 設定を更新します。

  1. にサインインし AWS Management Console、https://console.aws.amazon.com/keyspaces/home で Amazon Keyspaces コンソールを開きます。

  2. 更新するテーブルを選択し、次に [Additional settings (追加設定)] タブを選択します。

  3. [有効期限 (TTL)] に進み、[編集] を選択します。

  4. [Default TTL period] (デフォルト TTL 期間) で、有効期限を入力し、入力したの時間の単位 (秒、日、年など) を選択します。Amazon Keyspaces では、値が秒単位で保存されます。これによって既存の行の TTL 値が変更されることはありません。

  5. TTL 設定が定義されたら、[Save changes] (変更を保存) を選択します。

既存のテーブルのデフォルト有効期限 (TTL) 設定を無効にするには (コンソール)

次のステップに従い、Amazon Keyspaces の AWS Management Consoleを使用して既存のテーブルの有効期限 (TTL) 設定を無効にします。

  1. にサインインし AWS Management Console、https://console.aws.amazon.com/keyspaces/home で Amazon Keyspaces コンソールを開きます。

  2. 更新するテーブルを選択し、次に [Additional settings (追加設定)] タブを選択します。

  3. [有効期限 (TTL)] に進み、[編集] を選択します。

  4. [Default TTL Period] (デフォルトの TTL 期間) を選択して、値を 0 (ゼロ) に設定します。これにより、その後のデータではテーブルの TTL がデフォルトで無効になります。既存の行の TTL 値は変更されません。

  5. TTL 設定が定義されたら、[Save changes] (変更を保存) を選択します。

CQL を使用してデフォルトの有効期限 (TTL) 設定で新しいテーブルを作成するには

デフォルトの TTL 値が 3,024,000 秒 (35 日間) に設定されている新しいテーブルを作成する場合は TTL を有効にします。

CREATE TABLE my_table ( userid uuid, time timeuuid, subject text, body text, user inet, PRIMARY KEY (userid, time) ) WITH default_time_to_live = 3024000;

新しいテーブルの TTL 設定を確認するには、次の例に示すように、cqlsh describe ステートメントを使用します。出力では、テーブルのデフォルト TTL 設定が default_time_to_live として表示されます。

describe my_table;

ALTER TABLE を使用して CQL でデフォルトの有効期限 (TTL) 設定を編集するには

既存のテーブルの TTL 設定を 2,592,000 秒 (30 日間) に更新します。

ALTER TABLE my_table WITH default_time_to_live = 2592000;

更新されたテーブルの TTL 設定を確認するには、次の例に示すように、cqlsh describe ステートメントを使用します。出力では、テーブルのデフォルト TTL 設定が default_time_to_live として表示されます。

describe my_table;

カスタムプロパティを使用して新しいテーブルの有効期限 (TTL) を有効にする方法

テーブル全体の TTL デフォルト設定を有効にしないで行と列に適用できる有効期限 (TTL) カスタム設定を有効にするには、次の CQL ステートメントを使用します。

CREATE TABLE my_keyspace.my_table (id int primary key) WITH CUSTOM_PROPERTIES={'ttl':{'status': 'enabled'}};

ttl を有効にした後、そのテーブルに対してそれを無効にすることはできません。

カスタムプロパティを使用して既存のテーブルの有効期限 (TTL) を有効にする方法

テーブル全体の TTL デフォルト設定を有効にしないで行と列に適用できる有効期限 (TTL) カスタム設定を有効にするには、次の CQL ステートメントを使用します。

ALTER TABLE my_table WITH CUSTOM_PROPERTIES={'ttl':{'status': 'enabled'}};

ttl を有効にした後、そのテーブルに対してそれを無効にすることはできません。

INSERT を使用して CQL でカスタムの有効期限 (TTL) 設定を編集するには

次の CQL ステートメントでは、テーブルにデータの行が挿入され、デフォルトの TTL 設定が 259,200 秒 (3 日間に相当) に変更されます。

INSERT INTO my_table (userid, time, subject, body, user) VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello','205.212.123.123') USING TTL 259200;

挿入された行の TTL 設定を確認するには、次のステートメントを使用します。

SELECT TTL (subject) from my_table;

UPDATE を使用して CQL でカスタムの有効期限 (TTL) 設定を編集するには

以前に挿入された「件名」列の TTL 設定を 259,200 秒 (3 日間) から 86,400 秒 (1 日間) に変更するには、次のステートメントを使用します。

UPDATE my_table USING TTL 86400 set subject = 'Updated Message' WHERE userid = B79CB3BA-745E-5D9A-8903-4A02327A7E09 and time = 96a29100-5e25-11ec-90d7-b5d91eceda0a;

簡単な選択クエリを実行すると、有効期限が切れる前に更新されたレコードを確認できます。

SELECT * from my_table;

クエリには次の出力が表示されます。

userid | time | body | subject | user --------------------------------------+--------------------------------------+-------+-----------------+----------------- b79cb3ba-745e-5d9a-8903-4a02327a7e09 | 96a29100-5e25-11ec-90d7-b5d91eceda0a | Hello | Updated Message | 205.212.123.123 50554d6e-29bb-11e5-b345-feff819cdc9f | cf03fb21-59b5-11ec-b371-dff626ab9620 | Hello | Message | 205.212.123.123

有効期限が正常に終了したことを確認するには、設定した有効期限が切れた後に同じクエリをもう一度実行します。

SELECT * from my_table;

このクエリでは、「件名」列の有効期限が切れた後に次の出力が表示されます。

userid | time | body | subject | user --------------------------------------+--------------------------------------+-------+---------+----------------- b79cb3ba-745e-5d9a-8903-4a02327a7e09 | 96a29100-5e25-11ec-90d7-b5d91eceda0a | Hello | null | 205.212.123.123 50554d6e-29bb-11e5-b345-feff819cdc9f | cf03fb21-59b5-11ec-b371-dff626ab9620 | Hello | Message | 205.212.123.123