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

标签 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?

非常感谢您。

最佳答案

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

使用 Cassandra 的 ORM 不允许您充分利用其功能,而且您很可能会引入错误,因为您的 SQL 背景将使您期望某些行为,而 Cassandra 不会为您提供这些行为。

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

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

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

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

就框架而言,Play 框架有很多插件可以与 NoSQL 系统配合使用,因此您可以尝试一下。你可以试试playorm这是我最后一次实验。

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

关于mongodb - 用于博客/内容管理系统的 NoSQL 数据库? (MongoDB/ Cassandra ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21083909/

相关文章:

arrays - 如何从用户已选择城市键的数组中获取结果,如果用户选择了城市,这些结果也将来自城市模型中未选择的城市

java - 如何在 MongoDB Java 驱动程序中编写带有添加操作的 group by

c# - 使用 C# 将多个文档插入 Mongodb 的最快方法

java - 如何设置cassandra的读取请求超时

database - 为什么在打开 H2 控制台时看不到从 Java 添加的表?

java - 将值从 Mono/Flux 传递到方法

performance - Cassandra 分区大小和性能?

Cassandra SUM(Map <text,int>) 可能吗?

mysql - 存储 20 个国家/地区 30 个类别的项目总计

c# - 在 mysql 数据库中存储大文件/二进制数据 : when is it ok?