分布式数据库方案

时间:2018-03-05 05:29:10

标签: database distributed-computing distributed-system distributed-transactions distributed-database

我正在对分布式数据库进行一些研究。我得出的结论是,最难的部分是分布式查询,而不是多个记录,其中查询非常通用,例如:设想一个带有" 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会有点困难,但可能通过调整日期范围来完成分页。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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