簡體   English   中英

couchdb多個數據庫

[英]couchdb multiple databases

我習慣使用mysql,但對於我的下一系列項目,CouchDB(NoSQL)似乎是要走的路,基本上是為了避免在mysql中使用EAV並擁抱它提供的所有酷炫功能。

經過大量的調查和閱讀文檔等,有一件事我似乎不太了解。

讓我們假設我在我的服務器上托管了三個Web應用程序,因此需要三個數據庫。 例如,一個是帶有產品和發票表的網上商店,一個是帶有文章和評論表的博客,另一個是帶有游戲統計表的基於網絡的游戲(顯然簡化)。

所以我在一個mysql安裝上托管多個站點,我在服務器上運行的每個應用程序都有自己的數據庫,包含表,字段和內容。

現在,有了CouchDb,我想做同樣的事情。 問題似乎是在CouchDb中創建數據庫更像是在mysql中創建表。 也就是說,我為我的博客創建了名為“評論”,“文章”等的數據庫,在內部我根據文章創建了一個文檔或每個評論的文檔。

所以我的問題是:如何在一個CouchDB安裝中將我的數據與多個Web應用程序分開?

我想我在這里做了一些根本錯誤的事情,但希望你們其中一個人可以幫我走上正軌。

在CouchDB中,沒有明確需要將不相關的數據分成多個數據庫。 如果您已正確構建文檔和視圖,則只會在查詢中顯示相關數據。

如果您決定將數據分成單獨的數據庫,只需創建一個新數據庫即可。

$ curl -X PUT http://localhost:5984/somedb
{"ok":true}

根據我對couchdb的經驗,將不相關的數據分離到不同的數據庫對於性能非常重要 ,也是一個明智的選擇。 視圖生成是couchdb的一個痛苦部分。 每次更新數據庫時,都必須重新生成視圖(將它們視為傳統關系sql db中的索引)。 這涉及迭代數據庫中的 每個文檔。 因此,如果您說有200萬個A類文檔,並且您有300個類型的文檔,那么您需要重新生成查詢類型B的視圖,然后在視圖生成期間執行所有200萬和300個枚舉。將花費很長時間(甚至可能會執行讀取超時)。

因此,在保持視圖(如何在couchdb中查詢,這是一個明顯重要且不可避免的特性)更新時,擁有多個數據庫是明智之舉。

@Zombies對性能非常正確。 CouchDB不適合在單個數據庫中執行大量文檔。 如果您需要執行,比如說超過5000個文檔, MongoDB將超越CouchDB。

CouchDB中的視圖是必不可少的,但是很痛苦,JavaScript構造查詢的選項有限(甚至不考慮文檔引用或嵌套對象)。 考慮為不同文檔提供多個數據庫是非常好的解決方案。 有些人會說:

CouchDB是一個NoSQL數據庫,因此您不需要訂購文檔,也不需要使用除視圖之外的其他內容來過濾它們。 NoSQL數據庫核心功能是存儲無方案文檔的能力[...]

當你需要找到性能查詢的解決方法時,我發現它非常煩人。 您不應該介意創建一些數據庫來分隔您的數據,如果它允許您分割數據,它仍將是“ 單個CouchDB安裝 ”。 不要忘記CouchDB適用於小型數據庫 數據庫最小,查詢速度越快,性能越好。

(我不知道是否有任何英語錯誤,請原諒我)


編輯ArangoDB這樣的公司在自己,MongoDB和CouchDB之間進行了比較,它證實了我對文檔數量的說法。 這是結果:

圖形比較

他們的網站上有很多其他資源。 另一方面,這個陳述是一個個人經歷,並通過我在互聯網上找到的.PHP基准測試軟件對我的實習進行基准測試。 結果如下:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM