代码之家  ›  专栏  ›  技术社区  ›  raoulsson

CouchDB和Amazon S3的公共接口

  •  4
  • raoulsson  · 技术社区  · 16 年前

    我刚刚在亚马逊的S3和CouchDB上阅读了大量的资料。也许还不够,所以我的问题是:

    两个系统听起来都很吸引我。CouchDB是使用Apache许可证v2发布的,使用Amazon的S3,您可以按存储的兆字节和生成的流量付费。所以在货币上有点不同。

    但从技术角度来看,从我所了解的情况来看,这两个系统都可以帮助您存储任意大小的非结构化数据(这取决于我从CouchDB了解的底层操作系统)。

    我不知道为他们两个设计一个统一的接口有多容易,这样你就可以在需要时更改你的“数据存储提供者”?不必更改任何代码。

    我也不知道这在技术上是否容易实现,还没有详细研究他们的协议。但最好将提供商的决定推迟到最晚。

    此外,对于集成测试而言,这可能很有趣:例如,您可以对本地couchdb实例进行测试,并对S3运行代码以供生产使用。

    从另一个角度来阐述我的问题:亚马逊的S3和CouchDB本质上是在解决完全相同的问题,还是这是一个疯狂的问题,而我错过了整个问题?

    更新的问题

    在吉姆精彩的回答之后,让我把这个问题重新表述为:

    “couchdb和amazon simpledb的公共接口”

    按照同样的思路,那么您看到了CouchDB和SimpleDB之间的公共接口有问题吗?

    3 回复  |  直到 10 年前
        1
  •  3
  •   David Tchepak    10 年前

    从技术上讲,一个公共层是可能的。不过,我怀疑这是否合理。 CouchDB为您的文档提供了集成的map/reduce功能,这些文档显示为“视图”。我不认为simpledb有那样的东西。另一方面,simpledb有couchdb没有的查询表达式。当然,如果您在开发时知道您的查询,那么您可以在couchdb中将这些表达式建模为视图。

    此外,公共函数不超过创建/更新/删除一个密钥文档对。

        2
  •  11
  •   Jim Puls    16 年前

    你漏掉了重点,只是有点。couchdb是一个数据库。S3是一个文件系统。它们都是相对非结构化的,但是使用S3,您将文件存储在键下,而使用CouchDB,您将(任意结构化)数据存储在键下。

    类似于CouchDB的Amazon Web服务 Amazon SimpleDB .

    像你正在寻找的东西已经存在于Ruby中了,它被称为 Moneta . 它甚至可以在S3上存储东西,这可能正是你想要的。

        3
  •  4
  •   Ben Ahlan    15 年前

    吉姆,你错了。S3不是文件系统。它是用于键值存储的WebService。

    亚马逊为你提供了一把钥匙。是的,该键的值可以是表示文件的数据。但是,如何在亚马逊系统中进行管理则完全不同。它可以存储在一个节点、多个节点、具有CloudFront的地理战略节点等中。该键本身没有任何指示系统将如何管理文件的内容。键的值决不是直接的文件。代表文件的是数据。该值最终如何解析为客户机接收的文件是完全独立的。

    该键的值实际上可以是不代表文件的数据。它可以是JSON字典。从这个意义上说,S3的使用方式与CouchDB相同。

    所以我不认为这个问题遗漏了重点。事实上,这是一个完全合法的问题,因为couchdb中的数据不分布在节点之间。这可能会影响性能。

    我们甚至不要谈论AmazonSimpleDB。那是分开的。请不要混用条款,然后在此基础上提出索赔。

    如果您不相信这一说法,并且有人要求,我很乐意提供一个代码位来说明S3中的JSON字典。

    我尊重你对吉姆其他问题的回答。但是,在这里,你显然是错的,看不到这些观点是如何被证明是合理的。