寻找所有节点都是读/写的分布式/可扩展数据库解决方案?不是MongoDB?

寻找所有节点都是读/写的分布式/可扩展数据库解决方案?不是MongoDB?,mongodb,scalability,distributed,eventual-consistency,database,Mongodb,Scalability,Distributed,Eventual Consistency,Database,我希望实现一个可以在地理上广泛分布的数据库,这样每个节点都可以读/写,最终与所有其他节点保持一致。我应该去哪里 出于其他原因,我认为MongoDB似乎是一个不错的选择,直到我谈到这个问题。显然,所有MongoDB节点都是可读的,但只有主节点是可写的?有什么办法可以解决这个问题吗?我不能允许写入数据库时出现单点故障。我刚刚完成了对几个类似数据库的检查。我和Mongo在一起的原因不同。Riak和Cassandra都是Amazon的Dynamo的实现,它们都可以很好地实现这一点。同时,他们对Riak和

我希望实现一个可以在地理上广泛分布的数据库,这样每个节点都可以读/写,最终与所有其他节点保持一致。我应该去哪里


出于其他原因,我认为MongoDB似乎是一个不错的选择,直到我谈到这个问题。显然,所有MongoDB节点都是可读的,但只有主节点是可写的?有什么办法可以解决这个问题吗?我不能允许写入数据库时出现单点故障。

我刚刚完成了对几个类似数据库的检查。我和Mongo在一起的原因不同。Riak和Cassandra都是Amazon的Dynamo的实现,它们都可以很好地实现这一点。同时,他们对Riak和其他一些数据库进行了很好的比较。对于您的具体问题,我认为Riak和Cassandra都在任何节点上处理写操作,Riak的提交使用向量时钟,Cassandra的提交使用时间戳来处理冲突

除此之外,您还有其他一些选择:

  • 可以做很多事情,可以在不同的节点上并发写。它的设计适用于每个文档/记录的许多属性
  • 具有良好的多写冲突支持,但文档空间更简单
  • 我读了一篇关于无模式MySQL的很好的论据,对仍然是绿色的表示赞同

我不确定这是一个完整的答案。我的搜索花了几周时间,大约50页的笔记,但是如果大的、分布式的、安全的书写是主要标准,那么这应该会让你前进。

如果你担心的是单点故障: MongoDB使用复制集来分发读取,并使用分片来分发写入。为了实现您想要的,您可以将系统分片,每个分片都是一个副本集。如果碎片中的主节点死亡,则会自动选择新的主节点,因此不会出现单点故障。 注意:MongoDB不支持多主机复制

我是

对不起,我还没来得及展开就被切断了

1) 首先,coach很容易在地理上分布—您可以通过http与它交谈,这对于分布式项目来说非常好

2) coach内置了复制功能

更好的是,您可能会发现它更合适,因为它是专门为集群而设计的

我花了几周时间评估Mongo/Cassandra/Coach等人,并认为总的来说,对于广泛的应用,Coach非常适合

我想你也应该看看。当涉及到分布式最终一致的数据库时,它当然符合要求。几年来,我在许多项目中使用了它,它做到了tin上所说的。我唯一担心的是你基本上是把你所有的数据放进第三方的黑盒子里。。。但它确实有效,可以缩放并勾选所有框


希望这有助于使事情更加充实。

取决于您希望如何分发您的文章

切分:如果您希望在密钥上分发写操作,MongoDB有一个很好的自动切分功能。为了实现冗余,您可以创建多个副本(主从)对,然后通过中央服务(mongos)为每个副本(主从)对分配一个密钥范围。读取将按键范围静态分布

多主机:

  • 如果您的系统足够小(GB,而不是TB),CouchDB有一个更复杂的合并复制方案,它是为在发生节点故障时进行快速、可靠的恢复而构建的。使用CouchDB,每个节点都有一个完整的数据副本,集群中的所有节点都可以写和读

  • 如果每小时有数百万行,Cassandra将使用基于对等的复制方案,如果您愿意稍微提高读取性能,则可以将写入扩展到CouchDB之外

  • HBase还可以扩展写入和读取,但更适合于面向批处理的写入功能(加载日志文件),因为它位于HDF上,写入需要接近最小块大小(64MB、128MB…),才能将写入提交到磁盘


  • 希望这能有所帮助。

    您可以使用CloudTran这样的产品来处理跨MySQL、Oracle、SQL Server等常见数据库的非常快速的分布式事务。

    这是NuoDB的设计目标之一,该产品今天就做到了这一点


    您可以跨多个数据中心以事务方式读取(查询)、写入(插入、更新、删除)或执行任何其他操作,就像数据库位于单个位置一样。NuoDB是真正一致的,而不是最终一致的。它使用乐观异步消息传递和分布式版本控制来保证ACID事务。NuoDB对标准SQL有丰富的支持。

    我选择Riak。尽管Mongo确实能够像@Sridhar所说的那样分发读写操作,但在操作上Riak比我刚才在收件箱中看到的要容易得多。Rapleaf的人正在公开他们的关键价值商店,汉克。为什么?它解决了我的担忧吗?如果是,怎么做?似乎这不是问题的答案。延长我的回答,为它最初的简洁性道歉。我将更仔细地研究CouchDB。不幸的是,亚马逊将无法工作。进入黑盒子的数据最终将是敏感的政府信息。