我刚刚开始使用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}
答案 0 :(得分:2)
这可能是两种方式,但要记住的一个有用的事实是文档是CouchDB中原子事务的单位。如果 all 数据在一个文档中,您可以对CouchDB中的数据进行原子事务性事务更改。
另外,请记住CouchDB 视图被称为“视图”,因为它们允许您以完全一致的状态以各种方式查看您的数据。视图始终表示您请求时的数据的时间点快照。视图也可以collate data在一起。例如,视图可以通过将各个音符整理在一起来向您显示笔记本。
Joachim是对的,这是一个判断电话,但我个人更倾向于你的第二个选择:每个音符都是一个文件。