DDLAmazon Keyspaces 中的語句(數據定義語言) - Amazon Keyspaces (適用於 Apache Cassandra)

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

DDLAmazon Keyspaces 中的語句(數據定義語言)

數據定義語言(DDL)是一組卡桑德拉查詢語言(CQL)語句,用於管理 Amazon Keyspaces 中的數據結構(對於 Apache 卡桑德拉),如密鑰空間和表。您可DDL以使用建立這些資料結構、在建立資料結構後修改它們,並在不再使用時將其移除。Amazon Keyspaces 以異步方式執行DDL操作。如需如何確認非同步作業是否已完成的詳細資訊,請參閱異步創建和刪除密鑰空間和表

支援下列DDL陳述式:

Keyspaces

索引鍵空間會將與一或多個應用程式相關的相關資料表分組。就關係數據庫管理系統(RDBMS)而言,密鑰空間與數據庫,表空間或類似的構造大致相似。

注意

在 Apache 卡桑德拉,密鑰空間確定數據如何在多個存儲節點之間複製。不過,Amazon Keyspaces 是全受管服務:其儲存層的詳細資料會代表您管理。因此,Amazon Keyspaces 中的密鑰空間僅為邏輯結構,與底層實體儲存無關。

如需 Amazon Keyspaces 的配額限制和限制的相關資訊,請參閱。配額 Amazon Keyspaces(阿帕奇卡桑德拉)

CREATE KEYSPACE

使用該CREATE KEYSPACE語句創建一個新的密鑰空間。

語法

create_keyspace_statement ::= CREATE KEYSPACE [ IF NOT EXISTS ] keyspace_name WITH options

其中:

  • keyspace_name是要創建的密鑰空間的名稱。

  • 選項為下列一或多項:

    • REPLICATION-表示密鑰空間複製策略的映射:

      • SingleRegionStrategy— 針對單一區域金鑰空間。(必要)

      • NetworkTopologyStrategy— 指定至少兩個和最多六個 AWS 區域。每個區域的複製因子是三個。(選用)

    • DURABLE_WRITES— 寫入 Amazon Keyspaces 始終是耐用的,因此不需要此選項。但是,如果指定,該值必須是true

    • TAGS— 建立資源時要附加至資源的索引鍵值配對標籤清單。(選用)

範例

創建一個密鑰空間,如下所示。

CREATE KEYSPACE my_keyspace WITH REPLICATION = {'class': 'SingleRegionStrategy'} and TAGS ={'key1':'val1', 'key2':'val2'} ;

若要建立多區域金鑰空間,請指定NetworkTopologyStrategy並包含至少兩個和最多六個。 AWS 區域每個區域的複製因子是三個。

CREATE KEYSPACE my_keyspace WITH REPLICATION = {'class':'NetworkTopologyStrategy', 'us-east-1':'3', 'ap-southeast-1':'3','eu-west-1':'3'};

ALTER KEYSPACE

使用ALTER KEYSPACE從金鑰空間新增或移除標籤。

語法

alter_keyspace_statement ::= ALTER KEYSPACE keyspace_name [[ADD | DROP] TAGS

其中:

  • keyspace_name是要修改的密鑰空間的名稱。

  • TAGS-要從密鑰空間中添加或刪除的鍵值對標籤列表。

範例

改變一個密鑰空間,如下所示。

ALTER KEYSPACE "myGSGKeyspace" ADD TAGS {'key1':'val1', 'key2':'val2'};

DROP KEYSPACE

使用DROP KEYSPACE陳述式移除金鑰空間,包括金鑰空間的所有內容,例如資料表。

語法

drop_keyspace_statement ::= DROP KEYSPACE [ IF EXISTS ] keyspace_name

其中:

  • 密鑰空間名稱是要刪除的密鑰空間的名稱。

範例

DROP KEYSPACE "myGSGKeyspace";

資料表

是 Amazon Keyspaces 中的主要數據結構。表中的數據被組織成行和列。這些資料行的子集是透過指定分割索引鍵來判斷資料分割 (最終資料放置)。

另一組資料行可以定義為叢集資料行,這表示它們可以在查詢執行中以述詞的形式參與。

依預設,會以隨需輸送量容量建立新表格。您可以變更新表格和現有資料表的容量模式。如需讀取/寫入容量輸送量模式的詳細資訊,請參閱 Amazon 密Keyspaces 間中的讀取/寫入容量模

對於佈建模式下的表格,您可以設定選用AUTOSCALING_SETTINGS。如需 Amazon Keyspaces auto 擴展和可用選項的詳細資訊,請參閱使用卡桑德拉查詢語言(CQL)管理 Amazon Keyspaces auto 擴展

如需 Amazon Keyspaces 資料表的配額限制和限制的相關資訊,請參閱配額 Amazon Keyspaces(阿帕奇卡桑德拉)

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是要建立的資料表名稱。

  • column_definition由以下內容組成:

    • column_name— 欄的名稱。

    • cql_type— Amazon Keyspaces 數據類型 (請參閱資料類型).

    • FROZEN— 將此類型欄 collection (例如LISTSET、或MAP) 指定為凍結。結集合被序列化為單個不可變值,並像. BLOB 如需詳細資訊,請參閱集合類型

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

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

  • primary_key由以下內容組成:

    • partition_key

    • clustering_columns

  • partition_key:

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

  • clustering_columns:

    • 主鍵的可選集群列部分決定了數據在每個分區中聚集和排序的方式。

  • table_options由下列項目組成:

    • CLUSTERING ORDER BY— 資料表CLUSTERINGORDER的預設值是由 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 資源名稱 (ARN) 格式的 AWS KMS 金鑰作為輸入kms_key_identifier:ARN:: kms_key_identifier:ARN

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

      • replica_updates:指定特定於的多區域表格的設定。 AWS 區域對於多區域表格,您可以根據 AWS 區域不同的方式設定表格的讀取容量。您可以透過設定下列參數來執行此操作。如需詳細資訊和範例,請參閱 建立具有佈建容量模式和 auto 擴展 (CQL) 的多區域表

        • region— 具有下列設定 AWS 區域 的表格複本:

          • read_capacity_units

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

    • AUTOSCALING_SETTINGS包括佈建模式下表格的下列選用設定。如需詳細資訊和範例,請參閱 使用 CQL 建立具有自動調整比例的新資料表

      • provisioned_write_capacity_autoscaling_update:

        • autoscaling_disabled— 若要啟用寫入容量的 auto 調整,請將值設定為false。預設值為 true。(選用)

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

        • maximum_units— 資料表應隨時可支援的最大寫入輸送量層級。此值必須介於 1 和帳戶每秒最大輸送量配額之間 (預設為 40,000)。

        • scaling_policy— Amazon Keyspaces 支持目標跟踪政策。auto 擴展目標是表格的佈建寫入容量。

          • target_tracking_scaling_policy_configuration— 若要定義目標追蹤原則,您必須定義目標值。如需目標追蹤和冷卻時間的詳細資訊,請參閱《應用程式自動調整規模使用者指南》中的目標追蹤擴展政策

            • target_value— 表格的目標使用率。Amazon Keyspaces auto 擴展可確保消耗容量與佈建容量的比例保持在或接近此值。您能以百分比的形式定義 target_value。在 20 和 90 之間的雙倍。(必要)

            • scale_in_cooldown-縮放活動之間的冷卻時間(以秒為單位),使桌子在活動開始的另一個規模之前穩定下來。如果未提供任何值,則預設值為 0。(選用)

            • scale_out_cooldown-縮放活動之間的冷卻時間(以秒為單位),使桌子在另一個擴展活動開始之前穩定下來。如果未提供任何值,則預設值為 0。(選用)

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

      • provisioned_read_capacity_autoscaling_update:

        • autoscaling_disabled— 若要啟用讀取容量的 auto 調整,請將值設定為false。預設值為 true。(選用)

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

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

        • scaling_policy— Amazon Keyspaces 支持目標跟踪政策。auto 擴展目標是表格的佈建讀取容量。

          • target_tracking_scaling_policy_configuration— 若要定義目標追蹤原則,您必須定義目標值。如需目標追蹤和冷卻時間的詳細資訊,請參閱《應用程式自動調整規模使用者指南》中的目標追蹤擴展政策

            • target_value— 表格的目標使用率。Amazon Keyspaces auto 擴展可確保消耗容量與佈建容量的比例保持在或接近此值。您能以百分比的形式定義 target_value。在 20 和 90 之間的雙倍。(必要)

            • scale_in_cooldown-縮放活動之間的冷卻時間(以秒為單位),使桌子在活動開始的另一個規模之前穩定下來。如果未提供任何值,則預設值為 0。(選用)

            • scale_out_cooldown-縮放活動之間的冷卻時間(以秒為單位),使桌子在另一個擴展活動開始之前穩定下來。如果未提供任何值,則預設值為 0。(選用)

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

      • replica_updates:指定多區域表格的 AWS 區域 特定 auto 調整比例設定。對於多區域表格,您可以根據 AWS 區域不同的方式設定表格的讀取容量。您可以透過設定下列參數來執行此操作。如需詳細資訊和範例,請參閱 建立具有佈建容量模式和 auto 擴展 (CQL) 的多區域表

        • region— 具有下列設定 AWS 區域 的表格複本:

          • provisioned_read_capacity_autoscaling_update

            • autoscaling_disabled— 若要為表格的讀取容量啟用 auto 調整比例,請將值設定為false。預設值為 true。(選用)

              注意

              必須為表格的所有複本啟用或停用多區域表格的自動調整功能。

            • minimum_units— 資料表應隨時可支援的最低讀取輸送量層級。此值必須介於 1 和帳戶每秒最大輸送量配額之間 (預設為 40,000)。

            • maximum_units— 表格應隨時可支援的最大讀取輸送量層級。此值必須介於 1 和帳戶每秒最大輸送量配額之間 (預設為 40,000)。

            • scaling_policy— Amazon Keyspaces 支持目標跟踪政策。auto 擴展目標是表格的佈建讀取容量。

              • target_tracking_scaling_policy_configuration— 若要定義目標追蹤原則,您必須定義目標值。如需目標追蹤和冷卻時間的詳細資訊,請參閱《應用程式自動調整規模使用者指南》中的目標追蹤擴展政策

                • target_value— 表格的目標使用率。Amazon Keyspaces auto 擴展可確保消耗的讀取容量與佈建讀取容量的比例保持在或接近此值。您能以百分比的形式定義 target_value。在 20 和 90 之間的雙倍。(必要)

                • scale_in_cooldown-縮放活動之間的冷卻時間(以秒為單位),使桌子在活動開始的另一個規模之前穩定下來。如果未提供任何值,則預設值為 0。(選用)

                • scale_out_cooldown-縮放活動之間的冷卻時間(以秒為單位),使桌子在另一個擴展活動開始之前穩定下來。如果未提供任何值,則預設值為 0。(選用)

                • disable_scale_in:指booleanscale-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));

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 資源名稱 (ARN) 格式的 AWS KMS 金鑰作為輸入:kms_key_identifier:ARN

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

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

        • region— 具有下列設定 AWS 區域 的表格複本:

          • read_capacity_units

      • ttl:啟用表格的「存留時間」自訂設定。若要啟用,請使用status:enabled。預設值為 status:disabled。啟ttl用之後,您無法針對表格停用它。

    • AUTOSCALING_SETTINGS包含已佈建表格的選用 auto 調整設定。如需語法和詳細描述,請參閱CREATE TABLE。如需範例,請參閱 使用 CQL 在現有資料表上啟用自動調整

  • default_time_to_live:表格的預設存留時間設定 (以秒為單位)。

  • TAGS是要附加至資源的索引鍵值配對標籤清單。

注意

使用時 ALTERTABLE,您只能變更單一自訂性質。您不能在同一個語句中組合多個ALTERTABLE命令。

範例

下面的語句演示了如何一列添加到現有的表。

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>>>);

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

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 TABLE

使用RESTORE TABLE陳述式將資料表還原到某個時間點。此陳述式需要在資料表上啟用 point-in-time 復原。如需詳細資訊,請參閱Amazon Keyspaces 的 Point-in-time 復原 (適用於 Apache Cassandra) 的 Peyspaces 的復原

語法

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 資源名稱 (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包含已佈建表格的選用 auto 調整設定。如需詳細的語法和描述,請參閱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 "myGSGKeyspace".employees_tbl;