Java堆栈上的Cassandra与JavaScript堆栈上的Mongo-Db

Cassandra on Java stack vs Mongo Db on JavaScript stack

本文关键字:堆栈 Mongo-Db JavaScript Cassandra Java      更新时间:2023-09-26

我正在尝试比较MongoDB和Cassandra。我们的项目是基于Java的。我发现的一些差异是

Cassandra是高度可用的,与MongoDb相比,分区支持是一致的,高度可用的(分区不太好)。

MongoDb是基于文档的。Cassandra在建模数据以及将类似JSON的结构直接存储到数据中方面提供了更大的灵活性

但有人告诉我的另一个区别是Cassandra是基于Java堆栈的,而MongoDB是基于Javascript的。

从第三方用户(开发人员)的角度来看,堆栈有什么重要意义?考虑到我从事的是一个Java项目,基于Java堆栈构建的产品会给我带来额外的好处吗?如果是,那是什么?

这并不是关于Cassandra或MongoDB,而是关于系统所用语言的成熟度以及各种支持API的语言。

Cassandra本身是用Java编写的,而mongo是用cpp编写的,当考虑到它们的生态系统(或者你称之为它们的堆栈)和各种语言时,你只需要回想一下是什么让特定的编程语言变得有利。以下是我对这个问题的高度简约的看法,因为有很多书和博客都涉及这个主题。

  • 人气和社区支持。时髦的语言真的很酷,直到你不明白发生了什么,也没有人帮忙。c++和java都是非常成熟的语言,拥有庞大的用户基础。这两个系统都有用流行语言实现的各种API
  • 效率-我不打算讨论哪个lang更快或功能更丰富的争论,但我们可以放心地说,两个dbs都再次使用了非常高效的语言,这些语言正在不断改进。此外,如果开发人员没有做好他们的工作,那么在优化方面,lang的性能可能是他们最后关心的问题

归根结底,Cassandra以其庞大的规模而闻名[1],Mongo也被指出存在扩展问题,但这并不是因为C++存在问题(查找Facebook对C++和php所做的魔术),也不是因为Java是某种惊人的大规模语言之王。这只是与系统的实现方式有关。

[1] 发件人https://cassandra.apache.org/(苹果公司在2014年C*峰会上也做了一次演讲)

最大的生产部署之一是苹果的,超过75000个存储超过10 PB数据的节点。其他大型Cassandra装置包括Netflix(2500个节点,420 TB,每个节点超过1万亿次请求天),中文搜索引擎易搜(270个节点,300 TB,超过8亿每天的请求),以及易趣(超过100个节点,250 TB)。