教程步骤 1:在 Amazon Keyspaces 中创建键空间和表 - Amazon Keyspaces(Apache Cassandra 兼容)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程步骤 1:在 Amazon Keyspaces 中创建键空间和表

在本节中,您将使用控制台、或,创建密钥空间并向密钥空间添加表。cqlsh Amazon CLI

注意

开始之前,请确保您已具备所有教程先决条件

创建密钥空间

键空间 对与一个或多个应用程序相关的表进行分组。键空间包含一个或多个表,并为其包含的所有表定义复制策略。有关键空间的更多信息,请参阅以下主题:

在本教程中,我们创建了一个单区域密钥空间,密钥空间的复制策略是。SingleRegionStrategy使用SingleRegionStrategy,Amazon Keyspaces 将三个可用区域的数据合而为一。 Amazon Web Services 区域要了解如何创建多区域密钥空间,请参阅。如何使用多区域复制

使用控制台创建键空间
  1. 登录并打开 Amazon Keyspaces 控制台,网址为 https://console.aws.amazon.com/keyspaces/home。 Amazon Web Services Management Console

  2. 在导航窗格中,选择 Keyspaces (键空间)

  3. 选择 Create keyspace (创建键空间)

  4. Keyspace name (键空间名称) 框中,输入 catalog 作为键空间的名称。

    名称限制:

    • 名称不能为空。

    • 允许的字符:字母数字字符和下划线 (_)。

    • 最大长度为 48 个字符。

  5. 在下方 Amazon Web Services 区域,确认单区域复制是密钥空间的复制策略。

  6. 要创建键空间,请选择 Create keyspace (创建键空间)

  7. 通过执行以下操作,验证键空间 catalog 是否已创建:

    1. 在导航窗格中,选择 Keyspaces (键空间)

    2. 在键空间列表中,查找键空间 catalog

以下过程使用 CQL 创建键空间。

使用 CQL 创建键空间
  1. 使用以下 Amazon CloudShell 命令打开并连接到 Amazon Keyspaces。请务必使用您自己的区域更新 us-east-1

    cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl

    该命令应生成如下所示的输出。

    Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142 [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help. cqlsh current consistency level is ONE.
  2. 使用以下 CQL 命令创建键空间。

    CREATE KEYSPACE catalog WITH REPLICATION = {'class': 'SingleRegionStrategy'};

    SingleRegionStrategy使用复制系数为三,并在其所在区域的三个 Amazon 可用区之间复制数据。

    注意

    Amazon Keyspaces 默认所有输入为小写,除非括在引号中。

  3. 验证键空间是否已创建。

    SELECT * from system_schema.keyspaces;

    此命令的输出应与此类似。

    cqlsh> SELECT * from system_schema.keyspaces; keyspace_name | durable_writes | replication -------------------------+----------------+------------------------------------------------------------------------------------- system_schema | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} system_schema_mcs | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} system | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} system_multiregion_info | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} catalog | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} (5 rows)

以下过程使用创建密钥空间。 Amazon CLI

要使用创建密钥空间 Amazon CLI
  1. 要确认您的环境已设置完毕,可以在中运行以下命令 CloudShell。

    aws keyspaces help
  2. 使用以下 Amazon CLI 语句创建密钥空间。

    aws keyspaces create-keyspace --keyspace-name 'catalog'
  3. 使用以下 Amazon CLI 语句验证您的密钥空间是否已创建

    aws keyspaces get-keyspace --keyspace-name 'catalog'

    此命令的输出应类似于此示例。

    { "keyspaceName": "catalog", "resourceArn": "arn:aws:cassandra:us-east-1:123SAMPLE012:/keyspace/catalog/", "replicationStrategy": "SINGLE_REGION" }

创建表

表是组织和存储数据的位置。表的主键决定了数据在表中的分区方式。主键由一个必需的分区键和一个或多个可选的聚类列组成。组成主键的组合值在表的所有数据中必须是唯一的。有关表的更多信息,请参阅以下主题:

创建表时,应指定以下内容:

  • 表的名称。

  • 表中每一列的名称和数据类型。

  • 表的主键。

    • 分区键 – 必需

    • 聚类列 – 可选

使用以下步骤创建包含指定列、数据类型、分区键和聚类列的表。

以下过程创建包含如下列和数据类型的表 book_awards

year int award text rank int category text book_title text author text publisher text
使用控制台创建表
  1. 登录并打开 Amazon Keyspaces 控制台,网址为 https://console.aws.amazon.com/keyspaces/home。 Amazon Web Services Management Console

  2. 在导航窗格中,选择 Keyspaces (键空间)

  3. 选择 catalog 作为要在其中创建此表的键空间。

  4. 选择创建表

  5. Table name (表名称) 框中,输入 book_awards 作为表的名称。

    名称限制:

    • 名称不能为空。

    • 允许的字符:字母数字字符和下划线 (_)。

    • 最大长度为 48 个字符。

  6. Columns (列) 部分中,为要添加到此表的每一列重复以下步骤。

    添加以下列和数据类型。

    year int award text rank int category text book_title text author text publisher text
    1. 名称 – 输入列的名称。

      名称限制:

      • 名称不能为空。

      • 允许的字符:字母数字字符和下划线 (_)。

      • 最大长度为 48 个字符。

    2. 类型 – 在数据类型列表中,为此列选择数据类型。

    3. 要添加另一列,请选择添加列

  7. 选择awardyear作为分区键下的分区键。每个表都需要一个分区键。分区键可以由一列或多列构成。

  8. 添加categoryrank作为聚类列。聚类列是可选的,决定着每个分区内的排序顺序。

    1. 要添加聚类列,请选择 Add clustering column (添加聚类列)

    2. 在 “列” 列表中,选择类别。在 Order (顺序) 列表中,选择 ASC (升序) 按照升序对此列中的值进行排序。(选择 DESC (降序) 可按降序排列。)

    3. 然后选择添加聚类列并选择排名

  9. 表设置部分中,选择默认设置

  10. 选择创建表

  11. 验证表是否已创建。

    1. 在导航窗格中,选择

    2. 确认您的表位于表列表中。

    3. 选择表的名称。

    4. 确认所有列和数据类型都正确无误。

      注意

      列的顺序可能与添加到表中的顺序不同。

此过程使用 CQL 创建包含以下列和数据类型的表。yearaward列用categoryrank作为聚类列构成分区键。

year int award text rank int category text book_title text author text publisher text
使用 CQL 创建表
  1. 使用以下 Amazon CloudShell 命令打开并连接到 Amazon Keyspaces。请务必使用您自己的区域更新 us-east-1

    cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl

    该命令应生成如下所示的输出。

    Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142 [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help. cqlsh current consistency level is ONE.
  2. 在键空间提示符 (cqlsh:keyspace_name>) 处,通过在命令窗口中输入以下代码来创建表。

    CREATE TABLE catalog.book_awards ( year int, award text, rank int, category text, book_title text, author text, publisher text, PRIMARY KEY ((year, award), category, rank) );
    注意

    ASC 是默认的聚类顺序。也可以指定 DESC 按降序排列。

    请注意,yearaward列构成了分区键。然后,categoryrank是按升序排序的聚类列 (ASC)。

  3. 验证表是否已创建。

    SELECT * from system_schema.tables WHERE keyspace_name='catalog.book_awards' ;

    输出应如下所示:

    keyspace_name | table_name | bloom_filter_fp_chance | caching | cdc | comment | compaction | compression | crc_check_chance | dclocal_read_repair_chance | default_time_to_live | extensions | flags | gc_grace_seconds | id | max_index_interval | memtable_flush_period_in_ms | min_index_interval | read_repair_chance | speculative_retry ---------------+------------+------------------------+---------+-----+---------+------------+-------------+------------------+----------------------------+----------------------+------------+-------+------------------+----+--------------------+-----------------------------+--------------------+--------------------+------------------- (0 rows)>
  4. 验证表的结构。

    SELECT * FROM system_schema.columns WHERE keyspace_name = 'catalog' AND table_name = 'book_awards';

    此语句的输出应类似于此示例。

    keyspace_name | table_name | column_name | clustering_order | column_name_bytes | kind | position | type ---------------+-------------+-------------+------------------+------------------------+---------------+----------+------ catalog | book_awards | year | none | 0x79656172 | partition_key | 0 | int catalog | book_awards | award | none | 0x6177617264 | partition_key | 1 | text catalog | book_awards | category | asc | 0x63617465676f7279 | clustering | 0 | text catalog | book_awards | rank | asc | 0x72616e6b | clustering | 1 | int catalog | book_awards | author | none | 0x617574686f72 | regular | -1 | text catalog | book_awards | book_title | none | 0x626f6f6b5f7469746c65 | regular | -1 | text catalog | book_awards | publisher | none | 0x7075626c6973686572 | regular | -1 | text (7 rows)

    确认所有列和数据类型均符合预期。列的顺序可能与 CREATE 语句中的顺序不同。

此过程使用创建包含以下列和数据类型的表 Amazon CLI。yearaward列用categoryrank作为聚类列构成分区键。

year int award text rank int category text book_title text author text publisher text
要使用创建表 Amazon CLI

以下命令可创建一个名为 book_awards 的表。该表的分区键由 yearaward 两列组成,聚类键由 categoryrank 两列组成,两个聚类列均使用升序排序。(为了便于阅读,本节中的 table create 命令被分成不同的行。)schema-definition

  1. 您可以使用以下语句创建表。

    aws keyspaces create-table --keyspace-name 'catalog' \ --table-name 'book_awards' \ --schema-definition 'allColumns=[{name=year,type=int},{name=award,type=text},{name=rank,type=int}, {name=category,type=text}, {name=author,type=text},{name=book_title,type=text},{name=publisher,type=text}], partitionKeys=[{name=year},{name=award}],clusteringKeys=[{name=category,orderBy=ASC},{name=rank,orderBy=ASC}]'

    该命令的输出结果如下。

    { "resourceArn": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/catalog/table/book_awards" }
  2. 要确认表的元数据和属性,您可以使用以下命令。

    aws keyspaces get-table --keyspace-name 'catalog' --table-name 'book_awards'

    此命令将返回以下输出。

    { "keyspaceName": "catalog", "tableName": "book_awards", "resourceArn": "arn:aws:cassandra:us-east-1:123SAMPLE012:/keyspace/catalog/table/book_awards", "creationTimestamp": "2024-07-11T15:12:55.571000+00:00", "status": "ACTIVE", "schemaDefinition": { "allColumns": [ { "name": "year", "type": "int" }, { "name": "award", "type": "text" }, { "name": "category", "type": "text" }, { "name": "rank", "type": "int" }, { "name": "author", "type": "text" }, { "name": "book_title", "type": "text" }, { "name": "publisher", "type": "text" } ], "partitionKeys": [ { "name": "year" }, { "name": "award" } ], "clusteringKeys": [ { "name": "category", "orderBy": "ASC" }, { "name": "rank", "orderBy": "ASC" } ], "staticColumns": [] }, "capacitySpecification": { "throughputMode": "PAY_PER_REQUEST", "lastUpdateToPayPerRequestTimestamp": "2024-07-11T15:12:55.571000+00:00" }, "encryptionSpecification": { "type": "AWS_OWNED_KMS_KEY" }, "pointInTimeRecovery": { "status": "DISABLED" }, "defaultTimeToLive": 0, "comment": { "message": "" }, "replicaSpecifications": [] }

要对表中的数据执行 CRUD(创建、读取、更新和删除)操作,请继续执行教程步骤 2:创建、读取、更新和删除数据 (CRUD)