【问题标题】:do document-oriented databases have integrity?面向文档的数据库是否具有完整性?
【发布时间】:2010-06-15 01:33:55
【问题描述】:
我来自 MySQL 背景,我对面向文档的数据库感兴趣,特别是 CouchDB。我感兴趣的一件事是数据完整性。面向文档的数据库如何处理这个问题?例如,在 RDBMS 中,有一些方法可以防止记录重复,或者保证如果你有一个信息,你就会有另一个,或者根本没有。
我想更广泛地说,我的问题是,与使用 DODBes 的问题相比,RDBMS 适合哪些类型的问题?我查看了其他一些 stackoverflow 问题以寻求解释,但没有找到任何好的问题。
此外,利用我的数据库,我做了很多报告,包括求和和平均值以及历史趋势。这适合面向文档的数据库吗?
【问题讨论】:
标签:
relational-database
document-oriented-db
【解决方案1】:
大多数文档数据库仅支持非常有限的完整性或不支持完整性检查。他们依靠应用程序来确保数据正确。我可以告诉你它在 CouchDB 中的情况。
到第二部分。我认为 RDBMS 在报告和分析数据方面做得很好。您可以使用连接、聚合、函数等对数据运行复杂查询,这一事实使 RDBMS 成为一个非常强大的报告工具。
文档数据库非常适合存储“实时”应用程序数据。将检索对象图存储到文档数据库中非常容易。无模式设计可以轻松扩展模型以实现新的应用程序功能。但是,这仅在您可以将应用程序数据拆分为漂亮的文档时才有效。否则你会失去很多优雅。
如果您想主要做报告,我更喜欢 RDBMS。何时存储大量平面、简单的记录很容易对其进行报告。工具等非常适合报告。但是,当想要对复杂的结构化数据进行报告时,您可能还是使用其他数据库设计而不是 RDBMS。
但这并不意味着您需要将自己限制在 RDBMS 上。您可以将这两种技术结合起来。想象一个博客软件。您将博客文章和 cmets 等“实时”应用程序数据存储到文档数据库中。点击和登录统计等报告数据存储在 RDBMS 中。另见Rob Conerys post。