我正在做一些关于分布式数据库的研究。我的结论是,最困难的部分是分布式查询,跨多个记录,其中查询是非常通用的,例如,想象一个带有"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个节点。使用较大的偏移量会有点困难,但无论如何都可以通过调整日期范围来完成分页。
但不管怎样-我想避免手卷任何东西!原子性不是必需的。有人知道从哪里开始吗?
发布于 2018-04-14 10:05:47
你需要的是NewSQL数据库。
如果您对pgSQL语法有偏好,或者您的业务逻辑现在正在使用PostgreSQL,您可以尝试CockroachDB。否则,我建议您选择TiDB。TiDB支持分布式事务和distributed join,完全兼容MySQL语法,有许多成功的用例。
免责声明:我在开发TiDB的PingCAP工作。
发布于 2019-02-09 06:20:57
一种想法是,如果您要按该范围进行查询,则对数据集进行分区,并将其限制在几个服务器上。您可能希望检查表分区在不同数据库中的工作方式,并计划相应地对数据进行分区。
https://stackoverflow.com/questions/49103984
复制相似问题