2012-04-26 66 views
2

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

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

所以在顶层,我CouchDB的样子:

  • UserA_db
  • UserB_db

说我有一个简单的笔记本应用,每个用户都可以有1或更多的笔记本,每个笔记本包含一个或多个笔记。

是添加单个文档每笔记本,像这样的想法:

  • UsersA_db
    • NoteBook1_doc = {注:[{notebody: '富'},{notebody : '栏'}]}
    • NoteBook2_doc = {笔记:[{notebody: '巴兹'},{notebody: 'BOO'}]}

OR,是一切应该是完全平坦的,不管什么样的文件,它所包含什么涉及到

  • UsersA_db
    • NoteBook1_doc = {ID:1}
    • Note1_doc {ID:1,parentBook:1,notebody: '富'}
    • Note2_doc {ID:2,parentBook :1,notebody:'bar'}
    • SomethingCompletelyDifferent_doc {id:1,text:'all cows eat grass'}
    • AccountInformation_doc {name:'Bob',age:34}
+0

对象组成几乎总是归结为味道,而不是事实。如果你在应用程序本身有更多的对象设计经验,那么从这里开始并保持数据库结构类似是个好主意。 – 2012-04-26 16:57:47

回答

2

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

而且,记得,CouchDB的意见被称为“意见”,是因为他们让你看到一个完全一致的状态您以各种方式的数据。视图始终代表您在请求时数据的时间点快照。视图也可以collate data在一起。例如,一个视图可以通过整理各个笔记来向您显示笔记本。

约阿希姆是正确的,这是一个判断呼吁,但我个人更倾向于第二种选择:每个音符都是一个文档。

相关问题