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

SimpleDB与MongoDB类似吗?它们都是键/值类型数据库吗?,mongodb,amazon-simpledb,nosql,Mongodb,Amazon Simpledb,Nosql,SimpleDB与MongoDB类似吗?SimpleDB: 数据模型很简单: 组织了大量的项目集合 进入域 项目是小散列 包含键的属性的表, 值对 属性可以是 用各种词典进行搜索 查询 MongoDB是一个: 该数据库管理数据的集合 存储的类似JSON的文档 以称为 布森 最重要的相似之处在于,它们都避免使用关系模型。除此之外,他们主要是不同的任何方式,你看他们。这里有十几种比较方法的分类 SimpleDB 由亚马逊托管、维护和扩展的亚马逊服务。除了免费使用层之外,您每月使用的内容都会被计费

SimpleDB与MongoDB类似吗?

SimpleDB:

数据模型很简单:

  • 组织了大量的项目集合 进入域
  • 项目是小散列 包含键的属性的表, 值对
  • 属性可以是 用各种词典进行搜索 查询
MongoDB是一个:

该数据库管理数据的集合 存储的类似JSON的文档 以称为 布森


最重要的相似之处在于,它们都避免使用关系模型。除此之外,他们主要是不同的任何方式,你看他们。这里有十几种比较方法的分类

SimpleDB
  • 由亚马逊托管、维护和扩展的亚马逊服务。除了免费使用层之外,您每月使用的内容都会被计费
  • 所有数据都在后台跨多个数据中心实时复制
  • 所有副本都能够为实时请求提供服务
  • 网络或服务器出现故障后,任何不同步的节点都将自动重新同步
  • 后台复制可实现最终的一致性,但具有更高的(理论上的)可用性
  • 所有数据都存储为字符串名称/字符串值对,每一对都与一个ItemName关联
  • 每个项限制为半兆字节(每个名称或值只能有1024字节长,每个项可容纳256个名称/值对),每个域可容纳10GB
  • 这些限制使它适用于可以分解为小块的数据集
  • SimpleDB针对并行执行的许多小请求进行了优化
  • 每个数据域都有吞吐量限制
  • 横向可扩展性是通过将数据分布到更多域来实现的
  • 所有属性值都自动索引,复合索引不存在(但可以模拟)
  • 查询是使用(精简的)类似SQL Select的查询语言执行的

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

  • 我对mongodb有相当的了解,并且刚刚开始使用SimpleDB。所以首先,他们两个都不是。Mongodb和SimpleDB是无模式的。这意味着您在输入数据之前不需要为“表”创建模式(基本上,这意味着您可以在其中存储所需的一切)

    基本上相似性到此为止。我将用S表示SimpleDB,用M表示Mongo

      M是用C++编写的,S是用Erlang(不是最快的语言)编写的。
    • M是开源的,安装在任何地方,S是专有的,只能在AmazonAWS上运行。你也应该为S
    • S有一大堆。M更合理。最奇怪的限制是:
      • 域(表)的最大大小为10 GB
      • 属性值长度(字段大小)为1024字节
      • 选择响应中的最大项目数-2500
      • Select的最大响应大小(S可以返回给您的最大数据量)-1Mb
    • S(java、php、python、ruby、.net)、M
    • 两者都支持休息
    • S的查询语法与SQL非常相似(但功能不太强大)。使用M,您需要学习一种类似json的新语法(学习基础知识也很简单)
    • 使用M,您必须学习如何构建数据库。因为许多人认为无模式意味着可以在数据库中抛出任何垃圾,并轻松地提取这些垃圾,所以他们可能会惊讶于“垃圾输入,垃圾输出”的格言是有效的。我假设S也是如此,但不能肯定地说
    • 两者都不允许不区分大小写的搜索。在M中,您可以使用regex以某种方式(丑陋/无索引)克服此限制,而无需引入额外的小写字段/应用程序逻辑
    • 在S中,只能进行排序
    • 因为5s的时间限制。如果5秒钟过去了,查询还没有完成,那么您将得到一个部分数字和一个允许您继续查询的令牌。应用程序逻辑负责收集所有这些数据并进行汇总
    • ,这使得在S.M类型支持中处理非字符串值(如数字、日期)变得很麻烦
    • 两者都没有事务和联接
    • M支持,这对nosql存储非常有用,在nosql存储中,相同的字段名被重新存储
    • S只支持一个索引M
    • 两者都支持复制和分片
    你应该考虑的最重要的事情之一是SimuldB有一个非常简单的查询语言。甚至像
    分组依据
    求和
    平均,
    不同
    以及数据操作这样的基本功能也不受支持,因此其功能实际上并不比红色丰富