SimpleDB与MongoDB类似吗?它们都是键/值类型数据库吗?

时间:2009-12-10 22:37:22

标签: mongodb amazon-simpledb nosql

SimpleDB是否与MongoDB类似?

4 个答案:

答案 0 :(得分:25)

最重要的相似之处在于它们都避免了关系模型。除此之外,它们与你看待它们的方式完全不同。以下是十几种比较它们的方法的细分。

SimpleDB的

  1. 由亚马逊托管,维护和扩展的亚马逊服务。您需要为每月免费使用等级以外的用户付费。
  2. 所有数据都在多个数据中心的后台实时复制
  3. 所有副本都可以为实时请求提供服务
  4. 网络或服务器发生故障后,任何不同步节点将自动重新同步
  5. 后台复制会产生最终的一致性,但会提高(理论上)可用性
  6. 所有数据都存储为String name / String value对,每个值都与ItemName
  7. 相关联
  8. 每个项目限制为半兆字节(每个名称或值只能为1024字节长,每个项目包含256个名称/值对),每个域可以容纳10GB
  9. 这些限制使其适用于可以分解成小块的数据集。
  10. SimpleDB针对许多并行执行的小请求进行了优化
  11. 每个数据域都有吞吐量限制
  12. 通过在更多域中传播数据来实现水平可伸缩性
  13. 所有属性值都自动编入索引,复合索引不存在(但可以模拟)
  14. 使用(精简的)类似SQL Select的查询语言
  15. 执行查询

    MongoDB的

    1. 您在自己的服务器上安装和维护的开源产品。
    2. 可以在主从模式下复制数据
    3. 只有主服务器可以为实时写入请求提供服务,从服务器可以提供服务查询(非推荐的有限主 - 主模式除外)
    4. 在网络或服务器发生故障或副本落后太多后,将始终需要操作员干预。
    5. 单一主人非常一致。
    6. 所有数据都存储为序列化JSON文档,允许大量数据类型
    7. 每个文档限制为4MB,可以使用特殊文档分块系统存储更大的文档
    8. 最适合中小型数据和小型二进制对象
    9. 吞吐量限制由MongoDB和您的硬件决定
    10. 通过更大的服务器实现垂直可扩展性,通过当前正在开发的分片模块,在您自己的服务器群集中实现未来水平可扩展性的潜力。
    11. 文档ID会自动编入索引。可以根据需要创建和删除索引。索引可以是单个键或复合词。
    12. 使用JSON样式查询语言执行查询。

答案 1 :(得分:6)

尝试检查此链接MongoDB vs. SimpleDB 它是比较网格。我希望它对你有所帮助。

答案 2 :(得分:4)

SimpleDB is described as

  

数据模型很简单:

     
      
  • 组织了大量项目   进入域名。
  •   
  • 项目很少哈希   包含键属性的表,   价值对。
  •   
  • 属性可以   搜索各种词典   查询。
  •   

MongoDB是bit simpler

  

数据库管理集合   存储的类似JSON的文档   以二进制格式称为   BSON。

答案 3 :(得分:1)

我对mongodb有很好的了解,刚开始使用SimpleDB。所以首先它们都不是key-value storage。 Mongodb和SimpleDB是document based nosql database,它是无架构的。这意味着您无需为“表格”创建架构。在输入数据之前(基本上它意味着你可以存储你想要的一切)。

基本上这里的相似性结束了。我将使用S代表SimpleDB,将M代表Mongo。

  • M是用C ++编写的,S是用Erlang编写的(不是最快的语言)
  • M是开源的,安装在任何地方,S是专有的,只能在亚马逊AWS上运行。对于S
  • ,您还应该pay for a whole bunch of staff
  • S有一大堆strange limitations。 M limitations更合理。最奇怪的限制是:
    • 域(表)的最大大小为10 GB
    • 属性值长度(字段大小)为1024字节
    • 选择回复中的最大项目 - 2500
    • Select的最大响应大小(S可以返回的最大数据量) - 1Mb
  • S supports only a few languages(java,php,python,ruby,.net),M supports way more
  • 都支持REST
  • S的查询语法与SQL非常相似(但功能不强)。使用M,您需要学习一种看起来像json的新语法(也是直接学习基础知识)
  • 使用M,您必须了解如何构建数据库。因为很多人认为无模式意味着你可以在数据库中抛出任何垃圾并轻松地提取它,他们可能会惊讶于Junk in,Junk out maxim工作。我认为S中也是如此,但不能肯定地声称它。
  • 两者都不允许不区分大小写的搜索。在M中你可以使用正则表达式(丑陋/没有索引)克服这个限制,而不引入额外的小写字段/应用程序逻辑。
  • S中的
  • 只能进行on one field
  • 因为5s timelimit count in S can behave strange。如果5秒过去且查询尚未完成,您最终会得到一个部分号码和一个允许您继续查询的令牌。应用程序逻辑负责收集所有这些数据并进行总结。
  • everything is a UTF-8 string,这使得在S中处理非字符串值(如数字,日期)很麻烦.M类型支持是way richer
  • 两者都没有交易和加入
  • M支持compression,这对nosql商店非常有帮助,其中相同的字段名称将全部存储起来。
  • S仅支持单个索引,M has single, compound, multi-key, geospatial etc
  • 都支持复制和分片

您应该考虑的最重要的事情之一是SimpleDB有一个非常基本的查询语言。甚至不支持group bysum averagedistinct等基本内容以及数据操作,因此功能并不比Redis / Memcached更丰富。另一方面,Mongo支持丰富的查询语言。