couchdb:每个帐户一个数据库vs一个数据库中的所有数据库w。命名空间/属性

时间:2010-05-02 15:33:10

标签: data-modeling couchdb

我在couchdb中建模文档生成系统。它可以从可管理的文档片段中自动生成提案和演示文档。

就像Basecamp一样,它非常简单地分解为每个帐户的自包含数据。每个帐户都有多个用户,项目,文档等。但是,帐户之间不应共享任何内容。

我可以看到两种方法:

  • 每个帐户一个couchdb数据库
  • 使用命名空间/属性来标识帐户

在我看来,第一种方法在概念上是合理的,并且可能具有安全性和分区优势。但是,在我看来,限制一些跨数据库数据查询(我现在没有用例,但你永远不知道......)并且更新视图可能需要大量的写入。

有没有经历过这种决定的人有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这是对情况的准确总结,我认为没有银弹答案。这完全取决于您在整个用户群中需要信息或报告的可能性。

我想提醒你两件事:

  1. 业务应用程序很快就需要运行您在构建软件时从未考虑过的报告。当客户有五个账户并且他坚持你的总费用不是他们应该是什么时,你会做什么?这些报告的一个特点是您通常需要尽快使用它们。

  2. 但是,您始终可以使用复制将所有数据库合并到一个巨大的数据库中(即使在单独的计算机上),以便在该数据库上运行报告。如果您的钥匙没有碰撞,那将节省您的一些努力,但一般来说,您可以使这项工作。