資料表 - Amazon Keyspaces (適用於 Apache Cassandra)

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

資料表

資料表是 Amazon Keyspaces 中的主要資料結構。資料表中的資料會組織成資料列和資料欄。這些資料欄的子集用於透過分割區索引鍵的規格來判斷分割區 (最終是資料放置)。

另一組資料欄可以定義成叢集資料欄,這表示他們可以參與查詢執行中的述詞。

根據預設,系統會建立具有隨需輸送量容量的新資料表。您可以變更新資料表和現有資料表的容量模式。如需讀取/寫入容量輸送量模式的詳細資訊,請參閱在 Amazon Keyspaces 中設定讀取/寫入容量模式

對於佈建模式中的資料表,您可以設定選用的 AUTOSCALING_SETTINGS。如需 Amazon Keyspaces 自動擴展和可用選項的詳細資訊,請參閱在現有資料表上設定自動擴展

如需 Amazon Keyspaces 資料表配額限制和限制的相關資訊,請參閱 Amazon Keyspaces 配額 (適用於 Apache Cassandra)

CREATE TABLE

使用 CREATE TABLE陳述式來建立新的資料表。

語法

create_table_statement ::= CREATE TABLE [ IF NOT EXISTS ] table_name '(' column_definition ( ',' column_definition )* [ ',' PRIMARY KEY '(' primary_key ')' ] ')' [ WITH table_options ] column_definition ::= column_name cql_type [ FROZEN ][ STATIC ][ PRIMARY KEY] primary_key ::= partition_key [ ',' clustering_columns ] partition_key ::= column_name | '(' column_name ( ',' column_name )* ')' clustering_columns ::= column_name ( ',' column_name )* table_options ::= [table_options] | CLUSTERING ORDER BY '(' clustering_order ')' [ AND table_options ] | options | CUSTOM_PROPERTIES | AUTOSCALING_SETTINGS | default_time_to_live | TAGS clustering_order ::= column_name (ASC | DESC) ( ',' column_name (ASC | DESC) )*

其中:

  • table_name 是要建立的資料表名稱。完整名稱包含金鑰空間字首。或者,您可以使用 keyspace 陳述式設定目前的 USE keyspace。

  • column_definition 包含下列項目:

    • column_name – 資料欄的名稱。

    • cql_type – Amazon Keyspaces 資料類型 (請參閱 資料類型)。

    • FROZEN – 將使用者定義或類型 collection(例如 LISTSETMAP) 的此欄指定為凍結。凍結集合會序列化為單一不可變值,並視為 BLOB。如需詳細資訊,請參閱集合類型

    • STATIC – 將此欄指定為靜態。靜態資料欄會存放相同分割區中所有資料列共用的值。

    • PRIMARY KEY – 將此欄指定為資料表的主要索引鍵。

  • primary_key 包含下列項目:

    • partition_key

    • clustering_columns

  • partition_key:

    • 分割區索引鍵可以是單一資料欄,也可以是由兩個或多個資料欄組成的複合值。主金鑰的分割區金鑰部分是必要的,並決定 Amazon Keyspaces 如何存放您的資料。

  • clustering_columns:

    • 主索引鍵的選用叢集資料欄部分決定如何在每個分割區中叢集和排序資料。

  • table_options 包含下列項目:

    • CLUSTERING ORDER BY – 資料表上的預設 CLUSTERING ORDER 由 ASC(遞增) 排序方向的叢集索引鍵組成。指定它來覆寫預設排序行為。

    • CUSTOM_PROPERTIES – Amazon Keyspaces 特有的設定映射。

      • capacity_mode:指定資料表的讀取/寫入輸送量模式。選項包括 throughput_mode:PAY_PER_REQUESTthroughput_mode:PROVISIONED. 佈建的容量模式需要 read_capacity_unitswrite_capacity_units做為輸入。預設值為 throughput_mode:PAY_PER_REQUEST

      • client_side_timestamps:指定資料表的用戶端時間戳記是啟用或停用。選項包括 {'status': 'enabled'}{'status': 'disabled'}. 如果未指定,則預設值為 status:disabled。為資料表啟用用戶端時間戳記後,無法停用此設定。

      • encryption_specification:指定靜態加密的加密選項。如果未指定,則預設值為 encryption_type:AWS_OWNED_KMS_KEY。加密選項客戶受管金鑰需要 Amazon Resource Name (ARN) 格式的 AWS KMS 金鑰做為輸入:kms_key_identifier:ARNkms_key_identifier:ARN

      • point_in_time_recovery:指定資料表的point-in-time還原是啟用或停用。選項包括 status:enabledstatus:disabled. 如果未指定,則預設值為 status:disabled

      • replica_updates:指定 特有的多區域資料表設定 AWS 區域。對於多區域資料表,您可以為每個 以不同的方式設定資料表的讀取容量 AWS 區域。您可以設定下列參數來執行此操作。如需詳細資訊和範例,請參閱 在佈建模式下建立多區域資料表,並在 Amazon Keyspaces 中自動擴展

        • region – 具有下列設定的資料表複本 AWS 區域 的 :

          • read_capacity_units

      • TTL:啟用資料表的存留時間自訂設定。若要啟用,請使用 status:enabled。預設值為 status:disabledTTL 啟用 之後,您就無法針對資料表停用它。

    • AUTOSCALING_SETTINGS 包含下列佈建模式中資料表的選用設定。如需詳細資訊和範例,請參閱 使用自動擴展建立新的資料表

      • provisioned_write_capacity_autoscaling_update:

        • autoscaling_disabled – 若要啟用寫入容量的自動擴展,請將 值設定為 false。預設值為 true。(選用)

        • minimum_units – 資料表應隨時準備好支援的寫入輸送量最低層級。該值必須介於 1 到 帳戶每秒最大輸送量配額之間 (預設為 40,000)。

        • maximum_units – 資料表應隨時準備好支援的寫入輸送量上限。該值必須介於 1 到 帳戶每秒最大輸送量配額之間 (預設為 40,000)。

        • scaling_policy – Amazon Keyspaces 支援目標追蹤政策。自動擴展目標是資料表的佈建寫入容量。

          • target_tracking_scaling_policy_configuration – 若要定義目標追蹤政策,您必須定義目標值。如需目標追蹤和冷卻期間的詳細資訊,請參閱《Application Auto Scaling Scaling 使用者指南》中的目標追蹤擴展政策

            • target_value – 資料表的目標使用率。Amazon Keyspaces 自動擴展可確保已佈建容量與已佈建容量的耗用容量比率保持等於或接近此值。您能以百分比的形式定義 target_value。介於 20 到 90 之間的兩倍。(必要)

            • scale_in_cooldown – 擴展活動之間的冷卻時間,以秒為單位,可讓資料表在活動中的另一個擴展開始之前穩定。如果未提供值,則預設值為 0。(選用)

            • scale_out_cooldown – 擴展活動之間的冷卻時間,以秒為單位,可讓資料表在另一個橫向擴展活動開始之前穩定。如果未提供值,則預設值為 0。(選用)

            • disable_scale_inboolean指定資料表scale-in是否已停用或已啟用的 。此參數預設為停用。若要開啟 scale-in,請將 boolean值設定為 FALSE。這表示會自動為您縮減資料表的容量。(選用)

      • provisioned_read_capacity_autoscaling_update:

        • autoscaling_disabled – 若要啟用讀取容量的自動擴展,請將 值設定為 false。預設值為 true。(選用)

        • minimum_units – 資料表應隨時準備好支援的輸送量最低層級。該值必須介於 1 到 帳戶每秒最大輸送量配額之間 (預設為 40,000)。

        • maximum_units – 資料表應隨時準備好支援的輸送量上限。該值必須介於 1 到 帳戶每秒最大輸送量配額之間 (預設為 40,000)。

        • scaling_policy – Amazon Keyspaces 支援目標追蹤政策。自動擴展目標是資料表的佈建讀取容量。

          • target_tracking_scaling_policy_configuration – 若要定義目標追蹤政策,您必須定義目標值。如需目標追蹤和冷卻期間的詳細資訊,請參閱《Application Auto Scaling Scaling 使用者指南》中的目標追蹤擴展政策

            • target_value – 資料表的目標使用率。Amazon Keyspaces 自動擴展可確保已佈建容量與已佈建容量的耗用容量比率保持等於或接近此值。您能以百分比的形式定義 target_value。介於 20 到 90 之間的兩倍。(必要)

            • scale_in_cooldown – 擴展活動之間的冷卻時間,以秒為單位,可讓資料表在活動中的另一個擴展開始之前穩定。如果未提供值,則預設值為 0。(選用)

            • scale_out_cooldown – 擴展活動之間的冷卻時間,以秒為單位,可讓資料表在另一個橫向擴展活動開始之前穩定。如果未提供值,則預設值為 0。(選用)

            • disable_scale_inboolean指定資料表scale-in是否已停用或已啟用的 。此參數預設為停用。若要開啟 scale-in,請將 boolean值設定為 FALSE。這表示會自動為您縮減資料表的容量。(選用)

      • replica_updates:指定多區域資料表 AWS 區域 的特定自動擴展設定。對於多區域資料表,您可以為每個 以不同的方式設定資料表的讀取容量 AWS 區域。您可以設定下列參數來執行此操作。如需詳細資訊和範例,請參閱 更新 Amazon Keyspaces 中多區域資料表的佈建容量和自動擴展設定

        • region – 具有下列設定的資料表複本 AWS 區域 的 :

          • provisioned_read_capacity_autoscaling_update

            • autoscaling_disabled – 若要啟用資料表讀取容量的自動擴展,請將 值設定為 false。預設值為 true。(選用)

              注意

              必須為資料表的所有複本啟用或停用多區域資料表的自動擴展。

            • minimum_units – 資料表應隨時準備好支援的最小讀取輸送量層級。該值必須介於 1 到 帳戶每秒最大輸送量配額之間 (預設為 40,000)。

            • maximum_units – 資料表應隨時準備好支援的讀取輸送量上限。該值必須介於 1 到 帳戶每秒最大輸送量配額之間 (預設為 40,000)。

            • scaling_policy – Amazon Keyspaces 支援目標追蹤政策。自動擴展目標是資料表的佈建讀取容量。

              • target_tracking_scaling_policy_configuration – 若要定義目標追蹤政策,您必須定義目標值。如需目標追蹤和冷卻期間的詳細資訊,請參閱《Application Auto Scaling Scaling 使用者指南》中的目標追蹤擴展政策

                • target_value – 資料表的目標使用率。Amazon Keyspaces 自動擴展可確保已耗用讀取容量與佈建讀取容量的比率保持在或接近此值。您能以百分比的形式定義 target_value。介於 20 到 90 之間的兩倍。(必要)

                • scale_in_cooldown – 擴展活動之間的冷卻時間,以秒為單位,可讓資料表在活動中的另一個擴展開始之前穩定。如果未提供值,則預設值為 0。(選用)

                • scale_out_cooldown – 擴展活動之間的冷卻時間,以秒為單位,可讓資料表在另一個橫向擴展活動開始之前穩定。如果未提供值,則預設值為 0。(選用)

                • disable_scale_inboolean指定資料表scale-in是否已停用或已啟用的 。此參數預設為停用。若要開啟 scale-in,請將 boolean值設定為 FALSE。這表示系統會自動為您縮減資料表的讀取容量。(選用)

    • default_time_to_live – 資料表的預設存留時間,以秒為單位。

    • TAGS – 建立金鑰值對標籤時要附加至資源的清單。

  • clustering_order 包含下列項目:

    • column_name – 資料欄的名稱。

    • ASC | DESC – 設定上行 (ASC) 或下行 (DESC) 順序修改器。如果未指定,預設順序為 ASC。

範例

CREATE TABLE IF NOT EXISTS my_keyspace.my_table ( id text, name text, region text, division text, project text, role text, pay_scale int, vacation_hrs float, manager_id text, PRIMARY KEY (id,division)) WITH CUSTOM_PROPERTIES={ 'capacity_mode':{ 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20 }, 'point_in_time_recovery':{'status': 'enabled'}, 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111' } } AND CLUSTERING ORDER BY (division ASC) AND TAGS={'key1':'val1', 'key2':'val2'} AND default_time_to_live = 3024000;

在使用叢集資料欄的資料表中,非叢集資料欄可以在資料表定義中宣告為靜態資料欄。如需靜態資料欄的詳細資訊,請參閱 Amazon Keyspaces 中靜態資料欄的預估容量耗用

範例

CREATE TABLE my_keyspace.my_table ( id int, name text, region text, division text, project text STATIC, PRIMARY KEY (id,division));

您可以使用使用者定義類型 (UDT) 的欄來建立資料表。範例中的第一個陳述式會建立 類型,第二個陳述式會建立具有使用 類型之資料欄的資料表。

範例

CREATE TYPE my_keyspace."udt""N@ME" (my_field int); CREATE TABLE my_keyspace.my_table (my_col1 int pri key, my_col2 "udt""N@ME");

ALTER TABLE

使用 ALTER TABLE陳述式來新增資料欄、新增標籤或變更資料表的自訂屬性。

語法

alter_table_statement ::= ALTER TABLE table_name [ ADD ( column_definition | column_definition_list) ] [[ADD | DROP] TAGS {'key1':'val1', 'key2':'val2'}] [ WITH table_options [ , ... ] ] ; column_definition ::= column_name cql_type

其中:

  • table_name 是要變更的資料表名稱。

  • column_definition 是要新增的資料欄名稱和資料類型。

  • column_definition_list 是放在括號內的逗號分隔資料欄清單。

  • table_options 包含下列項目:

    • CUSTOM_PROPERTIES – Amazon Keyspaces 特定設定的地圖。

      • capacity_mode:指定資料表的讀取/寫入輸送量模式。選項包括 throughput_mode:PAY_PER_REQUESTthroughput_mode:PROVISIONED. 佈建的容量模式需要 read_capacity_unitswrite_capacity_units做為輸入。預設值為 throughput_mode:PAY_PER_REQUEST

      • client_side_timestamps:指定資料表的用戶端時間戳記是啟用或停用。選項包括 {'status': 'enabled'}{'status': 'disabled'}. 如果未指定,則預設值為 status:disabled。為資料表啟用用戶端時間戳記後,此設定就無法停用。

      • encryption_specification:指定靜態加密的加密選項。選項包括 encryption_type:AWS_OWNED_KMS_KEYencryption_type:CUSTOMER_MANAGED_KMS_KEY. 加密選項客戶受管金鑰需要 Amazon Resource Name (ARN) 格式的 AWS KMS 金鑰做為輸入:kms_key_identifier:ARN

      • point_in_time_recovery:指定資料表的point-in-time還原是啟用或停用。選項包括 status:enabledstatus:disabled. 預設值為 status:disabled

      • replica_updates:指定多區域資料表 AWS 區域 的特定設定。對於多區域資料表,您可以根據不同的方式設定資料表的讀取容量 AWS 區域。您可以設定下列參數來執行此操作。如需詳細資訊和範例,請參閱 更新 Amazon Keyspaces 中多區域資料表的佈建容量和自動擴展設定

        • region – 具有下列設定的 AWS 區域 資料表複本:

          • read_capacity_units

      • ttl:啟用資料表的存留時間自訂設定。若要啟用,請使用 status:enabled。預設值為 status:disabledttl啟用 之後,您就無法為資料表停用它。

    • AUTOSCALING_SETTINGS 包含佈建資料表的選用自動擴展設定。如需語法和詳細說明,請參閱CREATE TABLE。如需範例,請參閱 在現有資料表上設定自動擴展

  • default_time_to_live:資料表的預設存留時間,以秒為單位。

  • TAGS 是要連接到資源的鍵/值對標籤清單。

注意

使用 ALTER TABLE,您只能變更單一自訂屬性。您無法在相同的陳述式中結合多個 ALTER TABLE 命令。

範例

下列陳述式說明如何將資料欄新增至現有資料表。

ALTER TABLE mykeyspace.mytable ADD (ID int);

此陳述式說明如何將兩個集合資料欄新增至現有資料表:

  • 包含巢狀凍結集合col_frozen_list的凍結集合欄

  • col_map 包含巢狀凍結集合的非凍結集合欄

ALTER TABLE my_Table ADD(col_frozen_list FROZEN<LIST<FROZEN<SET<TEXT>>>>, col_map MAP<INT, FROZEN<SET<INT>>>);

下列範例示範如何將使用使用者定義類型 (UDT) 的資料欄新增至資料表。

ALTER TABLE my_keyspace.my_table ADD (my_column, my_udt;);

若要變更資料表的容量模式並指定讀取和寫入容量單位,您可以使用下列陳述式。

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}};

下列陳述式指定資料表的客戶受管 KMS 金鑰。

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={ 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111' } };

若要啟用資料表的point-in-time還原,您可以使用下列陳述式。

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'point_in_time_recovery': {'status': 'enabled'}};

若要設定資料表的預設存留時間值,以秒為單位,您可以使用下列陳述式。

ALTER TABLE my_table WITH default_time_to_live = 2592000;

此陳述式會啟用資料表的自訂存留時間設定。

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

RESTORE 資料表

使用 RESTORE TABLE陳述式將資料表還原至某個時間點。此陳述式需要在資料表上啟用point-in-time復原。如需詳細資訊,請參閱使用 point-in-time復原來備份和還原資料

語法

restore_table_statement ::= RESTORE TABLE restored_table_name FROM TABLE source_table_name [ WITH table_options [ , ... ] ];

其中:

  • restored_table_name 是還原資料表的名稱。

  • source_table_name 是來源資料表的名稱。

  • table_options 包含下列項目:

    • restore_timestamp 是 ISO 8601 格式的還原點時間。如果未指定,則會使用目前的時間戳記。

    • CUSTOM_PROPERTIES – Amazon Keyspaces 特定設定的地圖。

      • capacity_mode:指定資料表的讀取/寫入輸送量模式。選項包括 throughput_mode:PAY_PER_REQUESTthroughput_mode:PROVISIONED. 佈建的容量模式需要 read_capacity_unitswrite_capacity_units做為輸入。預設值是來源資料表的目前設定。

      • encryption_specification:指定靜態加密的加密選項。選項包括 encryption_type:AWS_OWNED_KMS_KEYencryption_type:CUSTOMER_MANAGED_KMS_KEY. 加密選項客戶受管金鑰需要 Amazon Resource Name (ARN) 格式的 AWS KMS 金鑰做為輸入:kms_key_identifier:ARN。若要將以客戶受管金鑰加密的資料表還原至使用 加密的資料表 AWS 擁有的金鑰,Amazon Keyspaces 需要存取來源資料表的 AWS KMS 金鑰。

      • point_in_time_recovery:指定資料表的point-in-time還原是啟用或停用。選項包括 status:enabledstatus:disabled. 與建立新資料表時不同,還原資料表的預設狀態是 ,status:enabled因為設定繼承自來源資料表。若要停用還原資料表的 PITR,您必須status:disabled明確設定。

      • replica_updates:指定多區域資料表 AWS 區域 的特定設定。對於多區域資料表,您可以根據不同的方式設定資料表的讀取容量 AWS 區域。您可以設定下列參數來執行此操作。

        • region – 具有下列設定的 AWS 區域 資料表複本:

          • read_capacity_units

    • AUTOSCALING_SETTINGS 包含佈建資料表的選用自動擴展設定。如需詳細的語法和說明,請參閱 CREATE TABLE

    • TAGS 是要連接到資源的鍵/值對標籤清單。

注意

刪除的資料表只能還原至刪除時間。

範例

RESTORE TABLE mykeyspace.mytable_restored from table mykeyspace.my_table WITH restore_timestamp = '2020-06-30T04:05:00+0000' AND custom_properties = {'point_in_time_recovery':{'status':'disabled'}, 'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}} AND TAGS={'key1':'val1', 'key2':'val2'};

DROP TABLE

使用 DROP TABLE陳述式從鍵空間移除資料表。

語法

drop_table_statement ::= DROP TABLE [ IF EXISTS ] table_name

其中:

  • IF EXISTS 如果資料表不存在, DROP TABLE會防止 失敗。(選用)

  • table_name 是要捨棄的資料表名稱。

範例

DROP TABLE my_keyspace.my_table;