繁体   English   中英

具有自动水平缩放功能的数据库

[英]database with automatic horizontal scaling out of the box

我正在寻找DBMS:

  1. 无需手写手写“胶水”即可水平缩放
  2. 允许通过少数几个索引中的任何一个查询记录
  3. 易于维护和扩展(即,我们只需添加新服务器,DBMS即可自行分配数据)

目标是重新设计并最终从当前解决方案(基于Oracle RAC)迁移。 旧解决方案的问题在于糟糕的设计和代码质量,而不是Oracle本身。

关于我们的数据。 我们有两种类型的记录:节点和事件。 两者都被添加到数据库,并且从未删除。 大约有2e9个节点和5e11个事件。 每个事件都绑定到一个节点。 我们需要的查询是:

  1. 通过其少数属性n1,n2,n3查询节点
  2. 通过node_id查询节点
  3. 按时间间隔及其主要属性e1查询事件
  4. 通过node_id查询事件

当然,我们需要插入新的节点和事件。 每天查询1-4的数量是几千个,并且增长不会很快,但是所有数据都需要可访问。 每天新事件的数量大约等于节点的数量。 每天最多有数百个新节点。

我们不需要事务或联接来保持一致性,因为数据在插入后始终保持一致,并且永不删除。 我们可以使用单独的postgres服务器(和手动分派查询)来实现它,但是有更好的方法吗? 我们会考虑适合我们任务的任何(SQL或NoSQL)开源数据库。 我们也不受任何特定语言的约束。 当务之急是轻松扩展,同时保持良好的查询速度。

您可能想看看Riak 这是一个KVS,以可靠性,易扩展性和读写功能而著称。 它碰巧是用erlang编写的,但是您无需了解任何有关erlang的知识就可以使用它。 您可以通过http和协议缓冲区与之对话。

因为它是KVS,所以您只需购买id即可解决存储(2)和(4)的问题。 为了获得(1)和(3),您可能需要使用二级索引 (aka 2i)。 您没有提到(1)和(3)的性能要求,但是我的理解是2i比常规阅读要慢得多,因此可能是您需要集中精力进行性能测试的地方。

无论如何,请看一下用例 ,看看riak是否可能合适。 此外,在其vimeo频道上还有很多关于riak制作的精彩故事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM