【问题标题】:What is difference between DynamoDB and ScyllaDBDynamoDB 和 ScyllaDB 有什么区别
【发布时间】:2022-08-24 04:33:00
【问题描述】:

看起来 DynamoDB 和 ScyllaDB 在功能上完全相似,它们只是为键、二级索引等使用了不同的名称。

我知道的唯一区别是成本。 DynamoDB 对吞吐量收费,而 ScyllaDB 对存储大小收费。

所以想知道什么时候使用哪个数据库。

    标签: nosql amazon-dynamodb scylla


    【解决方案1】:

    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 是您的软件要么自己安装,要么预先部署,但在任何一种情况下,你都会得到一个自己的集群(它不与其他客户共享),你需要明确地选择它的大小——通过节点的数量,而不是请求的数量。

    【讨论】:

      【解决方案2】:

      这取决于一系列因素,例如在某些项目中,Team 选择了 DynamoDB 而不是 ScyllaDB,因为他们使用来自同一云提供商的所有其他服务,并且当他们选择 DynamoDB 而不是 ScyllaDB 时,集成/支持/成本非常好。

      以下是一些需要考虑的事项(在 DynamoDB 和 ScyllaDB 之间进行选择之前的高级别的)

      动态数据库

      • 非常适合需要存储大量数据但不知道会有多少数据的项目,因此您需要数据库来增加其存储容量以及用户数量,而无需花费额外的资金。

      ScyllaDB

      • Scylla 非常适合必须以始终如一的低延迟读取或写入键控数据的高吞吐量场景。

      【讨论】:

      • 这是否意味着必须事先配置 Scylla 数据存储?
      • Scylla 使用节点集群,您可以在需要更多存储和/或计算能力来处理请求时添加更多节点。但是,您需要考虑此集群的大小以及何时扩展它,尽管 Scylla 确实有工具可以帮助您做到这一点,但它不像 DynamoDB 中那么自动化。
      【解决方案3】:

      披露:我为 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 接口。它提供了更大的灵活性和性能。

      【讨论】:

      • “这意味着它有一个用于均匀分布数据的分区键,还有一个用于数据排序的集群键,这是 DynamoDB 所缺乏的” DynamoDB 还具有分区键和排序键,这正是你提到的
      • 你是对的。我什至查看过它以仔细检查我的答案,但我忘了编辑我的答案。现在修复。
      猜你喜欢
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 2010-10-02
      • 2011-12-12
      相关资源
      最近更新 更多