本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Keyspaces 中的 DDL 语句(数据定义语言)
Data table n(DDL) 是一组 Cassandra 查询语言 (CQL) 语句,用于管理 Amazon Keyspaces(适用于 Apache Cassandra)中的数据结构,例如密钥空间和表。可以使用 DDL 创建这些数据结构,在创建数据结构后对其进行修改,以及在不再使用数据结构时将其删除。Amazon Keyspaces 以异步方式执行 DDL 操作。有关如何确认异步操作已完成的更多信息,请参阅异步创建和删除密钥空间和表。
支持以下 DDL 语句:
Keyspaces
键空间 对与一个或多个应用程序相关的表进行分组。就关系数据库管理系统 (RDBMS) 而言,键空间与数据库、表空间或类似的结构大致相似。
注意
在 Apache Cassandra 中,键空间将决定如何在多个存储节点之间复制数据。但是,Amazon Keyspaces 是一项完全托管的服务:其存储层的详细信息由您代为管理。因此,Amazon Keyspaces 中的密钥空间只是逻辑结构,与底层物理存储无关。
有关 Amazon Keyspaces 密钥空间的配额限制和限制的信息,请参阅亚马逊密钥空间配额(适用于 Apache Cassandra)。
CREATE KEYSPACE
使用 CREATE KEYSPACE
语句可创建新的键空间。
语法
create_keyspace_statement ::= CREATE KEYSPACE [ IF NOT EXISTS ] keyspace_name WITH options
其中:
-
keyspace_name
是要创建的键空间的名称。 -
选项 为下列一个或多个项:
-
REPLICATION
— 表示密钥空间复制策略的地图:-
SingleRegionStrategy
— 用于单区域密钥空间。(必需) -
NetworkTopologyStrategy
— 指定至少两个,最多六个Amazon Web Services 区域。每个区域的重复因子为三。(可选)
-
-
DURABLE_WRITES
— 写入 Amazon Keyspaces 的操作始终是持久的,因此不需要使用此选项。但是,如果指定此选项,则值必须为true
。 -
TAGS
— 创建资源时要附加到资源中的密钥值对标签。(可选)
-
示例
创建键空间,如下所示。
CREATE KEYSPACE
my_keyspace
WITH REPLICATION = {'class': 'SingleRegionStrategy'} and TAGS ={'key1':'val1', 'key2':'val2'} ;
要创建多区域密钥空间,请指定NetworkTopologyStrategy
并包括至少两个,最多六个Amazon Web Services 区域。每个区域的重复因子为三。
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
— 要在 Keyspaces (for Keyspaces) 中列表。
示例
更改键空间,如下所示。
ALTER KEYSPACE "myGSGKeyspace" ADD TAGS {'key1':'val1', 'key2':'val2'};
DROP KEYSPACE
使用DROP KEYSPACE
删除密钥空间的语句,包括其所有内容,例如表。
语法
drop_keyspace_statement ::= DROP KEYSPACE [ IF EXISTS ] keyspace_name
其中:
-
keyspace_name 是要删除的键空间的名称。
示例
DROP KEYSPACE "myGSGKeyspace";
表
桌子是 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 [ 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 | WITH TAGS | WITH default_time_to_live clustering_order ::= column_name (ASC | DESC) ( ',' column_name (ASC | DESC) )*
其中:
-
table_name
是要创建的表的名称。 -
column_definition
包含以下各项:-
column_name
— table name — table name。 -
cql_type
— Amazon Keyspaces 数据类型(参见数据类型)。 STATIC
— 将此列指定为静态。静态列存储由同一分区中所有行共享的值。-
PRIMARY KEY
— 将此列指定为表的主键。
-
-
primary_key
包含以下各项:-
partition_key
-
clustering_columns
-
-
partition_key
:-
分区键可以是单个列,也可以是由两列或多个列组成的复合值。主键的分区键部分是必需的,它决定了 Amazon Keyspaces 如何存储您的数据。
-
-
clustering_columns
:-
主键的可选聚类列部分决定如何在每个分区中聚类和排序数据。
-
-
table_options
包括以下内容:-
CLUSTERING ORDER BY
— 表上的默认集群顺序由您在表中的集群键组成ASC
(升序)排序方向。指定它可覆盖默认排序行为。 -
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
。 -
client_side_timestamps
:指定是为表启用还是禁用客户端时间戳。选项为{'status': 'enabled'}
和{'status': 'disabled'}
。如果未指定,则默认值为status:disabled
。一旦为表启用了客户端时间戳,就无法禁用此设置。 -
encryption_specification
: 指定静态加密的加密选项。如果未指定,则默认值为encryption_type:AWS_OWNED_KMS_KEY
。加密选项客户托管密钥需要Amazon KMS在制定决策时,以亚马逊资源名称 (ARN) 格式键入:kms_key_identifier:ARN
:kms_key_identifier:ARN
。 -
point_in_time_recovery
: 指定是否 point-in-time 已为表启用或禁用还原。选项为status:enabled
和status:disabled
。如果未指定,则默认值为status:disabled
。 -
ttl
:为表格启用 Time to Live 自定义设置。要启用,请使用status:enabled
。默认为status:disabled
。之后ttl
已启用,您无法在制定决策时,您必须将其禁用。
-
-
TAGS
— 资源创建资源时要附加到资源中的密钥值对标签。 default_time_to_live
— 桌子的默认存活时间设置(以秒为单位)。
-
-
clustering_order
包含以下各项:-
column_name
— table name — table 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;
在使用聚类列的表中,可以在表定义中将非聚类列声明为静态列。有关静态列的更多信息,请参见亚马逊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
是放在括号内的列的逗号分隔列表。 -
TAGS
是要附加到资源的键/值对标签的列表。 default_time_to_live
:桌子的默认存活时间设置(以秒为单位)。-
table_options
包括以下内容:-
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
。 -
client_side_timestamps
:指定是为表启用还是禁用客户端时间戳。选项为{'status': 'enabled'}
和{'status': 'disabled'}
。如果未指定,则默认值为status:disabled
。一旦为表启用了客户端时间戳,就无法禁用此设置。 -
encryption_specification
: 指定静态加密的加密选项。选项为encryption_type:AWS_OWNED_KMS_KEY
和encryption_type:CUSTOMER_MANAGED_KMS_KEY
。加密选项客户托管密钥需要Amazon KMS在制定决策时,以亚马逊资源名称 (ARN) 格式键入:kms_key_identifier:ARN
。 -
point_in_time_recovery
: 指定是否 point-in-time 已为表启用或禁用还原。选项为status:enabled
和status:disabled
。默认为status:disabled
。 -
ttl
:为表格启用 Time to Live 自定义设置。要启用,请使用status:enabled
。默认为status:disabled
。之后ttl
已启用,您无法在制定决策时,您必须将其禁用。
-
-
注意
使用 ALTER TABLE,您只能更改单个自定义属性。不能在同一条语句中组合多个 ALTER TABLE 命令。
示例
以下语句让您能够在 Amazon (for)。
ALTER TABLE
mykeyspace.mytable
ADD (ID 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 restore 对于表,可以使用以下语句。
ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'point_in_time_recovery': {'status': 'enabled'}};
要为表设置默认 Time to Live 值(以秒为单位),可以使用以下语句。
ALTER TABLE
my_table
WITH default_time_to_live = 2592000;
此语句为表启用自定义 Time to Live 设置。
ALTER TABLE
mytable
WITH CUSTOM_PROPERTIES={'ttl':{'status': 'enabled'}};
恢复表
使用RESTORE TABLE
用于将表还原到某个时间点的语句。此语句需要 point-in-time 要在表上启用恢复。有关更多信息,请参阅Amazon Keyspaces (for)oint-in-time :
语法
restore_table_statement ::= RESTORE TABLE table_name FROM TABLE 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
。加密选项客户托管密钥需要Amazon KMS在制定决策时,以亚马逊资源名称 (ARN) 格式键入: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
明确地。
-
-
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;