我做了一些研究,分布式数据库。我的结论是最难的部分就是分布式查询,在多条记录,其中查询是很普通的如想象着有“DateTransaction”领域的事务表。这个查询(伪SQL)将是相当棘手:
SELECT * FROM Transactions
WHERE DateTransaction>= '2016-01-01' and DateTransaction<= '2017-09-01' --between jan 2016 and before sep 2017
ORDER BY DateTransaction DESC
OFFSET 0
FETCH 100 -- take records between 0 and 99 inclusive
手工轧制这样的查询稍微有效的解决方案;其中数据拆分为N个节点;并不难。这是比较困难的一大片一位偏移,但可能会分页通过反正调整日期范围内进行。
但不管怎么说 - 我想避免手滚动的东西!我要寻找一个第三方解决方案(最好是免费的),它可以让我有效地完成查询,如在多个节点/机器的一个在该实例。原子性是没有必要的。任何人都知道从何处着手?
你需要的是NewSQL数据库。而且有许多是免费的开源数据库NewSQL在那里能满足您的要求,像TiDB,CockroachDB。
如果您有pgSQL的语法或你的业务逻辑是用PostgreSQL的偏好,现在,你可以尝试CockroachDB。否则,我建议你选择TiDB。 TiDB支持分布式事务和distributed join,是与MySQL的语法完全兼容,并拥有众多成功的使用案例。
免责声明:我在PingCAP其发展TiDB工作。
一种想法是,如果你要通过一系列查询,并将其限制只是几台服务器进行分区数据集。您可能要检查表分区在不同的数据库是如何工作的,并计划相应的分区数据。