2

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

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

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

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

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

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

我知道在这个小项目中没有必要使用 NoSQL 数据库,但我最近很想尝试学习一个。所以感谢您的回答,如果您对我有其他选择,那就太好了。

4

1 回答 1

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......

于 2013-09-21T21:38:48.677 回答