用于博客/内容管理系统的NoSQL数据库? (MongoDB / Cassandra)

时间:2014-01-13 04:29:46

标签: mongodb cassandra database nosql

我的公司已经使用了Oracle很长一段时间,但我们希望寻找NoSQL数据库来代替更快的查询和灵活的架构设计。

我曾尝试使用MongoDB,它现在是最受欢迎的NoSQL数据库。我将它连接到Spring Data来做一些简单的查询,这很容易设置和编码。由于我们使用Spring MVC进行Web开发,因此Spring Data似乎非常适合集成。

然而,我听说Cassandra在写入和读取方面会有更好的表现,特别是在大型缩放系统中。我不确定是否值得搬到Cassandra并且不确定如何衡量MongoDB和Cassandra之间的性能。

以下是我的系统的一些要求:

  • 专注于文章提取
  • 标记文章,供用户轻松搜索自己的好处或相关文章
  • 非分布式系统,但具有负载平衡和故障转移功能
  • 基于Java,用于Web开发的Spring MVC
  • 文章将存储为XML
  • 可能提供用户定义的表(集合)和字段(键)

因此,我想提出一些问题:

  • 哪个数据库最适合我的情况?除了MongoDB和Cassandra之外,您还可以引发其他数据库。
  • 如果我使用Cassandra,哪个框架适合集成到Spring MVC?

非常感谢你。

2 个答案:

答案 0 :(得分:2)

我有使用Spring和Cassandra的经验。但我总是编写自己的数据访问层。

使用Cassandra的ORM不会让你充分利用它的全部功能,你很可能会引入错误,因为你的SQL背景会让你期望某些行为不是Cassandra会给你的。< / p>

我的建议是编写将自己访问Cassandra的代码,并且不要害怕非常规化A LOT。更多地考虑如何查询(或查找)您的数据,而不是您想要保存它的格式。

我还强烈建议您阅读这篇精彩文章:Cassandra数据建模最佳实践part 1 part 2

另一个可能更适合您应用的数据库是CouchDB(我喜欢使用BigCouch)。它是另一个基于Document的NoSQL数据库,在我看来优于MongoDB。它提供了更好的扩展解决方案,并强调可用性(就像Cassandra一样)。

我想指出this question关于CouchDB和MongoDB之间的区别。

就框架而言,Play框架有很多插件可以与NoSQL系统一起使用,所以你可以尝试一下。你可以尝试playorm这是我试验的最后一次。

编辑:我忘了提及Kundera以及Cassandra的ORM

答案 1 :(得分:2)

Cassandra和MongoDB之间的选择取决于存储类型。 MongoDB主要用于基于文档的存储,您可以通过使用各种类似sql的功能获得优势。

如果您需要具有高可用性和多直流复制的柱状数据库?去找卡桑德拉。

http://db-engines.com/en/system/Cassandra%3BHBase%3BMongoDB