使用 Amazon Keyspaces 运维 Apache Cassandra 兼容数据库 - 以无服务器方式开启广域分布式 DB
以无服务器方式运维 Apache Cassandra 兼容的宽列数据库。介绍按需容量与预置容量的选型以及分区键设计。
Keyspaces 的特点及与 Cassandra 的区别
Keyspaces 是一项兼容 Apache Cassandra 的托管数据库服务。您可以使用 CQL 创建表、读写数据,并直接使用现有的 Cassandra 驱动程序(如 DataStax Java Driver)。无需再进行 Cassandra 集群运维中所需的节点管理、补丁应用、修复处理和压缩调优。但并非所有 Cassandra 功能都受支持,部分轻量级事务(LWT)、用户自定义函数和物化视图等尚不支持。迁移前需确认兼容性矩阵,验证应用程序使用的 CQL 功能是否受支持。
容量模式与分区设计
按需模式根据请求量自动扩缩,无需事先规划容量,适用于流量模式难以预测的场景或开发测试环境。预置模式需预先指定读写容量单位,并可通过 Auto Scaling 自动调整,适用于流量稳定的生产环境,成本效率更高。分区键的设计与 Cassandra 同样重要,应选择基数高且访问均匀分布的键。热分区会导致限流,因此对于时序数据,需要将时间戳与桶 ID 组合等方式来分散访问。
安全性与备份
Keyspaces 默认启用静态加密,可选择 AWS 托管密钥或客户托管密钥(KMS)。传输中的数据通过 TLS 加密。访问控制通过 IAM 策略管理,支持表级别的细粒度权限设置。启用时间点恢复(PITR)后,可将表恢复到过去 35 天内任意秒级时间点,有效应对误删数据或应用程序 Bug 导致的数据损坏。PITR 会产生额外费用,但强烈建议在生产环境中启用。 如需系统学习 Keyspaces 的数据建模,可参考技术书籍 (Amazon)。
Keyspaces 的定价
按需模式每 100 万读取单位约 0.297 美元,每 100 万写入单位约 1.4846 美元。预置模式每读取容量单位(RCU)月费约 0.000742 美元,每写入容量单位(WCU)月费约 0.000371 美元。与 DynamoDB 相比,定价体系基本相同,但 Keyspaces 使用 CQL 访问,因此现有 Cassandra 工作负载的迁移成本(应用程序改动)更低。存储费用为每 GB 月费约 0.25 美元,启用 PITR 后会产生额外存储费用。
总结
Keyspaces 是一款可通过 Cassandra 兼容 CQL 访问的无服务器数据库。它消除了集群管理负担,按需容量模式按使用量计费。适用于将现有 Cassandra 工作负载迁移至 AWS,或新建适合 Cassandra 数据模型的工作负载。