Amazon Keyspaces 中的 DDL 语句(数据定义语言) - Amazon Keyspaces (for Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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_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 KMS在制定决策时,以亚马逊资源名称 (ARN) 格式键入:kms_key_identifier:ARN:kms_key_identifier:ARN

      • point_in_time_recovery: 指定是否 point-in-time 已为表启用或禁用还原。选项为 status:enabledstatus: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_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 KMS在制定决策时,以亚马逊资源名称 (ARN) 格式键入:kms_key_identifier:ARN

      • point_in_time_recovery: 指定是否 point-in-time 已为表启用或禁用还原。选项为 status:enabledstatus: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_REQUESTthroughput_mode:PROVISIONED。预置容量模式要求将 read_capacity_unitswrite_capacity_units 作为输入。默认值为源表中的当前设置。

      • encryption_specification: 指定静态加密的加密选项。选项为 encryption_type:AWS_OWNED_KMS_KEYencryption_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:enabledstatus: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;