在 Amazon Keyspaces 中使用行 - Amazon Keyspaces(针对 Apache Cassandra)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

在 Amazon Keyspaces 中使用行

本节提供有关在 Amazon Keyspaces (for Apache Cassandra) 中使用行的详细信息。表是 Amazon Keyspaces 中的主要数据结构,表中的数据组织为列和行。

计算 Amazon Keyspaces 中的行大小

Amazon Keyspaces (for Apache Cassandra) 提供完全托管的存储,此存储提供毫秒级读写性能,并跨多个 AWS 可用区持久存储数据。Amazon Keyspaces 会向所有行和主键列附加元数据,以支持高效的数据访问和高可用性。

本节提供有关如何估算 Amazon Keyspaces 中行的编码大小的详细信息。编码的行大小在计算您的账单和配额使用量时使用。您还应在计算表的预置吞吐容量需求时使用编码的行大小。要计算 Amazon Keyspaces 中行的编码大小,您可以使用以下准则。

  • 分区键最多可包含 2048 字节的数据。分区键中的每个键列最多需要 3 字节的元数据。这些元数据字节将计入 1 MB 行大小配额。计算行大小时,您应该假定每个分区键列都使用完整的 3 字节元数据。

  • 每个行最多可以有 850 字节的聚类列数据,每个聚类列最多需要 4 字节的元数据。这些元数据字节将计入 1 MB 行大小配额。计算行大小时,您应该假定每个聚类列都使用完整的 4 字节元数据。

  • 对于常规、非静态、非主键列,请根据数据类型使用单元格数据的原始大小。有关数据类型的更多信息,请参阅 数据类型

  • 静态列数据不计入 1 MB 的最大行大小。要计算静态列的数据大小,请参阅计算 Amazon Keyspaces 中每个逻辑分区的静态列大小

  • 为行元数据的每一行大小添加 100 字节。

编码的数据行的总大小基于以下公式:

partition key columns + clustering columns + regular columns + row metadata = total encoded size of row

请考虑以下表示例,其中所有列均为整数类型。该表有两个分区键列、两个聚类列和一个常规列。

CREATE TABLE mykeyspace.mytable(pk_col1 int, pk_col2 int, ck_col1 int, ck_col2 int, reg_col1 int, primary key((pk_col1, pk_col2),ck_col1, ck_col2));

在此示例中,我们在向表中写入行时计算数据的大小,如以下语句中所示:

INSERT INTO mykeyspace.mytable (pk_col1, pk_col2, ck_col1, ck_col2, reg_col1) values(1,2,3,4,5);

要估计此写入操作所需的总字节数,您可以使用以下步骤。

  1. 通过添加存储在 列的数据类型的字节数和元数据字节数来计算分区键列的大小。对所有分区键列重复此操作。

    1. 计算分区键 (pk_col1) 的第一列的大小:

      4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes
    2. 计算分区键 (pk_col2) 的第二列的大小:

      4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes
    3. 添加两列可获取分区键列的总估计大小:

      7 bytes + 7 bytes = 14 bytes for the partition key columns
  2. 通过为存储在列中的数据类型和元数据字节添加字节来计算聚类列的大小。对所有聚类列重复此操作。

    1. 计算聚类列 (ck_col1) 的第一列的大小:

      4 bytes for the integer data type + 4 bytes for clustering column metadata = 8 bytes
    2. 计算聚类列 (ck_col2) 的第二列的大小:

      4 bytes for the integer data type + 4 bytes for clustering column metadata = 8 bytes
    3. 添加两个列以获取聚类列的总估计大小:

      8 bytes + 8 bytes = 16 bytes for the clustering columns
  3. 添加常规列的大小。在此示例中,我们只有一个存储整数的列,这需要 4 个字节。

  4. 最后,要获取编码的总行大小,请为所有列加上字节,并为行元数据添加 100 个额外字节:

    14 bytes for the partition key columns + 16 bytes for clustering columns + 4 bytes for the regular column + 100 bytes for row metadata = 134 bytes.