基于文档的数据库与关系数据库的优缺点

我一直在试图看看是否可以完成一些基于文档的数据库,在这种情况下,CouchDB的要求。两个一般要求:

> CRUD的实体,其中一些字段具有唯一索引
> eBay(better description here)等电子商务网络应用程序。

我开始认为,基于文档的数据库不是满足这些要求的最佳选择。此外,我不能想象一个基于文档的数据库的使用(也许我的想象力太有限)。

你能向我解释一下,当我试图使用面向文档的数据库来满足这些需求时,我是否从榆树中寻求梨?

您需要考虑如何以文档导向的方式处理应用程序。如果你只是试图复制如何在RDBMS中建模问题,那么你会失败。还有不同的取舍,你可能想做。 (不知道这是如何绑定到参数,但是:]记住,CouchDB的设计假设你将有一个活跃的群集的许多节点,可能会在任何时候失败。你的应用程序如何处理一个数据库节点消失在它下面?)

一种想法是想象你没有任何电脑,只是纸质文件。如何使用传递的纸张创建有效的业务流程?如何避免瓶颈?如果出现问题怎么办?

你应该考虑的另一个角度是最终一致性,你将最终达到一致的状态,但是你可能在一段时间内不一致。这是RDBMS土地中的麻烦,但在现实世界中极为常见。规范交易的例子是从银行帐户转移资金。这在现实世界中是如何发生的 – 通过单一原子交易或通过不同的银行相互发放信用和借记通知?当你写支票时会发生什么?

所以让我们看看你的例子:

> CRUD的实体,其中一些字段具有唯一索引。

如果我在CouchDB术语中正确理解这一点,你想要一个文档的集合,其中一些命名值保证在所有这些文档中是唯一的?这种情况通常不可支持,因为文档可以在不同的副本上创建。

因此,我们需要看看现实世界的问题,看看我们是否可以建模。你真的需要他们是独一无二的吗?您的应用程序可以处理具有相同值的多个文档吗?是否需要分配唯一标识符?你能确定地做到这一点吗?需要这种情况的常见场景是您需要唯一的顺序标识符。这在复制环境中很难解决。事实上,如果唯一的id需要严格按照时间创建的顺序,这是不可能的,如果你需要的id马上。你需要放松至少一个这些约束。

>电子商务网络应用程序像ebay

我不知道在这里添加什么,因为您在该帖子上最后一个评论是说“非常有用!谢谢”。从那里概述的方法有没有什么,仍然导致你的问题吗?我认为Mr Kurt的答案是相当充分的,我添加了一点增强,将减少争用。

http://stackoverflow.com/questions/337344/pros-cons-of-document-based-databases-vs-relational-databases

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:基于文档的数据库与关系数据库的优缺点