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

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

Amazon 键空间中的 DDL 语句(数据定义语言)

数据定义语言 (DDL) 是一组 Cassandra 查询语言 (CQL) 语句,可用于管理 Amazon Keyspaces (for Apache Cassandra) 中的数据结构,例如,键空间和表。可以使用 DDL 创建这些数据结构,在创建数据结构后对其进行修改,以及在不再使用数据结构时将其删除。Amazon Keyspaces 异步执行 DDL 操作。有关如何确认异步操作已完成的更多信息,请参阅Asynchronous Creation and Deletion of Keyspaces and Tables

支持以下 DDL 语句:

主题

Keyspaces

键空间 对与一个或多个应用程序相关的表进行分组。就关系数据库管理系统 (RDBMS) 而言,键空间与数据库、表空间或类似的结构大致相似。

注意

在 Apache Cassandra 中,键空间将决定如何在多个存储节点之间复制数据。但是,Amazon Keyspaces 是一项完全托管的服务:系统将代表您管理其存储层的详细信息。因此,Amazon Keyspaces 中的键空间只是逻辑结构,与底层物理存储无关。

有关 Amazon Keyspaces 键空间的配额限制和约束的信息,请参阅Amazon Keyspaces(针对 Apache Cassandra)的配额

以下是键空间唯一可用的复制策略:

SingleRegionStrategy – 跨其所在区域内的三个可用区复制数据。

CREATE KEYSPACE

使用 CREATE KEYSPACE 语句可创建新的键空间。

语法

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

其中:

  • keyspace_name 是要创建的键空间的名称。

  • 选项 为下列一个或多个项:

    • REPLICATION – 指示键空间的复制策略 (SingleRegionStrategy) 的映射,根据需要包含其他值。(必需)

    • DURABLE_WRITES – 对 Amazon Keyspace 的写入操作始终具有持久性,因此不需要此选项。但是,如果指定此选项,则值必须为 true.

    • TAGS – 在创建时附加到资源的键值对标签的列表。

示例

创建键空间,如下所示。

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

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

其中:

  • keyspace_name 是要删除的键空间的名称。

示例

DROP KEYSPACE "myGSGKeyspace";

Tables

是 Amazon Keyspaces 中的主要数据结构。表中的数据按行和列进行组织。这些列的子集用于通过指定分区键来确定分区(以及最终的数据放置)。

可以将另一组列定义为聚类列,这意味着它们可以作为谓词参与查询执行。

默认情况下,使用按需 吞吐容量创建新表。您可以更改新表和现有表的容量模式。有关读/写容量吞吐量模式的更多信息,请参阅 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 clustering_order ::= column_name (ASC | DESC) ( ',' column_name (ASC | DESC) )*

其中:

  • table_name 是要创建的表的名称。

  • column_definition 包含以下各项:

    • column_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 – 表上的默认 CLUSTERING ORDER 由“ASCendingASCending 指定它可覆盖默认排序行为。

    • CUSTOM_PROPERTIES – 特定于 Amazon Keyspaces 的设置的映射。

      • capacity_mode:指定表的读/写吞吐容量模式。选项为 throughput_mode:PAY_PER_REQUESTthroughput_mode:PROVISIONED。 预置容量模式需要 read_capacity_unitswrite_capacity_units 作为输入。默认值为 throughput_mode:PAY_PER_REQUEST

      • point_in_time_recovery:指定是为表启用或禁用时间点还原。选项为 status:enabledstatus:disabled。 如果未指定,则默认值为 status:disabled

    • 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'}} AND CLUSTERING ORDER BY (division ASC) AND TAGS={'key1':'val1', 'key2':'val2'};

在使用聚类列的表中,可在表定义中将非聚类列声明为静态列。有关静态列的更多信息,请参阅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 是放在括号内的列的逗号分隔列表。

  • TAGS 是要附加到资源的键/值对标签的列表。

  • 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

      • point_in_time_recovery:指定是为表启用或禁用时间点还原。选项为 status:enabledstatus:disabled。 默认值为 status:disabled

注意

使用 ALTER TABLE,您可以添加列、添加标签或更改自定义属性。您不能在同一语句中组合多个 ALTER TABLE 命令。

示例

ALTER TABLE "myGSGKeyspace".employees_tbl ADD (first_name text); or ALTER TABLE "myGSGKeyspace".employees_tbl WITH custom_properties={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}} ; or ALTER TABLE mykeyspace.mytable WITH custom_properties={'point_in_time_recovery': {'status': 'enabled'}};

RESTORE 表

使用 RESTORE TABLE 语句将表还原到某个时间点。此语句需要在表上启用时间点恢复。有关更多信息,请参阅 Point-in-Time Recovery for Amazon Keyspaces (for Apache Cassandra).

语法

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

其中:

  • restored_table_name 是还原的表的名称。

  • source_table_name 是源表的名称。

  • table_options 包含以下各项:

    • restore_timestamp 是还原点时间。如果未指定,则使用当前时间戳。

    • CUSTOM_PROPERTIES – 特定于 Amazon Keyspaces 的设置的映射。

      • capacity_mode:指定表的读/写吞吐容量模式。选项为 throughput_mode:PAY_PER_REQUESTthroughput_mode:PROVISIONED。 预置容量模式需要 read_capacity_unitswrite_capacity_units 作为输入。默认值为源表中的当前设置。

      • point_in_time_recovery:指定是为表启用或禁用时间点还原。选项为 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;