2009-07-18 60 views
4

我剛剛閱讀了亞馬遜S3和CouchDB上的大量資料。雖然也許還不夠,所以這裏是我的問題:CouchDB和Amazon S3的通用接口

這兩個系統聽起來都非常吸引我。 CouchDB使用Apache許可證V2和亞馬遜的S3進行分發,您按照存儲的兆字節和您生成的流量進行支付。所以這在金錢上有點不同。

但是從技術角度來看,從我的理解,這兩個系統可以幫助您在存儲任意大小(根據底層的操作系統上,因爲我從CouchDB的理解)的非結構化數據。

我不知道爲他們提供一個統一的界面是多麼容易,因此您可以根據需要更改「數據存儲提供程序」?無需更改任何代碼。

我也不知道這在技術上是否容易實現,還沒有詳細看過他們的協議。但如果推遲提供商的決定,可能會很晚。

另外,這對於集成測試的目的可能很有意義:例如,您可以針對本地CouchDB實例進行測試,並針對S3運行您的代碼以供生產使用。

爲了從不同的角度制訂我的問題:是亞馬遜的S3和CouchDB的基本解決同樣的事情或者是這個瘋狂的,我錯過了整點?

更新問題

吉姆的輝煌答案後,讓那麼我改的問題:

「通用接口CouchDB的和亞馬遜的SimpleDB」

而繼同線想一想,你是否看到了CouchDB和SimpleDB之間通用接口的問題呢?

回答

3

從技術上講,一個普通的圖層是可能的。不過,我質疑這是有道理的。 Couchdb爲您的文檔集成了map/reduce功能,這些文檔以「視圖」顯示。我不認爲SimpleDB有這樣的事情。另一方面,SimpleDB具有Couchdb所沒有的查詢表達式。如果您在開發時瞭解您的查詢,您可以將這些表達式作爲Couchdb中的視圖建模。

除此之外,通用功能不會超過創建/更新/刪除密鑰文檔對。

11

你錯過了一點,只是稍微。 CouchDB是一個數據庫。 S3是一個文件系統。它們都是相對非結構化的,但是使用S3,你需要在鍵盤下存儲文件,而使用CouchDB時則需要在鍵盤下存儲(任意結構化)數據。

亞馬遜網絡服務類似CouchDB的東西將是Amazon SimpleDB

Ruby就像你正在尋找的東西一樣存在,它被稱爲Moneta。它甚至可以存儲S3上的東西,這可能正是你想要的。

4

你錯了吉姆。 S3不是一個文件系統。它是一個鍵值存儲的web服務。

亞馬遜爲您提供了一個密鑰。是的,該密鑰的值可以是表示文件的數據。但是,如何在亞馬遜系統中進行管理則完全不同。它可以存儲在一個節點,多個節點,具有云前沿的地理戰略節點等等。該密鑰中沒有任何內容表明系統將如何管理文件。密鑰的值永遠不會是一個文件直接。它是代表文件的數據。如何將該值最終解析爲客戶端收到的文件是完全獨立的。

該鍵的值實際上可以是不代表文件的數據。它可以是一個JSON字典。從這個意義上說,S3可以像CouchDB一樣使用。

所以我不認爲這個問題是錯過了重點。事實上,這是一個完全合法的問題,因爲CouchDB中的數據不在節點間分佈。這可能會妨礙性能。

讓我們不要談論Amazon SimpleDB。這是獨立的。請不要混用術語,然後根據這些說法提出索賠。

如果你不相信這個說法,並且如果有人請求它,我很高興提供一個代碼位來說明S3中的JSON字典。

我尊重你對其他問題的答案吉姆。但是,在這裏,你顯然是錯的,並且看不到這些觀點是合理的。