何时在NoSQL中创建新文档

时间:2012-04-26 16:47:57

标签: nosql couchdb

我刚刚开始使用NoSQL(在我的案例中为CouchDB)并且似乎无法回答我认为应该是一个简单的问题,关于创建新文档与将数据附加到文档的常见做法是什么现有的。

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

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

  
      
  • UserA_db
  •   
  • UserB_db
  •   

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

您是否希望每个笔记本添加一个文档,如下所示:

  
      
  • UsersA_db   
        
    • NoteBook1_doc = {notes:[{notebody:'foo'},{notebody:'bar'}]}
    •   
    • NoteBook2_doc = {notes:[{notebody:'baz'},{notebody:'boo'}]}
    •   
  •   

或者,所有应该是完全平的,无论文档是什么包含什么或它是什么相关?

  
      
  • UsersA_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:'all cows eat grass'}
    •   
    • AccountInformation_doc {name:'Bob',年龄:34}
    •   
  •   

1 个答案:

答案 0 :(得分:2)

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

另外,请记住CouchDB 视图被称为“视图”,因为它们允许您以完全一致的状态以各种方式查看您的数据。视图始终表示您请求时的数据的时间点快照。视图也可以collate data在一起。例如,视图可以通过将各个音符整理在一起来向您显示笔记本。

Joachim是对的,这是一个判断电话,但我个人更倾向于你的第二个选择:每个音符都是一个文件。