2012-12-13 161 views
3

如果我想存儲大量文件+複製數據庫,什麼NoSql數據庫將是這種工作最好的?MongoDB/CouchDB用於存儲文件+複製?

我正在測試MongoDB和CouchDB,這些數據庫非常好用,易於使用。如果有可能,我會用其中一個來存儲文件。現在我看到了Mongo和Couch之間的區別,但我無法解釋哪一個更適合存儲文件。如果我在談論存儲文件,我的意思是10-50MB的文件,但也可能是50-500MB的文件 - 也許很多更新。

我發現這裏一個不錯的表:

enter image description here

http://weblogs.asp.net/britchie/archive/2010/08/17/document-databases-compared-mongodb-couchdb-and-ravendb.aspx

還是不確定哪些屬性是最好的filestoring和複製。但也許我應該選擇另一個NoSQL數據庫?

回答

5

該表的方式過時了:

  • 主從複製,取而代之的副本集已棄用對於初學者,也一致性是錯誤的那裏。您需要完全重讀MongoDB文檔的這一部分。
  • Map/Reduce只是JavaScript,沒有其​​他的。
  • 我不知道附件中的表格是什麼意思,但GridFS是內置於驅動程序中的存儲標準,可幫助您更輕鬆地在MongoDB中存儲大文件。元數據也通過這種方法得到支持。
  • MongoDB在2.2版本上,所以它之前提到的任何版本現在已經過時(即分片和單服務器耐久性)。

我沒有用CouchDBs接口存儲文件的個人經驗,但是如果兩者之間幾乎沒有任何區別,我不會感到驚訝。我認爲這部分對我們來說太過主觀,我們不能回答,你只需要選擇哪一套更好。

實際上可以構建多區域的MongoDB集羣(其中S3存儲區不可以在沒有工作的情況下進行復制),並通過MongoDB將世界上特定地區的訪問最多的文件複製到這些集羣中。

我的意思是我有時發現的主要結果是MongoDB可以像S3和Cloudfront一樣組裝起來,這很好,因爲您擁有冗餘存儲和分配數據的能力。

然而,據說S3在這裏是非常有效的選擇,我會認真試一試,你可能不會在內容網絡中尋找和我一樣的東西。

文件的數據庫存儲沒有嚴重的缺點,但速度不應該是一個巨大的問題,因爲您應該從無Cloudfront的S3獲得相同的速度,您應該從MongoDB獲得相同的速度(請記住S3是一個冗餘存儲網絡,而不是CDN)。

如果您要使用S3,那麼您將在數據庫中存儲一行指向該文件幷包含關於該文件的元數據。

+0

感謝您的信息。 NoSql是亞馬遜用於S3/DynamoDB的什麼?如果它對文件存儲有好處,也許這將是另一種選擇(使用他們的數據庫)。或者下一個類似的NoSql到S3/DynamoDB是什麼? – silla

+1

我不確定他們在S3後面使用的技術我認爲他們使用高IOP文件系統服務器作爲一個集羣在數據中心的單個子區域內集羣(即沒有弗吉尼亞州區域存在只有美國存儲桶)prolly優化專用SSD支持。他們可能會使用數據庫來跟蹤文件段,但我不確定它背後的技術。我相信Dynamo是他們自己的技術,就像Facebook創建的Cassandra一樣,我認爲它是有限的,如果它允許的話,它對於文件存儲來說是相當昂貴的,並且對於某些文件的需求可能太慢。 – Sammaye

2

您是否將Amazon S3視爲選項?它是高度可用的,已證明和有冗餘存儲等...

CouchDB,即使我個人喜歡它很多,因爲它與node.js很好,但有缺點,你需要定期壓縮它,如果你不想浪費太多的磁盤空間。在你的情況下,如果你要對相同的文檔進行大量更新,那可能是一個問題。

我不能真正在MongoDB上提交,因爲我還沒有使用它,但是,如果文件存儲是您最關心的問題,那麼請查看S3和類似文件,因爲它們完全集中在filestorage上。

您可以將您將元數據存儲在NoSql或Sql數據存儲中以及將您的實際文件存儲在單獨的文件存儲中但將這兩個存儲保持同步並複製的兩者結合起來可能會非常棘手。

+0

我很高興,這裏有一些CouchDB人也:)有點MongoDB是統治Stackoverflow。但是,將元數據存儲到CouchDB +將文件存儲到S3中是個好主意。它可能很棘手,也許複製的東西不會那麼容易。 – silla

3

Dustin Sallings(Couchbase的創始人之一,memcached的spymemcached和core貢獻者的創建者之一)和使用Couchbase和Go的Marty Schoch有一個名爲CBFS的項目。

這是一個無限節點具有冗餘和複製的文件存儲。基本上你自己的S3支持很多不同的硬件和尺寸。它使用REST HTTP PUT/GET/DELETE等,非常容易使用。非常快,非常強大。

CBFS在Github上https://github.com/couchbaselabs/cbfs

協議https://github.com/couchbaselabs/cbfs/wiki/Protocol

博客文章http://dustin.github.com/2012/09/27/cbfs.html

不同的硬件https://plus.google.com/105229686595945792364/posts/9joBgjEt5PB

其他很酷的視覺效果

http://www.youtube.com/watch?v=GiFMVfrNma8

http://www.youtube.com/watch?v=033iKVvrmcQ

聯繫我,如果你有任何問題,我可以幫你聯繫。

+0

這是必讀!謝謝 :) – silla

相關問題