看來您無法在CouchDB中嵌套數據庫。人們如何解決這個限制?例如,假設我想創建一個博客引擎,其中每個域都有一個單獨的數據庫。在每個數據庫中,我可能需要一個用戶數據庫,一個訂單數據庫等來包含各種用戶文檔,訂單文檔等等。CouchDB中的嵌套數據庫
最顯而易見的方法似乎是一個扁平結構,其中數據庫名稱標定數據庫嵌套級別之間的人爲邊界用連字號:
myblog.com-users
myblog.com-posts
myblog.com-comments
anotherblog.com-users
anotherblog.com-posts
anotherblog.com-comments
...hundreds more...
另一種解決辦法是保持較低級別的數據庫和標記每個與頂層值記錄:
用戶含有文檔User1的數據庫,與現場實例=「測試」或場domain =「myblog.com」
其實,我認爲你濫用術語數據庫。從CouchDB:最終指導:「對於嚴格的,CouchDB是一個數據庫管理系統(DMS),這意味着它可以容納多個數據庫,數據庫是容納'相關數據'的存儲區。當我在我的問題中提及數據庫時,我並不是指CouchDB DMS的多個實例,而是指多個存儲區來存儲相關數據。由於數據庫(存儲區)旨在保存相關數據,因此您可以爲所有域中的訂單設置存儲桶,或者可以爲單個域中的用戶和訂單設置存儲區。 – rcampbell 2009-11-05 09:43:49
除了術語之外,使用Views來分隔用戶文檔,發佈文檔和評論文檔的建議絕對與我的想法一致,即爲每個文檔使用一個鑑別器鍵/值對。對我來說,只是感覺像一個黑客必須說Post.domain = MyApp,User.domain = MyApp,Comment.domain = MyApp等等。很多數據重複。另外,將所有客戶端數據分組在一起,只是覺得安全明智。視圖中的漏洞可能會將一個客戶端暴露給另一個客戶端的數據。 – rcampbell 2009-11-05 09:49:17
可能是我的錯誤選擇。我的觀點是,如果你想在一個數據庫中有帖子評論和用戶都完美的話。每個域有一個數據庫可能是一個好主意,但如果你想整理或加入帖子和評論文件說,那麼如果你把它們全部放在同一個數據庫中,它會更容易。 – 2009-11-05 15:30:39