Amazon Keyspaces
兼容 Apache Cassandra 的全托管数据库,可直接使用 CQL (Cassandra Query Language) 并提供无服务器的可扩展性和可用性
概述
Amazon Keyspaces (for Apache Cassandra) 是一项提供 Apache Cassandra 兼容 CQL API 的全托管数据库服务。可直接使用现有的 Cassandra 驱动程序和工具,免除 Cassandra 集群运维 (节点管理、补丁、备份、扩缩容) 的负担。存储自动跨 3 个可用区复制,提供 99.999% 的可用性 SLA。提供按需容量模式和预置容量模式两种计费模型。
Cassandra 兼容性及其边界
Keyspaces 支持 CQL (Cassandra Query Language) 的大部分功能,但并非所有 Cassandra 功能都可用。支持的功能包括:表的 CRUD 操作、二级索引、TTL (Time to Live)、静态列、计数器、用户自定义类型 (UDT)、轻量级事务 (LWT)。不支持的功能包括:物化视图、SASI 索引、用户自定义函数 (UDF)、用户自定义聚合 (UDA)、批处理日志、Thrift API。迁移前必须使用 cqlsh 对 Keyspaces 执行现有的 Schema 和查询以验证兼容性。从 Cassandra 迁移可使用 AWS DMS,支持全量加载和 CDC (变更数据捕获) 持续复制。迁移期间可采用同时向源 Cassandra 集群和 Keyspaces 写入的双写方式,最大限度减少停机时间。Keyspaces 遵循 Cassandra 3.11 的 CQL 规范,因此无法使用 Cassandra 4.x 及更高版本的新功能。
与 DynamoDB 的选型标准
Keyspaces 和 DynamoDB 都是全托管 NoSQL 数据库,但在数据建模和查询灵活性方面有所不同。DynamoDB 是键值/宽列存储,需要预先围绕分区键和排序键设计访问模式。GSI (全局二级索引) 可支持额外的访问模式,但每个索引会产生额外成本。Keyspaces 是宽列存储,通过分区键和聚簇列实现灵活的数据建模。CQL 的表达能力优于 DynamoDB 的 PartiQL,范围查询、IN 子句、ORDER BY、ALLOW FILTERING 等操作可自然表达。选型参考:新项目采用 AWS 原生设计选 DynamoDB,迁移现有 Cassandra 工作负载选 Keyspaces。DynamoDB 与 AWS 生态系统的集成 (Streams、DAX、Global Tables、PartiQL) 极为丰富,与 Lambda 触发器和 EventBridge Pipes 的联动也很便捷。Keyspaces 的优势在于 Cassandra 生态兼容性 (驱动程序、ORM、工具),在重视多云或混合环境可移植性时更具优势。
容量模式选择与成本优化
Keyspaces 的容量模式与 DynamoDB 类似,分为按需和预置两种。按需模式按请求数完全按量计费,适合流量模式难以预测的工作负载和开发环境。预置模式预先设定读写容量单位,比按需模式便宜约 20-30%。启用 Auto Scaling 后,容量可根据流量波动自动调整。成本优化要点:利用 TTL 自动删除数据非常有效。对日志数据、会话数据等一定时间后不再需要的数据设置 TTL,可抑制存储成本增长。时间点恢复 (PITR) 启用后会增加约 20% 的存储费用,但对于从误操作导致的数据丢失中恢复不可或缺,生产环境务必启用。加密可从 AWS 拥有的密钥 (免费)、AWS 托管密钥、客户托管密钥 (KMS) 三种中选择,根据合规要求灵活使用。