

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用預設存留時間 (TTL) 設定建立新的資料表
<a name="TTL-how-to-create-table"></a>

在 Amazon Keyspaces 中，您可以為建立資料表時資料表中的所有資料列設定預設 TTL 值。

資料表的預設 TTL 值為零，這表示資料不會自動過期。如果資料表的預設 TTL 值大於零，則會將過期時間戳記新增至每一列。

TTL 值以秒為單位設定，最大可設定值為 630，720，000 秒，相當於 20 年。

建立資料表後，您可以使用 CQL DML 陳述式覆寫特定資料列或資料欄的資料表預設 TTL 設定。如需詳細資訊，請參閱[使用 `INSERT`陳述式來設定新資料列的自訂存留時間 (TTL) 值](TTL-how-to-insert-cql.md)及[使用 `UPDATE`陳述式來編輯資料列和資料欄的自訂存留時間 (TTL) 設定](TTL-how-to-update-cql.md)。

當您在資料表上啟用 TTL 時，Amazon Keyspaces 會開始儲存每個資料列的其他 TTL 相關中繼資料。此外，TTL 會使用過期時間戳記來追蹤資料列或資料欄何時過期。時間戳記會儲存為資料列中繼資料，並造成資料列的儲存成本。

 啟用 TTL 功能之後，您就無法停用資料表的 TTL 功能。將資料表`default_time_to_live`設為 0 會停用新資料的預設過期時間，但不會停用 TTL 功能，或將資料表還原為原始 Amazon Keyspaces 儲存中繼資料或寫入行為。

下列範例示範如何使用預設 TTL 值建立新的資料表。

------
#### [ Console ]

**使用主控台建立具有存留時間預設值的新資料表。**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) 開啟 Amazon Keyspaces 主控台。

1. 在導覽窗格中，選擇 **Tables** (資料表)，然後選擇 **Create table** (建立資料表)。

1. 在**資料表詳細資訊區段的建立**資料表頁面上，選取金鑰空間，並提供新資料表的名稱。 ****

1. 在**結構描述**區段中，建立資料表的結構描述。

1. 在**資料表設定**區段中，選擇**自訂設定**。

1. 繼續執行**存留時間 (TTL)**。

   在此步驟中，您會選取資料表的預設 TTL 設定。

   針對**預設 TTL 期間**，輸入過期時間，然後選擇您輸入的時間單位，例如秒、天或年。Amazon Keyspaces 會以秒為單位存放值。

1. 選擇 **Create Table** (建立資料表)。您的資料表會以指定的預設 TTL 值建立。

------
#### [ Cassandra Query Language (CQL) ]

**使用 CQL 建立具有預設 TTL 值的新資料表**

1. 下列陳述式會建立新的資料表，並將預設 TTL 值設為 3，024，000 秒，代表 35 天。

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

1. 若要確認新資料表的 TTL 設定，請使用 `cqlsh``DESCRIBE`陳述式，如下列範例所示。輸出會將資料表的預設 TTL 設定顯示為 `default_time_to_live`。

   ```
   DESC TABLE my_table;
   ```

   ```
   CREATE TABLE my_keyspace.my_table (
       userid uuid,
       time timeuuid,
       body text,
       subject text,
       user inet,
       PRIMARY KEY (userid, time)
   ) WITH CLUSTERING ORDER BY (time ASC)
       AND bloom_filter_fp_chance = 0.01
       AND caching = {'class': 'com.amazonaws.cassandra.DefaultCaching'}
       AND comment = ''
       AND compaction = {'class': 'com.amazonaws.cassandra.DefaultCompaction'}
       AND compression = {'class': 'com.amazonaws.cassandra.DefaultCompression'}
       AND crc_check_chance = 1.0
       AND dclocal_read_repair_chance = 0.0
       AND default_time_to_live = 3024000
       AND gc_grace_seconds = 7776000
       AND max_index_interval = 2048
       AND memtable_flush_period_in_ms = 3600000
       AND min_index_interval = 128
       AND read_repair_chance = 0.0
       AND speculative_retry = '99PERCENTILE';
   ```

------
#### [ CLI ]

**使用 建立具有預設 TTL 值的新資料表 AWS CLI**

1. 您可以使用下列命令來建立新的資料表，並將預設 TTL 值設為一年。

   ```
   aws keyspaces create-table --keyspace-name 'myKeyspace' --table-name 'myTable' \
               --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' \
               --default-time-to-live '31536000'
   ```

1. 若要確認資料表的 TTL 狀態，您可以使用下列命令。

   ```
   aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'
   ```

   命令的輸出看起來與下列範例類似

   ```
   {
       "keyspaceName": "myKeyspace",
       "tableName": "myTable",
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/myKeyspace/table/myTable",
       "creationTimestamp": "2024-09-02T10:52:22.190000+00:00",
       "status": "ACTIVE",
       "schemaDefinition": {
           "allColumns": [
               {
                   "name": "id",
                   "type": "int"
               },
               {
                   "name": "date",
                   "type": "timestamp"
               },
               {
                   "name": "name",
                   "type": "text"
               }
           ],
           "partitionKeys": [
               {
                   "name": "id"
               }
           ],
           "clusteringKeys": [],
           "staticColumns": []
       },
       "capacitySpecification": {
           "throughputMode": "PAY_PER_REQUEST",
           "lastUpdateToPayPerRequestTimestamp": "2024-09-02T10:52:22.190000+00:00"
       },
       "encryptionSpecification": {
           "type": "AWS_OWNED_KMS_KEY"
       },
       "pointInTimeRecovery": {
           "status": "DISABLED"
       },
       "ttl": {
           "status": "ENABLED"
       },
       "defaultTimeToLive": 31536000,
       "comment": {
           "message": ""
       },
       "replicaSpecifications": []
   }
   ```

------