DynamoDB和ScyllaDB有什么区别?

3

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

我知道的唯一区别是收费方式。DynamoDB按吞吐量计费,而ScyllaDB按存储大小计费。

因此,想知道何时使用哪个数据库。

3个回答

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

以下是在选择DynamoDB和ScyllaDB之间考虑的一些要点(在高层面上)

DynamoDB

  • 非常适合需要存储大量数据但不知道有多少用户的项目,在不必花费额外资金的情况下,您需要数据库随着用户数量增加而增加其存储容量。

ScyllaDB

  • Scylla非常适用于需要以一致低延迟读取或写入键控数据的高吞吐量场景。

这是否意味着对于Scylla数据存储必须事先进行配置? - Mohit Jain
2
Scylla使用节点集群,您可以根据需要添加更多节点以处理请求所需的存储和/或计算能力。但是,您需要考虑此集群的大小以及何时扩展它,尽管Scylla确实有帮助您执行此操作的工具,但它比DynamoDB的自动化程度要低。 - Nadav Har'El

2
DynamoDB和ScyllaDB都受到Cassandra的启发,所以你关于“功能相似”和它们“使用不同的键名称”是正确的(例如,Cassandra和Scylla称之为“clustering keys”,而DynamoDB称之为“sort keys”(有时称为“range keys”))。
然而,它们的能力和性能权衡并不完全相同。几年前,我写了一篇博客文章《比较CQL和DynamoDB API》,比较了CQL(Cassandra查询语言,也是Scylla本地使用的语言)和DynamoDB API在能力和性能方面的一些有趣差异。该博客文章解释了一些不同之处,例如不同的网络协议(具有不同的优缺点)、拓扑感知和“愚蠢”的客户端,以及也许最有趣的一个问题 - 非常不同的写入模型:Scylla专注于非常高效的CRDT(只写)操作,而在DynamoDB中,每次写入也可能涉及读取 - 更强大但速度较慢(Scylla也具备此功能,通过“LWT”(轻量级事务))。
由于Scylla和DynamoDB API之间的相似之处,我们实际上能够在ScyllaDB中完全(或几乎完全)支持DynamoDB API - 因此ScyllaDB现在也支持DynamoDB API(请见ScyllaDB Alternator)。
除了以上功能差异之外,这两个产品最明显的区别在于它们在实践中的部署和使用方式:DynamoDB是像其他Amazon产品一样,在AWS上提供的服务,您按请求付费,而ScyllaDB是软件,您可以自行安装,或者预先部署,但无论哪种情况,您都将获得自己的集群(它不与其他客户共享),您需要显式选择其大小 - 节点数,而不是请求数量。

1

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


1
这意味着它具有用于数据均匀分布的分区键,但也具有用于数据排序的聚集键,而 DynamoDB 则缺乏此功能。 DynamoDB 也有分区键和排序键,可以实现您所提到的功能。 - Mohit Jain
你说得对。我甚至去查了一遍以双重检查我的答案,但我忘记编辑我的答案了。现在正在修复。 - Peter Corless

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接