如何在MongoDB和Cassandra之间选择数据库

时间:2013-09-21 17:21:29

标签: mysql mongodb cassandra database nosql

现在我想设计一个数据库,并且在一些动态属性中会有一些表。我可以选择像MySQL这样的传统RDBMS来使用EAV设计模型来实现它们。但现在我想尝试一些新的东西。我听说NoSQL数据库可以轻松解决动态属性问题,我想在MongoDB和Cassandra之间选择一个。

以下是我想要设计的数据库的一些情况:

此数据库中将有大约200,000个项目,数据库将存储在单个服务器中。

当用户想要使用这个数据库时,主要的过程是:用户首先访问表A,表B的外键,然后访问表B,得到表C的外键。表C有许多固定属性和一些动态属性。然后用户将从表C中获取一个元组,读取一些值,然后修改此元组的某些值,并可以添加此元组的一些动态值。

我会将几乎所有这些元组从Excel电子表格导入到我的Java数据库中。那么哪一个对Java有更好的支持?

导入这些数据后,将不再有插入或删除操作。几乎所有外部用户的操作都被读取和更新。那么哪个数据库更适合这种情况。

我知道在这个小项目中没有必要使用NoSQL数据库,但我最近想尝试学习一个。所以,谢谢你的回答,如果你有其他的选择,那将是非常好的。

1 个答案:

答案 0 :(得分:2)

根据您提供的信息,没有明显的答案。

您根据表,联接,外键描述了查询模式。首先,我建议考虑是否可以进行数据嵌入,而不是在表之间进行引用。

http://docs.mongodb.org/manual/core/data-modeling/

对于我们项目的早期阶段,我们选择了mongodb,尽管我们现在正在向Cassandra移动一些东西,但我真的不后悔做出这个选择。

Mongo非常简单,灵活。非常容易开发,应用模式更改,查询。它原谅了很多。我说这对NoSQL新人来说几乎是无价之宝。

Cassandra更先进。它需要更多地考虑模式设计和查询模式。横向可扩展性是NoSQL市场中最好的之一。 Cassandra在写作操作方面也有很大的优势。

许多Mongodb用户随后来了两个Cassandra。但仅在存在实际性能和可伸缩性原因的情况下

但是既然你要安装单机 - mongodb就足够了。它具有非常好的读取性能,而数据适合RAM。

这两个数据库都有良好支持的驱动程序。

https://github.com/mongodb/mongo-java-driver

对于Cassandra,值得参考新的Datastax驱动程序

https://github.com/datastax/java-driver

  

我知道没有必要在这么小的时候使用NoSQL数据库   项目,但我最近想尝试学习一个。

我推荐Mongodb ......