用途:Alternator 是 ScyllaDB 的 DynamoDB 兼容 API,使用与 Amazon DynamoDB 相同的线协议和大部分相同的客户端 SDK,目标是让为 DynamoDB 编写的应用基本无需修改即可运行在 ScyllaDB 上。它不是独立数据库,Alternator 表本质上是普通 ScyllaDB 表,每张表位于自己的 keyspace 中,DynamoDB 的 hash/sort key 对应 ScyllaDB 的 partition/clustering key。
适用场景:将现有 DynamoDB 应用迁移到 ScyllaDB;使用 boto3、aws-sdk-java 等 AWS SDK 客户端并把 endpoint_url 指向 ScyllaDB 集群;询问 alternator_port、alternator_write_isolation 或 DynamoDB 风格建表;需要了解哪些真实 DynamoDB 行为可以延续。数据进入 ScyllaDB 后的模式设计(分区键、聚簇、反模式)应参考 scylladb-data-modeling 技能。
启用方式:Alternator 默认关闭,需配置两个选项,且第二个没有默认值——只设置 alternator_port 而不设置 alternator_write_isolation 会启动失败并报错。配置示例:alternator_port: 8000 与 alternator_write_isolation: only_rmw_uses_lwt(也可为 always、forbid、unsafe)。等价命令行参数:--alternator-port=8000 --alternator-write-isolation=only_rmw_uses_lwt。本地 Docker 测试:docker run --name scylla -d -p 8000:8000 scylladb/scylla:latest --alternator-port=8000 --alternator-write-isolation=always。默认不启用认证,任何签名或未签名请求都会被接受,切勿在本地测试之外这样部署。
参考文件:write-isolation-policies 说明四种写隔离策略的成本、防护对象与推荐默认值;connecting-and-load-balancing 说明 Alternator 为何没有 DynamoDB 那样的单一端点、认证如何映射到 CQL 角色、以及如何发现节点做客户端负载均衡;compatibility-differences 说明与真实 DynamoDB 的行为差异(一致性映射、scan 顺序、批量限制、属性存储、tablets、表删除),迁移时需注意。
本地测试示例:pip install boto3,然后用 boto3.resource('dynamodb', endpoint_url='http://localhost:8000', region_name='None', aws_access_key_id='None', aws_secret_access_key='None')。这些占位凭据仅因本地测试集群未启用认证,真实集群不可如此。
向量搜索扩展:ScyllaDB Cloud 提供 Alternator 专用扩展,可直接对 DynamoDB 风格条目属性做近似最近邻(ANN)搜索,无需额外客户端库。若用户通过 DynamoDB API 而非 CQL 做相似性搜索,可指向该扩展。
限制:资料未提供价格、性能数据或完整兼容性清单,具体行为差异需查阅 compatibility-differences 参考文件。