Cassandra或mongodb或大型在线销售网站的其他东西

use*_*343 2 mongoose mongodb cassandra node.js cassandra-2.0

目前我们使用mongodb作为大型在线销售网站的主要商店,目前我们专注于多台机器之间的大规模可扩展性.

站点后端用node.js编写,我们使用mongoose作为ODM.

我可以看到很多关于真棒cassandra DB的博客文章,我开始考虑切换到cassandra.但我仍然不确定这是否是一个非常好的决定,因为我没有为cassandra和node.js找到任何好的ODM/ORM库(并且编写原始查询可能会很痛苦.另外编写经过良好测试的ORM/ODM也可以耗时的任务).所以我不确定这次切换后我会得到多少好处.我们使用弹性搜索作为搜索引擎,它与mongodb结合使用非常好,而且我要求我的自己也会对cassandra做得很好.

如果您对此有任何体验,那将非常有帮助.

谢谢!

Łuk*_*nek 7

Cassandra是一个设计精美的数据库,可以满足很多场景.MongoDB也是一个非常好的数据库引擎.那么,让我为您比较几个主要要点.

永远在系统上

当您需要在多个数据中心提供全天候运营时,Cassandra非常棒.如果您有多个数据中心,每个数据中心都有多个服务器,那么Cassandra非常适合您.Cassandra可以将写入同步到多个数据中心,并在复杂的设置中保持所需的数据一致性.恢复和重新同步也很容易.

另一方面,MongoDB易于操作.如果你有一个数据中心,只有几个服务器,那么它可能是完美的选择(尽管全局写锁可能会随着时间的推移而变得很痛苦).在简单的部署中,它易于维护和监控.

可扩展性

继续上述陈述 - Cassandra具有线性可扩展性.从字面上看,群集的大小没有限制.您的写入将始终保持快速,而读取可能会随着时间的推移变得更加复杂 - 具体取决于数据的结构.

数据的非规范化

如果您要创建一个能够反映您需要从数据中获取的内容的结构,那么使用Cassandra可以非常快速地进行写入和读取.您可以使用聚合,分组等来重新组织结果集,但是,有些事情是可行的而有些则不是 - 这对于Cassandra数据非常具体,因此没有查询语言(好吧,但是它不完全是SQL).模型.你必须自己实现很多东西并将结果写入数据库 - 即聚合的计数器,不同的分组等.

相比之下,MongoDB易于使用,更易于学习和更灵活 - 既可用于开发(如知识曲线/工作量),也可用于业务逻辑的实现(考虑时间/精力).那就是 - 有一种原因 - 为什么MongoDB有ORM引擎,而Cassandra只有几个(非常有限).


总结一下 - 两个DB都非常好......如果你接受它们的局限性.如果你只有 100GB的数据并且需要灵活,易于实现的数据库引擎,那么我会坚持使用MongoDB,或者看看RethinkDB,它具有非常相似的模型和方式(在我个人看来)更好的集群/数据中心复制实现.

如果您需要尽快存储TB数据,将应用程序部署到多个数据中心,同时接受实施相同功能和维护类似功能的额外工作成本,Cassandra对您来说是一个很好的选择.

不要个人认为我在描述您的数据集时使用了这个词.是的,它并不大 - 我的公司这些天存储超过20 TB ......所以是的,100GB真的不是那么多......


为了阻止每个人指出我应该比较一些其他功能或指出这两者之间的一些其他差异 - 这只是我认为与问题相关的事情的粗略,高级概述,而不是对问题的完全比较或分析.但请随意指出我错过的内容,我很乐意在这个答案中加入新内容......