簡體   English   中英

CouchDB如何針對定期更新的數據集執行操作?

[英]How does CouchDB perform for a regularly updated dataset?

我打算在項目上使用CouchDB。 但是由於查詢機制涉及編寫視圖(這與常規RDMBMS上的索引非常相似),我想知道,如果文檔數據庫不斷更新(寫入繁重的數據庫),CouchDB與常規RDBMS相比表現良好嗎? 或者我們是否必須偶爾壓縮/重新索引系統以使其更快地執行?

您可以通過這種方式考慮CouchDB視圖模型的優缺點。 (CouchDB黑客可能不同意,但IMO對用戶來說足夠准確。)

  1. 視圖函數在首次創建時始終執行完整的“表掃描”(就像RDBMS BTW一樣)
  2. 只要它們沒有副作用,map和reduce函數就可以任意復雜
  3. 每個文檔和地圖/縮小結果都會被緩存,而不會再次計算
  4. 如果添加或更改文檔,將為該視圖重新計算(和緩存)它

鑒於這些,您可以得出有關CouchDB性能的一些結論:

  • 整個數據集永遠不會有重新索引階段,只是每個文檔更新的增量
  • 更改視圖函數會強制重新構建整個索引
  • 由於CouchDB和RDBMS都必須更新新數據的索引,因此認為對於大量更新/插入使用而言性能類似是合理的。

顯然YMMV和標准警察,“你必須測試自己的負載”適用。 但是我會添加一些注意事項。

  • 我說RDBMS對於探索式查詢數據來說非常優越。 當你甚至不知道從你的數據要問什么問題,你真的不能打,用於查詢結構化語言
  • 但是,一旦定義了您想要知道的內容,CouchDB(也許是Hadoop)就會提供最豐富的查詢系統,因為您只是編寫代碼。
  • 如果您的數據集很大,NoSQL數據庫將更容易擴展。 例如, CouchDB-Lounge允許一組沙發進行並行處理。 Hadoop做同樣的事情,然后它將歸結為次要考慮:熟悉,可維護性,CouchDB是一個Web服務器,但需要更多的DIY; Hadoop以復雜性,異常性等為代價,內化了更多的集群管理。

我希望這有助於闡明你的決定!

暫無
暫無

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

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