本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
表
表是 Amazon Keyspaces 中的主要数据结构。表中的数据按行和列进行组织。这些列的子集用于通过指定分区键来确定分区(以及最终的数据放置)。
可以将另一组列定义为聚类列,这意味着它们可以作为谓词参与查询执行。
默认情况下,将创建具有按需 吞吐容量的新表。您可以更改新表和现有表的容量模式。有关 read/write 容量吞吐模式的更多信息,请参阅在 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 ] | cdc | CUSTOM_PROPERTIES | AUTOSCALING_SETTINGS | default_time_to_live | TAGS clustering_order ::= column_name (ASC | DESC) ( ',' column_name (ASC | DESC) )*
其中:
- 
                        table_name是要创建的表的名称。完全限定名称包括密钥空间前缀。或者,也可以使用 keyspace 语句设置当前的USE密钥空间。
- 
                        column_definition包含以下各项:
- 
                        primary_key包含以下各项:- 
                                partition_key
- 
                                clustering_columns
 
- 
                                
- 
                        partition_key:- 
                                分区键可以是单个列,也可以是由两列或多个列组成的复合值。主键的分区键部分是必需的,它决定了 Amazon Keyspaces 存储数据的方式。 
 
- 
                                
- 
                        clustering_columns:- 
                                主键的可选聚类列部分决定如何在每个分区中聚类和排序数据。 
 
- 
                                
- 
                        table_options包含以下各项:- 
                                CLUSTERING ORDER BY:表上的默认 CLUSTERING ORDER 包含ASC(升序)排序方向的聚类键。指定它可覆盖默认排序行为。
- 
                                cdc— 一个布尔值,用于指定 Amazon Keyspaces 是否为表创建更改数据捕获 (CDC) 流。默认值为false。要在启用直播view type时指定,请将设置cdc_specification为CUSTOM_PROPERTIES。
- 
                                CUSTOM_PROPERTIES:特定于 Amazon Keyspaces 的设置的映射。- 
                                        capacity_mode:指定表的读/写吞吐容量模式。选项为throughput_mode:PAY_PER_REQUEST和throughput_mode:PROVISIONED。预置容量模式要求将read_capacity_units和write_capacity_units作为输入。默认值为throughput_mode:PAY_PER_REQUEST。
- 
                                        cdc_specification:指定view_typeCDC 直播的。选项包括:- NEW_AND_OLD_IMAGES— 该行的两个版本,在更改之前和之后。这是默认模式。
- NEW_IMAGE— 更改后的行的版本。
- OLD_IMAGE— 更改前行的版本。
- KEYS_ONLY— 已更改行的分区和群集键。
 有关 CDC 直播的更多信息,请参阅在 Amazon Keyspaces 中处理变更数据捕获 (CDC) 流。有关代码示例,请参阅 在 Amazon Keyspaces 中创建新表时启用 CDC 流。 
- 
                                        client_side_timestamps:指定为表启用还是禁用客户端时间戳。选项为{'status': 'enabled'}和{'status': 'disabled'}。如果未指定,则默认为status:disabled。为表启用客户端时间戳后便无法禁用该设置。
- 
                                        encryption_specification:为静态加密指定加密选项。如果未指定,则默认为encryption_type:AWS_OWNED_KMS_KEY。加密选项客户托管密钥要求输入 Amazon 资源名称 (ARN) 格式的 Amazon KMS 密钥作为输入::kms_key_identifier:ARN。kms_key_identifier:ARN
- 
                                        point_in_time_recovery:指定是启用还是禁用表的 point-in-time还原。选项为status:enabled和status:disabled。如果未指定,则默认为status:disabled。
- replica_updates:指定特定于 Amazon Web Services 区域的多区域表设置。对于多区域表,您可以按 Amazon Web Services 区域以不同的方式配置表的读取容量。您可以通过配置以下参数完成该操作。有关更多信息以及示例,请参阅 在 Amazon Keyspaces 中使用自动扩缩功能在预置模式下创建多区域表。- region— 具有以下设置 Amazon Web Services 区域 的表副本的:- read_capacity_units
 
 
-       
                                        TTL:为表启用存活时间自定义设置。要启用,请使用status:enabled。默认值为status:disabled。为表启用TTL后便无法禁用该设置。
 
- 
                                        
- AUTOSCALING_SETTINGS包括预置模式下表的以下可选设置。有关更多信息以及示例,请参阅 创建启用了自动扩缩的新表。- 
                            provisioned_write_capacity_autoscaling_update:- autoscaling_disabled- 要为写入容量启用自动扩缩,请将该值设置为- false。默认值为- true。(可选)
- minimum_units- 表应始终支持的最小写入吞吐量水平。该值必须介于 1 和账户的每秒最大吞吐量配额(默认为 40000)之间。
- maximum_units- 表应始终支持的最大写入吞吐量水平。该值必须介于 1 和账户的每秒最大吞吐量配额(默认为 40000)之间。
- scaling_policy- Amazon Keyspaces 支持目标跟踪策略。自动扩缩目标是表的预置写入容量。- target_tracking_scaling_policy_configuration- 要定义目标跟踪策略,必须定义目标值。有关目标跟踪和冷却时间的更多信息,请参阅《Application Auto Scaling 用户指南》中的 Target Tracking Scaling Policies。- target_value- 表的目标利用率。Amazon Keyspaces 自动扩缩可确保消耗的容量与预置容量的比例保持在该值或接近该值。您将- target_value定义为百分比。20 到 90 之间的双精度值。(必需)
- scale_in_cooldown– 扩缩活动之间的冷却时间(以秒为单位),可让表在另一个横向缩减活动开始之前稳定下来。如果未提供值,则默认值为 0。(可选)
- scale_out_cooldown– 扩缩活动之间的冷却时间(以秒为单位),可让表在另一个横向扩展活动开始之前稳定下来。如果未提供值,则默认值为 0。(可选)
- disable_scale_in:一个- boolean,指定是否为该表禁用或启用- scale-in。默认情况下,将禁用此参数。要开启- scale-in,请将- boolean值设置为- FALSE。这表示会代表您自动缩减表的容量。(可选)
 
 
 
- 
                            provisioned_read_capacity_autoscaling_update:- autoscaling_disabled- 要为读取容量启用自动扩缩,请将该值设置为- false。默认值为- true。(可选)
- minimum_units- 表应始终支持的最小吞吐量水平。该值必须介于 1 和账户的每秒最大吞吐量配额(默认为 40000)之间。
- maximum_units- 表应始终支持的最大吞吐量水平。该值必须介于 1 和账户的每秒最大吞吐量配额(默认为 40000)之间。
- scaling_policy- Amazon Keyspaces 支持目标跟踪策略。自动扩缩目标是表的预置读取容量。- 
                                                  target_tracking_scaling_policy_configuration- 要定义目标跟踪策略,必须定义目标值。有关目标跟踪和冷却时间的更多信息,请参阅《Application Auto Scaling 用户指南》中的 Target Tracking Scaling Policies。- 
                                                  target_value- 表的目标利用率。Amazon Keyspaces 自动扩缩可确保消耗的容量与预置容量的比例保持在该值或接近该值。您将target_value定义为百分比。20 到 90 之间的双精度值。(必需)
- 
                                                  scale_in_cooldown– 扩缩活动之间的冷却时间(以秒为单位),可让表在另一个横向缩减活动开始之前稳定下来。如果未提供值,则默认值为 0。(可选)
- 
                                                  scale_out_cooldown– 扩缩活动之间的冷却时间(以秒为单位),可让表在另一个横向扩展活动开始之前稳定下来。如果未提供值,则默认值为 0。(可选)
- 
                                                  disable_scale_in:一个boolean,指定是否为该表禁用或启用scale-in。默认情况下,将禁用此参数。要开启scale-in,请将boolean值设置为FALSE。这表示会代表您自动缩减表的容量。(可选)
 
- 
                                                  
 
- 
                                                  
 
- replica_updates:指定多区域表的 Amazon Web Services 区域 特定自动缩放设置。对于多区域表,您可以按 Amazon Web Services 区域以不同的方式配置表的读取容量。您可以通过配置以下参数完成该操作。有关更多信息以及示例,请参阅 在 Amazon Keyspaces 中更新多区域表的预置容量和自动扩缩设置。- region— 具有以下设置 Amazon Web Services 区域 的表副本的:- provisioned_read_capacity_autoscaling_update- autoscaling_disabled- 要为表的读取容量启用自动扩缩,请将该值设置为- false。默认值为- true。(可选)- 注意- 必须为该表的所有副本启用或禁用多区域表的自动扩缩。 
- minimum_units- 表应始终支持的最小读取吞吐量水平。该值必须介于 1 和账户的每秒最大吞吐量配额(默认为 40000)之间。
- maximum_units- 表应始终支持的最大读取吞吐量水平。该值必须介于 1 和账户的每秒最大吞吐量配额(默认为 40000)之间。
- scaling_policy- Amazon Keyspaces 支持目标跟踪策略。自动扩缩目标是表的预置读取容量。- target_tracking_scaling_policy_configuration- 要定义目标跟踪策略,必须定义目标值。有关目标跟踪和冷却时间的更多信息,请参阅《Application Auto Scaling 用户指南》中的 Target Tracking Scaling Policies。- target_value- 表的目标利用率。Amazon Keyspaces 自动扩缩可确保使用的读取容量与预置读取容量的比例保持在该值或接近该值。您将- target_value定义为百分比。20 到 90 之间的双精度值。(必需)
- scale_in_cooldown– 扩缩活动之间的冷却时间(以秒为单位),可让表在另一个横向缩减活动开始之前稳定下来。如果未提供值,则默认值为 0。(可选)
- scale_out_cooldown– 扩缩活动之间的冷却时间(以秒为单位),可让表在另一个横向扩展活动开始之前稳定下来。如果未提供值,则默认值为 0。(可选)
- disable_scale_in:一个- boolean,指定是否为该表禁用或启用- scale-in。默认情况下,将禁用此参数。要开启- scale-in,请将- boolean值设置为- FALSE。这表示会代表您自动缩减表的读取容量。(可选)
 
 
 
 
 
 
- 
                            
- default_time_to_live:表的默认存活时间设置(以秒为单位)。
- TAGS:创建资源时要附加到资源的键值对标签的列表。
- 
                                clustering_order包含以下各项:- 
                                        column_name:列的名称。
- 
                                        ASC | DESC:设置升序 (ASC) 或降序 (DESC) 顺序修饰符。如果未指定,则默认顺序为 ASC。
 
- 
                                        
 
- 
                                
示例
CREATE TABLE IF NOT EXISTSmy_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 TABLEmy_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包含以下各项:- AUTOSCALING_SETTINGS包括预置表的可选自动扩缩设置。有关语法和详细说明,请参阅 CREATE TABLE。有关示例,请参阅 在现有表上配置自动扩缩。
- 
                                cdc— 一个布尔值,用于指定 Amazon Keyspaces 是否为表创建更改数据捕获 (CDC) 流。默认值为false。要在启用直播view type时指定,请将设置cdc_specification为CUSTOM_PROPERTIES。
- 
                                CUSTOM_PROPERTIES:特定于 Amazon Keyspaces 的设置的映射。- 
                                        capacity_mode:指定表的读/写吞吐容量模式。选项为throughput_mode:PAY_PER_REQUEST和throughput_mode:PROVISIONED。预置容量模式要求将read_capacity_units和write_capacity_units作为输入。默认值为throughput_mode:PAY_PER_REQUEST。
- 
                                        cdc_specification:指定view_typeCDC 直播的。选项包括:- NEW_AND_OLD_IMAGES— 该行的两个版本,在更改之前和之后。这是默认模式。
- NEW_IMAGE— 更改后的行的版本。
- OLD_IMAGE— 更改前行的版本。
- KEYS_ONLY— 已更改行的分区和群集键。
 有关 CDC 直播的更多信息,请参阅在 Amazon Keyspaces 中处理变更数据捕获 (CDC) 流。有关代码示例,请参阅 为 Amazon Keyspaces 中的现有表启用 CDC 流。 
- 
                                        client_side_timestamps:指定为表启用还是禁用客户端时间戳。选项为{'status': 'enabled'}和{'status': 'disabled'}。如果未指定,则默认为status:disabled。为表启用客户端时间戳后便无法禁用该设置。
- 
                                        encryption_specification:为静态加密指定加密选项。选项为encryption_type:AWS_OWNED_KMS_KEY和encryption_type:CUSTOMER_MANAGED_KMS_KEY。加密选项客户自主管理型密钥要求输入 Amazon 资源名称 (ARN) 格式的 Amazon KMS 密钥作为输入:kms_key_identifier:ARN。
- 
                                        point_in_time_recovery:指定是启用还是禁用表的 point-in-time还原。选项为status:enabled和status:disabled。默认值为status:disabled。
- replica_updates:指定多区域表的 Amazon Web Services 区域 特定设置。对于多区域表,您可以按 Amazon Web Services 区域以不同的方式配置表的读取容量。您可以通过配置以下参数完成该操作。有关更多信息以及示例,请参阅 在 Amazon Keyspaces 中更新多区域表的预置容量和自动扩缩设置。- region— 具有以下设置 Amazon Web Services 区域 的表副本的:- read_capacity_units
 
 
- 
                                        ttl:为表启用存活时间自定义设置。要启用,请使用status:enabled。默认值为status:disabled。为表启用ttl后便无法禁用该设置。
 
- 
                                        
 
- 
                            default_time_to_live:表的默认存活时间设置(以秒为单位)。
- 
                        TAGS是要附加到资源的键/值对标签的列表。
注意
使用 ALTER TABLE 时,您只能更改单个自定义属性。您无法在同一语句中组合多个 ALTER TABLE 命令。
示例
以下语句展示如何将列添加到现有表。
ALTER TABLEmykeyspace.mytableADD (ID int);
此语句展示如何将两个集合列添加到现有表:
- 
                        包含嵌套冻结集合的冻结集合列 col_frozen_list
- 
                        包含嵌套冻结集合的非冻结集合列 col_map
ALTER TABLEmy_TableADD(col_frozen_listFROZEN<LIST<FROZEN<SET<TEXT>>>>,col_mapMAP<INT, FROZEN<SET<INT>>>);
以下示例说明如何向表中添加使用用户定义类型 (UDT) 的列。
ALTER TABLE my_keyspace.my_table ADD (my_column, my_udt;);
要更改表的容量模式并指定读取和写入容量单位,可以使用以下语句。
ALTER TABLEmykeyspace.mytableWITH CUSTOM_PROPERTIES={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}};
以下语句为表指定客户自主管理型 KMS 密钥。
ALTER TABLEmykeyspace.mytableWITH 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 TABLEmy_tableWITH default_time_to_live = 2592000;
此语句为表启用自定义存活时间设置。
ALTER TABLEmytableWITH CUSTOM_PROPERTIES={'ttl':{'status': 'enabled'}};
RESTORE TABLE
使用 RESTORE TABLE 语句可将表恢复到某个时间点。此语句要求在表上启用 point-in-time恢复。有关更多信息,请参阅 使用 Amazon Keyspaces 的 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_REQUEST和throughput_mode:PROVISIONED。预置容量模式要求将read_capacity_units和write_capacity_units作为输入。默认值为源表中的当前设置。
- 
                                        encryption_specification:为静态加密指定加密选项。选项为encryption_type:AWS_OWNED_KMS_KEY和encryption_type:CUSTOMER_MANAGED_KMS_KEY。加密选项客户托管密钥要求输入亚马逊资源名称 (ARN) 格式的 Amazon KMS 密钥作为输入:。kms_key_identifier:ARN要将使用客户托管密钥加密的表恢复到使用加密的表 Amazon 拥有的密钥,Amazon Keyspaces 需要访问源表的 Amazon KMS 密钥。
- 
                                        point_in_time_recovery:指定是启用还是禁用表的 point-in-time还原。选项为status:enabled和status:disabled。与创建新表时不同,已恢复的表的默认状态为status:enabled,因为该设置继承自源表。要对已恢复的表禁用 PITR,必须显式设置status:disabled。
- replica_updates:指定多区域表的 Amazon Web Services 区域 特定设置。对于多区域表,您可以按 Amazon Web Services 区域以不同的方式配置表的读取容量。您可以通过配置以下参数完成该操作。- region— 具有以下设置 Amazon Web Services 区域 的表副本的:- 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;