我寻求 DBMS:
- 开箱即用水平缩放,没有或几乎没有手写“胶水”
- 允许通过少数索引中的任何一个查询记录
- 易于维护和扩展(即我们只需添加新服务器,DBMS 自行重新分配数据)
目标是重新设计并最终从当前解决方案(基于 Oracle RAC)迁移。旧解决方案的问题在于它的设计和代码质量很差,而不是 Oracle 本身。
关于我们的数据。我们有两种类型的记录:节点和事件。两者都被添加到 db 并且永远不会被删除。大约有 2e9 个节点和 5e11 个事件。每个事件都绑定到一个节点。我们需要的查询是:
- 根据节点的少数属性 n1、n2、n3 查询节点
- 按 node_id 查询节点
- 按时间间隔及其主要属性 e1 查询事件
- 按 node_id 查询事件
当然,我们需要插入新的节点和事件。查询 1-4 的数量是每天几千个,不会增长很多,但所有数据都需要可访问。每天的新事件数量大致等于节点数量。每天的新节点数量最多为几百个。
我们不需要事务或连接来保持一致性,因为数据在插入后始终是一致的,并且永远不会被删除。我们本可以使用单独的 postgres 服务器(并手动分派查询)来实现它,但有更好的方法吗?我们会考虑适合我们任务的任何(SQL 或 NoSQL)开源数据库。我们也不受任何特定语言的约束。优先级是易于扩展,同时保持良好的查询速度。