【问题标题】:couchdb: one database per account vs all in one database w. a namespace / propertycouchdb:每个帐户一个数据库与一个数据库中的所有数据库 w。命名空间/属性
【发布时间】:2011-02-14 18:52:43
【问题描述】:
我正在为 couchdb 中的文档生成系统建模。它从可管理的文档片段中半自动化地生成提案和演示文档。
就像 Basecamp 一样,它非常简单地分解为每个“帐户”的独立数据。每个帐户都有多个用户、项目、文档等。但是,帐户之间不应共享任何内容。
我可以看到两种方法:
- 每个帐户一个 couchdb 数据库
- 使用命名空间/属性来识别帐户
在我看来,第一种方法在概念上是合理的,并且可能具有安全性和分区优势。但是,在我看来,它似乎限制了一些跨数据库数据查询(我现在没有用例,但你永远不知道......)并且更新视图可能需要大量写入。
有遇到过这种决定的人有什么建议吗?
【问题讨论】:
标签:
data-modeling
couchdb
【解决方案1】:
这是对情况的准确总结,我认为没有灵丹妙药的答案。这完全取决于您需要整个用户群的信息或报告的可能性有多大。
我要提醒你两件事:
业务应用程序很快就需要运行您在构建软件时从未想过的报告。当客户有五个帐户并且他坚持认为您的总费用不应该是他们应该做的事情时,您会怎么做?这些报告的一个特点是您通常会尽快使用它们。
但是,您始终可以使用复制将所有数据库合并到一个巨大的数据库中(即使在单独的计算机上),以便在该数据库上运行报告。如果您的键没有碰撞,那会为您节省一点精力,但总的来说您可以做到这一点。