13

有很多关于反革命 NoSQL 数据库的讨论,例如CassandraCouchDBHypertableMongoDBProject VoldemortBigTable等等。就我而言,最强大的优点是可扩展性、性能和简单性。

我正在认真考虑建议为我们的下一个项目使用一些非关系数据库。但是,一些团队包含一些 RDBMS 狂热分子,因此在某些情况下,仅仅因为情绪原因,说服硬切换可能是不可能的。此外,当涉及到复杂的数据模型时,我个人仍然相信 RDBMS 及其低级一致性执行机制的强大功能。

现在我的问题来了:我想知道,如果有人可以认真考虑在一个新项目中同时使用 RDBMS非关系数据库:复杂但不是性能关键的数据模型仍将使用关系模型和数据库来实现,而所有性能关键但简单的模型都将使用非关系数据库来实现。此外,这种软范式转变比硬性转变更容易卖给一些高度情绪化的团队成员。

有人会推荐这种方法吗?或者您更愿意推荐黑色或白色,即关系或非关系方法?非常欢迎所有评论!


PS:知道这样的混淆是否适用于 Spring 和 Hibernate/JPA?

4

3 回答 3

14

Rob Conery 最近写了一篇关于他使用 MongoDB 和 MySQL 构建流行的 Web 应用程序TekPub的经验,强调了两者的优势:

高阅读量的东西(帐户信息、制作和剧集信息)非常适合像 MongoDb 这样的“现在”类型的东西。“昨天发生的事情”对于关系系统来说是完美的。

在高层次上,Rob 将他们的应用程序数据分为两个范围:运行时数据和历史数据。例如,用户购物车的当前状态非常适合保存在 MongoDB 中。这是一个不断变化的对象 blob。保留进出购物车的历史记录;发生的那一刻; 结帐状态非常适合 MySQL 中的关系、表格数据。

他总结如下:

它完美地工作。我对我们的设置非常满意。它的维护成本极低,我们可以像任何其他解决方案一样对其进行备份,并且在需要时拥有所需的数据。

2016 年 5 月更新(6 年后)

在过去的 6 年中,这一点变得更加真实。现在很常见的是 NoSQL 数据库为事务存储提供支持,而传统的关系数据库为分析数据库提供支持。

于 2010-07-08T23:42:33.733 回答
3

我两个都用。RDBMS 适用于复杂的分析、报告和多个用户以不同方式访问的数据。当我从单个用户的角度查看数据时,NOSQL 非常棒。我问自己的一个问题是:“谁在访问这些数据?”。如果答案是 1 个用户,我使用 NOSQL 来存储它。

当然,还有其他合适的时候,但这只是一个例子。

正如您所提到的,NOSQL 是更简单的存储,它可能导致您必须纠正复杂的代码来维护数据......例如,存储连接列表。

于 2010-07-08T23:53:28.880 回答
0

非关系型键值数据库最适合用于 Blob 存储和缓存。

于 2010-10-08T14:04:18.697 回答