概述
Apache Cassandra 以及DynamoDB 都是非常流行的分布式存储技术,这2个产品都在很多应用以及生产环境中得到了成功的使用。
在Instaclustr(一个公司),我们强烈依赖Apache Cassandra以及Apache Kafka.我们的客户群里非常的广泛,他们的体量以及公司的成熟度遍及各个层次,许多客户在选择Cassandra还是DynamoDB前已经做过了很重要的评估练习,还有一些客户已经将自己的应用从DynamoDB迁移到Cassandra之上了。
这篇博客提取了我们的客户选择Apache Cassandra的5个主要原因。
原因1:写入DynamoDB的成本巨大
对于许多实用的case来说,实用Apache Cassandra的成本比DynamoDB节省很多,这些主要是一些对于一些业务偏写入的客户来说.(在你的AWS的账单上可以显示的很清楚的是)写入成本是读取成本的5倍.对于Apache Cassandra来说写入比读取的成本低(主要是在你对使用的资源消耗上可以反映)。
注意:这点主要是AWS的自费模式以及Cassandra的原理决定上述情况。
原因2:移植性
我们知道DynamoDB只是存在于AWS平台,别的地方没有提供的,对于多租户的sass平台产品,只提供一个单独的实列来说,那么全部放在AWS平台来说并不是什么大问题;然而很多客户基于很多原因希望能够有一个客户自己定制的安装以及管理的环境(一般是一些大客户)。选择Cassandra允许你的程序在任何Linux的平台上面运行。
原因3:架构设计无需关心计价模型
DynamoDB的计价方式是很复杂的,她有2套计价模型以及很多计价维度,使用了错误的计价模型或者你们的架构在设计的时候没有考虑产品计价可能会导致成本有数量级的差异。从另一个角度看,对程序来说可能是一个无关紧要的修改可能会造成极大的成本消耗;而使用cassandra的话你的可以控制自己的基础设施以及管理你自己费用开销,一旦你测试完成并确定了你的架构设计,你的开销基本上就是确定了的。
原因4:多Region的功能
Cassandra是第一个提供多region的多活nosql系统,虽然DynamoDB 提供了global table的功能,但是和cassandra对比的话还是有一些关键限制.多数限制中最重要的可能就是对于一个已有的global table你并不能添加副本(replicas),所以如果你设置好了2个region然后决定添加一个新的region你需要从一个空的表中进行重建.但是对于cassandra来说,你需要添加一个region是很平常的操作,且是完全的online操作.另一个比较重要的限制是对于global table的话,dynamodb只提供最终一致性,但是cassandra的可调一致性可以在多region中提供强一致(whereas Apache Cassandra’s tunable consistency levels can enforce strong consistency across multiple regions.).
原因5:避免 Vendor Lock-In
Cassandra是完全的开源软件,由Apache 基金会决定他的管理和开发,她的开发以及管理主要是基于社区利益的,可以在任何的云平台以及内部平台运行。DynamoDB 是AWS的一款解决方案她将你锁定在DynamoDB而且将你的应用锁定在AWS的生态体系之中。
虽然这是人们选择cassandra的主要原因但是也有很多在功能上差异原因而选择cassandra比如:
- DynamoDB的容量受partition限制,每个分区最大的是1千的写容量以及3千的读容量。Cassandra的容量分布在每个节点上面,每个节点通常提供一个高于此数量级的分区限制;
- Cassandra的CQL提供了一个类似sql的且对于开发者来说容易学习使用的方式;
- DynamoDB 只允许单值分区以及排序,但是cassandra允许多值排序,这是一个较小的区别,但是cassandra这样可以降低应用复杂性;
- Cassandra提供了聚合函数,在某些case下是很有效的;
入群邀约
为了营造一个开放的 Cassandra 技术交流环境,社区建立了微信群公众号和钉钉群,为广大用户提供专业的技术分享及问答,定期开展专家技术直播,欢迎大家加入。另外阿里云提供免费Cassandra试用:https://www.aliyun.com/product/cds
Tips
本文翻译自:https://www.instaclustr.com/top-5-reasons-to-choose-apache-cassandra-over-dynamodb/