0

我正在对分布式数据库进行一些研究。我得出的结论是,最难的部分是分布式查询,在多条记录上,查询非常通用,例如想象一个带有“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 个节点上拆分;并不难。使用较大的 OFFSET 会有点困难,但无论如何都可能通过调整日期范围来完成分页。

但无论如何 - 我想避免用手滚动任何东西!我正在寻找一种第三方解决方案(最好是免费的),它可以让我在多个节点/机器上有效地执行该示例中的查询。原子性不是必需的。有谁知道从哪里开始?

4

2 回答 2

0

如果您要按该范围进行查询并将其限制为仅几台服务器,则一种想法是对您的数据集进行分区。您可能想检查表分区在不同数据库中的工作方式,并计划相应地对数据进行分区。

于 2019-02-08T22:20:57.217 回答
0

您需要的是NewSQL数据库。并且有许多免费的开源 NewSQL 数据库可以满足您的要求,例如TiDBCockroachDB

如果你对 pgSQL 语法有偏好,或者你的业务逻辑现在正在使用 PostgreSQL,你可以试试 CockroachDB。否则,我建议你选择 TiDB。TiDB 支持分布式事务和分布式连接,完全兼容 MySQL 语法,有很多成功的用例。

免责声明:我在开发 TiDB 的 PingCAP 工作。

于 2018-04-14T02:05:46.567 回答