2010-07-31 71 views

回答

29

諸如Bigtable和Cassandra這樣的列族商店具有非常有限的查詢功能。應用程序負責維護索引以查詢更復雜的數據模型。

文檔數據庫允許您查詢內容,而不僅僅是密鑰。它還將爲您管理索引,從而降低應用程序的複雜性。

Domain-driven design傳播聚合和價值對象的使用。 As Ayende points out,(複雜)聚合是非常自然的候選,​​可以作爲單個文檔存儲,而不是通過多個表或列家族進行歸一化。這將減少持久層的複雜性。由於所有數據都包含在單個文檔中,因此相關數據分散在多個節點的可能性也較小。

如果您的應用程序需要存儲多態對象,文檔數據庫也是一個不錯的選擇。當然,這也可以存儲在卡桑德拉,但你不會有太多的查詢功能。至少不是開箱即用的。

將文檔數據庫視爲豪華跑車。它不需要專業的驅動程序(閱讀:複雜的應用程序)讓您從A到B,它具有空調和舒適座椅等功能,它將在可接受的時間內覆蓋高可擴展性軌道。但是,如果您想在高可擴展性軌道上設置一個單圈記錄,您需要需要一個專業的驅動程序和高度優化的汽車(如卡桑德拉),它缺乏空調等功能。

+1

嘿,多麼好的描述!我唯一要補充的是CouchDB的目標是成爲數據庫的本田雅閣,而不是法拉利。不過我認爲它們是不同的隱喻,只是偶然相關。 – JasonSmith 2010-07-31 17:19:41

9

的CouchDB的另一個特徵是,可以創建這些聚合,而不是作爲文件手動保存,但作爲視圖(其從所存儲的數據自動地導出和更新的。)

這就如同電動車窗,加熱座椅,或踢腳架。

+0

當然淘氣自然 – JasonSmith 2010-07-31 18:33:33

相關問題