【发布时间】:2022-08-24 04:33:00
【问题描述】:
看起来 DynamoDB 和 ScyllaDB 在功能上完全相似,它们只是为键、二级索引等使用了不同的名称。
我知道的唯一区别是成本。 DynamoDB 对吞吐量收费,而 ScyllaDB 对存储大小收费。
所以想知道什么时候使用哪个数据库。
标签: nosql amazon-dynamodb scylla
看起来 DynamoDB 和 ScyllaDB 在功能上完全相似,它们只是为键、二级索引等使用了不同的名称。
我知道的唯一区别是成本。 DynamoDB 对吞吐量收费,而 ScyllaDB 对存储大小收费。
所以想知道什么时候使用哪个数据库。
标签: nosql amazon-dynamodb scylla
DynamoDB 和 ScyllaDB 都受到 Cassandra 的启发,因此您对“功能相似”的看法是正确的,而且它们确实“对键使用了不同的名称”(例如,Cassandra 和 Scylla 所谓的“集群键”,称为“排序键”(或有时是 DynamoDB 中的“范围键”)。
但是,它们的功能和性能权衡并不是 100% 完全相同的。几年前,我写了一篇博客文章Comparing CQL and the DynamoDB API,比较了 CQL(Cassandra 查询语言,也由 Scylla 原生使用)与 DynamoDB 的 API 相比,在功能和性能权衡之间的一些更有趣的差异。该博客文章中解释的一些示例差异是不同的网络协议(具有不同的优点和缺点),拓扑感知与“哑”客户端,也许最有趣的是 - 一个非常不同的写入模型:Scylla 专注于非常高效的 CRDT(写入-only) 操作,而在 DynamoDB 中,每次写入也可能涉及读取 - 更强大但速度更慢(Scylla 也具有这种能力,通过“LWT”(轻量级事务))。
由于 Scylla 和 DynamoDB API 之间的相似性,我们实际上能够完全(或几乎完全)支持 ScyllaDB 中的 DynamoDB API - 所以 ScyllaDB 现在也支持 DynamoDB API(参见ScyllaDB Alternator)。
除了上述功能上的差异之外,这两种产品之间最明显的区别在于它在实践中的部署和使用方式:DynamoDB 与其他亚马逊产品一样,是 AWS 上的一项服务,您可以按请求付费,而 ScyllaDB 是您的软件要么自己安装,要么预先部署,但在任何一种情况下,你都会得到一个自己的集群(它不与其他客户共享),你需要明确地选择它的大小——通过节点的数量,而不是请求的数量。
【讨论】:
这取决于一系列因素,例如在某些项目中,Team 选择了 DynamoDB 而不是 ScyllaDB,因为他们使用来自同一云提供商的所有其他服务,并且当他们选择 DynamoDB 而不是 ScyllaDB 时,集成/支持/成本非常好。
以下是一些需要考虑的事项(在 DynamoDB 和 ScyllaDB 之间进行选择之前的高级别的)
动态数据库
ScyllaDB
【讨论】:
披露:我为 ScyllaDB 工作。
DynamoDB 是一个键值对 NoSQL 存储。 ScyllaDB 的 Alternator 接口是 DynamoDB 的 API 兼容实现。 ScyllaDB 的优势在于您可以在任何云或本地运行它; DynamoDB 仅适用于 AWS。
ScyllaDB 还有一个 CQL 接口,从技术上讲,它是一个宽列 NoSQL 存储。
编辑事实上,DynamoDB、ScyllaDB 和 Cassandra 在技术上都应该被描述为“宽列 NoSQL 存储”。或者,正如我的同事 Nadav 所描述的,“键-键-值”存储。 ScyllaDB 和 DynamoDB 都使用术语“分区键”。 ScyllaDB 将键的第二部分称为“集群键”,而 DynamoDB 将其称为“排序键”。结束编辑
我们还从客户那里听说 DynamoDB 是一个很好的起点,但随着规模扩大,可负担性受到影响。迁移到 ScyllaDB 意味着他们无需针对自己的数据支付交易成本。即,使用 DynamoDB,您查询的越多,您支付的费用就越多。这使得繁重的读/写工作负载变得非常昂贵。
所以很多可能取决于您的用例。您需要在哪里部署?您管理多少数据?你对这些数据有多努力?每秒需要维护多少次操作?
然后,使用 ScyllaDB,您可以选择哪个接口:DynamoDB API 或 CQL。通常,除非您需要与当前的 DynamoDB 工作负载保持兼容,否则我们通常建议使用 CQL 接口。它提供了更大的灵活性和性能。
【讨论】: