2010-08-15 96 views
1

我需要知道在使用CouchDB實施解決方案時需要考慮的因子。我知道CouchDB不需要標準化,並且我在RDBMS開發中使用的標準技術大部分都被拋棄了。與RDBMS相比,使用CouchDB時需要多少存儲空間?

但究竟什麼是所涉及的費用。我完全理解這些好處,但是存儲成本讓我感到有點緊張,因爲看起來CouchDB需要大量的複製數據,其中一些數據在使用前會過時並過時。如何管理陳舊的數據?

我知道,我可以實現使用CouchDB的文檔一些可怕的關係模型,並降低存儲成本,但不會這場失利的CouchDB的目標,我也可以得到性能?

我想到一個例子是requistions,訂購和招標制度。該系統目前有一件事情正在進行,許多人可能會比其中更頻繁地更新。

任何幫助都會很棒,因爲我是一位守舊的RDBMS傢伙,擁有C.J. Date,E.F Codd和R. F. Boyce的所有教誨,因此在文檔存儲這個激進的概念的時刻掙扎着。

是否CouchDB中有什麼內部管理重複數據的識別和減少?

+0

作爲一個一般的經驗法則 - 如果你在數據關係則NOSQL解決方案可能不是正確的方式去。 – 2010-08-15 14:09:12

+0

@Romain就我所知,所有數據都存在關係,即使在NOSQL解決方案中,我也會得到NOSQL解決方案促進複製的印象,但需要以規範化爲代價。 – WeNeedAnswers 2010-08-15 14:22:48

+1

一對多對於CouchDB來說沒有問題。在另一個S.O.上看到我的演練。問題:http://stackoverflow.com/questions/3033443/best-way-to-do-one-to-many-join-in-couchdb/3035522#3035522 – JasonSmith 2010-08-15 15:04:03

回答

1

只有您知道您將使用多少數據副本,因此不幸的是,唯一的好的答案將是構建模擬數據集並測量磁盤使用情況。

此外,類似於文件系統,CouchDB需要額外的元數據存儲。這個成本取決於兩個因素:

  1. 你多久更新或創建
  2. 文檔多久你緊湊

最壞情況瞬時磁盤使用率將成爲總量的數據乘以兩個,加上所有在壓縮時間(#2)存在的舊文件修訂版(#1)。這是因爲壓縮只會生成一個新的數據庫文件,只有當前的文檔修訂版本。因此,使用將是當前數據的兩個副本(來自舊文件加上新文件)以及壓縮完成時等待刪除的所有「浪費的」舊版本。壓縮後,舊文件將被刪除,因此您將收回超過此最壞情況值的一半。

始終運行壓縮是沒有問題的,以減少數據使用但是它對磁盤I/O有影響。

+0

我忘了版本的東西實際上。但正如你所說,我可以壓縮它,所以不會因此而煩惱。 – WeNeedAnswers 2010-08-15 21:14:26

+0

你說得對。值得一提的是,你偶爾會從磁盤讀取和重寫整個活動數據集。這可能是很多I/O,具體取決於您的數據。 – JasonSmith 2010-08-16 07:02:47

相關問題