功能差异:亚马逊 Keyspaces 与 Apache Cassandra - Amazon Keyspaces (for Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

功能差异:亚马逊 Keyspaces 与 Apache Cassandra

下面是 Amazon Keyspaces 与 Apache Cassandra 之间的功能差异。

Apache Cassandra API、操作和数据类型

Amazon Keyspaces 支持所有常用的 Cassandra 数据层面操作,例如创建键空间和表、读取数据和写入数据。要查看当前支持的项,请参阅Amazon Keyspaces 中支持的 Cassandra API、操作、函数和数据类型

异步创建和删除键空间和表

Amazon Keyspaces 异步执行数据定义语言 (DDL) 操作,例如创建和删除键空间和表。要了解如何监控资源的创建状态,请参阅。在亚马逊 Keyspaces 中创建键空间在亚马逊 Keyspaces 中创建表. 有关 CQL 语言参考中的 DDL 语句列表,请参阅亚马逊Keyspaces 中的 DDL 语句(数据定义语言).

身份验证和授权

Amazon Keyspaces (for Apache Cassandra) 使用Amazon Identity and Access Management(IAM) 用于用户身份验证和授权,并支持与 Apache Cassandra 等效的授权策略。因此,Amazon Keyspaces 不支持 Apache Cassandra 的安全配置命令。

Batch

Amazon Keyspaces 支持未记录的批处理命令,批处理中最多包含 30 条命令。批处理中仅允许无条件的 INSERTUPDATEDELETE 命令。不支持记录的批处理。

群集配置

Amazon Keyspaces 是无服务器的,因此没有要配置的集群、主机或 Java 虚拟机 (JVM)。Amazon Keyspaces Cassandra 的压缩、缓存、垃圾回收和绽放筛选设置不适用于 Amazon Keyspaces,如果指定,则将被忽略。

CQL 查询吞吐量调整

Amazon Keyspaces 支持每秒每个 TCP 连接 3,000 次 CQL 查询,而驱动程序可建立的连接数不受限。

大多数开源的 Cassandra 驱动程序都建立了一个与 Cassandra 的连接池,并对该连接池进行负载平衡查询。Amazon Keyspaces 向驱动程序公开 9 个对等 IP 地址,大多数驱动程序的默认行为是建立到每个对等 IP 地址的单个连接。因此,使用默认设置的驱动程序的最大 CQL 查询吞吐量将是每秒 27,000 次 CQL 查询。

要增大此数字,我们建议增加驱动程序在其连接池中维护的每个 IP 地址的连接数。例如,如果将每个 IP 地址的最大连接数设置为 2,则将使驱动程序的最大吞吐量增加一倍,达到每秒 54000 次 CQL 查询。

空字符串

Amazon Keyspaces 支持空字符串和 blob 值。但是,不支持空字符串和 blob 作为聚类列值。

轻量级事务

Amazon Keyspaces (for Apache Cassandra) 完全支持对比和设置功能INSERTUPDATE, 和DELETE命令,称为轻量级事务(LWT)在阿帕奇·卡桑德拉。作为无服务器产品,Amazon Keyspaces(针对 Apache Cassandra)可提供任何规模(包括轻量级事务)的一致性能。使用 Amazon Keyspaces,使用轻量级事务不会造成性能损失。

负载均衡

这些区域有:system.peers表条目对应于 Amazon Keyspaces 负载均衡器。要获得最佳结果,我们建议使用轮询负载平衡策略并调整每个 IP 的连接数以满足应用程序的需求。

分页

Amazon Keyspaces 根据它读取的用于处理请求的行数而不是结果集中返回的行数对结果进行分页。因此,某些页面包含的行可能少于您在 PAGE SIZE 中为筛选查询指定的行数。此外,Amazon Keyspaces 在读取 1 MB 数据后自动对结果进行分页,以便为客户提供一致的单位数毫秒读取性能。有关更多信息,请参阅 在亚马逊 Keyspaces 中对结果进行分页

分区者

亚马逊 Keyspaces 为您提供了使用亚马逊 Keyspaces 的选择DefaultPartitioner或者 Cassandra 兼容RandomPartitioner. 使用亚马逊 Keyspaces,您可以安全地更改账户的分区程序,而无需重新加载您的亚马逊 Keyspaces 数据。客户下次连接时将自动看到新的分区程序设置。

预准备语句

Amazon Keyspaces 支持将准备好的语句用于数据操作语言 (DML) 操作,例如读取和写入数据。Amazon Keyspaces 目前不支持使用预准备语句执行数据定义语言 (DDL) 操作(如创建表和键空间)。DDL 操作必须在准备好的语句之外运行。

范围删除

亚马逊 Keyspaces 支持删除范围内的行。范围是分区内的一组连续行。您可以使用 WHERE 子句在 DELETE 操作中指定范围。您可以将范围指定为整个分区。

此外,您可以通过使用关系运算符(例如 “>”、“<”)或者通过包含分区键并省略一个或多个聚类列来指定范围作为分区内连续行的子集。使用 Amazon Keyspaces,您可以在单个操作中删除范围内最多 1,000 行。此外,范围删除是原子的,但不是孤立的。

系统表

Amazon Keyspaces 填充 Apache 2.0 开源 Cassandra 驱动程序所需的系统表。对客户端可见的系统表包含经过身份验证的用户所特有的信息。系统表完全由 Amazon Keyspaces 控制,并且是只读的。

需要对系统表进行只读访问,您可以使用 IAM 访问策略对其进行控制。有关更多信息,请参阅 使用策略管理访问。您必须为系统表定义基于标签的访问控制策略,具体取决于是否使用AmazonSDK 或 Cassandra 查询语言 (CQL) API 通过 Cassandra 驱动程序和开发人员工具调用。要了解有关系统表基于标记的访问控制的详细信息,请参阅 基于标签的亚马逊Keyspaces 资源访问权限.

如果您使用访问亚马逊 KeyspacesAmazon VPC 终端节点,你会看到system.peersAmazon Keyspaces 有权查看的每个 Amazon VPC 终端节点的表。因此,你的 Cassandra 司机可能会发出警告消息关于控制节点本身system.peers表。您可以放心地忽略此警告。