【问题标题】:Distributed database solutions分布式数据库解决方案
【发布时间】:2018-08-12 17:25:26
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-06
        • 1970-01-01
        • 2011-03-23
        • 2014-12-01
        • 1970-01-01
        • 2011-08-21
        • 2018-06-07
        • 1970-01-01
        • 2012-09-04
        相关资源
        最近更新 更多