2012-04-26 47 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在一起。例如,一個視圖可以通過整理各個筆記來向您顯示筆記本。

約阿希姆是正確的,這是一個判斷呼籲,但我個人更傾向於第二種選擇:每個音符都是一個文檔。

相關問題