gpt4 book ai didi

node.js - Cassandra 或 mongodb 或其他大型在线销售网站

转载 作者:可可西里 更新时间:2023-11-01 09:57:23 28 4
gpt4 key购买 nike

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

网站后端是用 node.js 编写的,我们使用 mongoose 作为 ODM。

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

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

谢谢!

最佳答案

Cassandra 是一个设计非常漂亮的数据库,可以满足很多场景。 MongoDB 也是一个非常好的数据库引擎。因此,让我为您比较几个主要要点。

始终开启系统

当您需要在多个数据中心提供 24x7 操作时,Cassandra 真的很棒。如果你有一个以上的数据中心,每个数据中心都有多台服务器,那么 Cassandra 非常适合你。 Cassandra 可以将写入同步到多个数据中心,并在复杂的设置中保持所需的数据一致性。恢复和重新同步也很容易。

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

可扩展性

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

数据的非规范化

使用 Cassandra,如果您创建一个结构来反射(reflect)您需要从数据中获取的内容,那么您的写入和读取速度会非常快。没有查询语言(好吧,有,但不完全是 SQL)可用于使用聚合、分组等重组您的结果集。是的,有些事情是可行的,有些则不是 -这是非常特定于 Cassandra 数据模型的。您将不得不自己实现很多事情并将结果写入数据库 - 即聚合计数器、不同分组等。

相比之下,MongoDB 易于使用、更容易学习且更灵活 - 无论是对于开发(随着知识曲线/努力的发展)还是对于业务逻辑的实现(随着时间/努力的考虑)。这在某种程度上是 MongoDB 有 ORM 引擎而 Cassandra 仅有一对(非常有限)的原因。


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

如果您很快需要存储数 TB 的数据,跨多个数据中心部署您的应用程序,同时接受实现相同功能和维护类似功能的额外工作成本,那么 Cassandra 是您的绝佳选择。

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


为了阻止每个人指出我应该比较其他一些特征或指出这两者之间的其他一些差异 - 这只是对我认为与问题相关的事情的粗略、高级概述,而不是全面比较或分析问题。但请随时指出我遗漏的内容,我很乐意在此答案中包含新内容...

关于node.js - Cassandra 或 mongodb 或其他大型在线销售网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23832667/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com