本发明属于数据库技术领域,尤其是涉及一种MPP数据库数据动态重分布的方法及装置。
背景技术:
分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。近年来,随着数据量的高速增长,分布式数据库技术也得到了快速的发展,传统的关系型数据库开始从集中式模型向分布式架构发展,基于关系型的分布式数据库在保留了传统数据库的数据模型和基本特征下,从集中式存储走向分布式存储,从集中式计算走向分布式计算。
分布式数据库集群中,为了获得更大的存储容量和更高的并发访问量,通常会将数据分散到各个节点存储,分布方式一般是按照特定的字段进行hash分布建表,当涉及hash键的关联、分组等操作时,只需在本地进行,相当于获得了数倍于单个节点的计算能力。但是当一些sql操作涉及到非hash字段时,如非hash键关联、非hash键group by等操作,会对原表数据或中间结果进行动态重分布,即把一个节点上的数据按一定的规则(如按关联字段hash分布)分发到其他节点,这样就能正确的完成分布式执行计划,随之而来的是通讯开销。
随着数据库处理的数据量越来越大,数据库集群的节点数越来越多,同时数据库支持的业务逻辑也越来越复杂,导致动态重分布的频率和需要处理的数据量都快速增加,大量增加了各节点的网络带宽,增加了通讯开销;同时由于动态重分布过程是各节点间交叉连接,当节点数很多时,每条sql都会在同一节点创建大量的连接