2009-07-18 61 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字典。

我尊重你对其他问题的答案吉姆。但是,在这里,你显然是错的,并且看不到这些观点是合理的。