3

我刚刚开始使用 NoSQL(在我的情况下为 CouchDB),似乎无法回答我认为应该是一个简单的问题,即围绕创建新文档与将数据附加到现有文档的常见做法是什么。

我目前每个用户都有一个数据库(这意味着我只能让用户访问他们拥有的数据)。

所以在顶层,我的 CouchDB 看起来像:

  • 用户A_db
  • 用户B_db

假设我有一个简单的笔记本应用程序,每个用户可以拥有 1 个或多个笔记本,每个包含 1 个或多个笔记。

是为每个笔记本添加一个文档的想法,如下所示:

  • 用户A_db
    • NoteBook1_doc = {笔记:[{notebody:'foo'},{notebody:'bar'}]}
    • NoteBook2_doc = {笔记:[{notebody:'baz'},{notebody:'boo'}]}

或者,无论文档什么、它包含什么或它与什么相关,是否一切都应该是完全平坦的?

  • 用户A_db
    • NoteBook1_doc = { id: 1 }
    • Note1_doc { id: 1, parentBook: 1, notebody: 'foo' }
    • Note2_doc { id: 2, parentBook: 1, notebody: 'bar' }
    • SomethingCompletelyDifferent_doc { id: 1, text: '所有的牛都吃草' }
    • AccountInformation_doc { 姓名:“鲍勃”,年龄:34 }
4

1 回答 1

2

这可以是任何一种方式,但要记住一个有用的事实是文档是 CouchDB 中原子事务的单元。如果所有数据都在一个文档中,您可以对 CouchDB 中的数据进行原子性事务性更改。

另外,回想一下,CouchDB视图被称为“视图”,因为它们让您以各种方式以完全一致的状态查看数据。视图始终代表您请求时数据的时间点快照。视图还可以将数据整理在一起。例如,视图可以通过将各个笔记整理在一起来向您展示一个笔记本。

Joachim 说得对,这是一个判断电话,但就个人而言,我更倾向于您的第二个选项:每个笔记都是一份文件。

于 2012-04-27T06:04:54.420 回答