CN104063486B - 一种大数据分布式存储方法和系统 - Google Patents

一种大数据分布式存储方法和系统 Download PDF

Info

Publication number
CN104063486B
CN104063486B CN201410315506.1A CN201410315506A CN104063486B CN 104063486 B CN104063486 B CN 104063486B CN 201410315506 A CN201410315506 A CN 201410315506A CN 104063486 B CN104063486 B CN 104063486B
Authority
CN
China
Prior art keywords
division
data
node
task
inquiry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201410315506.1A
Other languages
English (en)
Other versions
CN104063486A (zh
Inventor
蒲思羽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Federal Science And Technology Ltd In Central Asia Sichuan
Original Assignee
Federal Science And Technology Ltd In Central Asia Sichuan
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Federal Science And Technology Ltd In Central Asia Sichuan filed Critical Federal Science And Technology Ltd In Central Asia Sichuan
Priority to CN201410315506.1A priority Critical patent/CN104063486B/zh
Publication of CN104063486A publication Critical patent/CN104063486A/zh
Application granted granted Critical
Publication of CN104063486B publication Critical patent/CN104063486B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Abstract

本发明提供了一种大数据分布式存储方法和系统,该方法包括:将数据管理引擎运行在主节点上,对用户查询进行编译、转换和优化、生成查询执行计划并执行,进行元数据管理和节点监控;在分布式计算节点上运行服务器进程,执行分布式计算任务;将分布式计算的工作进程以及单节点数据库部署在数据节点;将子查询在数据库中执行或者在分布式计算框架中执行。本发明增加了将查询下推到数据库中执行的机会,避免跨节点连接带来的数据传输代价,提高了查询性能。

Description

一种大数据分布式存储方法和系统
技术领域
本发明涉及云存储,特别涉及一种大数据分布式存储方法和系统。
背景技术
随着移动互联网、物联网等应用的飞速发展,全球数据量出现了爆炸式增长。数据量的飞速增长预示着现在已经进入了大数据时代。网络运营商拥有庞大的用户,同时具有对终端及用户上网通道的掌控能力,使得在用户行为分析方面具有很好的数据基础,深入分析用户流量行为特征和规律,发现用户潜在消费需求,是提升价值和经营水平的有效手段。然而,不仅仅是数据规模越来越大,而且数据类型多和处理实时性要求都极大地增加了大数据处理的复杂度。大数据给传统的数据分析处理技术(例如并行数据库、数据仓库)带来的技术挑战。传统数据分析处理技术无法处理大数据的高扩展性和海量需求;传统数据分析处理往往只针对某一种类型数据和比较单一,大数据具有数据量巨大、结构复杂、类型众多等特点,这对大数据的存储、处理与分析提出了新的挑战。并行数据库的高效性和稳定性成为数据分析在性能上的首选。但是基于成本的考虑,随着云计算服务平台的普及,将大规模数据分析任务从部署在并行数据库的高端服务器转移至更便宜的无共享体系结构的低端服务器集群上,成为当下海量数据分析真正需要解决的成本瓶颈问题。
因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。
发明内容
为解决上述现有技术所存在的问题,本发明提出了一种大数据分布式存储方法,其特征在于,包括:
一种大数据分布式存储方法,用于在云存储系统中实现大数据的存储和查询,所述云存储系统包括主节点,分布式计算节点和数据节点,其特征在于,包括:
将数据管理引擎运行在主节点上,接收用户查询,对查询进行编译、转换和优化、生成查询执行计划并执行查询,同时进行元数据管理和节点监控;
在分布式计算节点上运行服务器进程,执行分布式计算任务;
将分布式计算的工作进程以及单节点数据库部署在数据节点,将数据表存储在数据节点的数据库中,
将由用户查询转换成的子查询在数据库中执行,或者在分布式计算框架中执行。
优选地,所述数据表使用二维关系表结构,数据表的存储采用独立划分存储和组合划分存储,其中:
在对表进行独立划分时,指定划分数n、划分所依据的划分键属性列AP以及冗余系数k。对于需要划分的表的每一条元组,根据划分键AP的值计算出该元组所属的划分ID,然后将该元组存储到该划分对应的一个或者多个节点的数据库中;
如果事实表A的划分键AP上是表A的外码,指向维表B的主码BP即表A的划分键AP也是表A与表B连接时使用的连接键,则将跨节点的连接操作转化为本地的连接操作并下推到数据库中执行,此时将两个表的数据组合划分;在对表进行组合划分时,使用基于散列的划分或者基于范围的划分,将数据划分为p个独立的划分,每个划分的数据存储在k个不同节点上;若表B依赖于表A进行组合划分,则表B的划分数等于表A的划分数,且:
如果表B的冗余系数kB等于表A的冗余系数kA,则表B的每个划分的存储节点就是表A相应划分的存储节点;
如果表B的冗余系数kB小于表A的冗余系数kA,则表B的每个划分的存储节点是表B相应划分的存储节点中取前kB个节点;
如果表B的冗余系数kB大于表A的冗余系数kA,则表B的每个划分的存储节点除了包含表A的相应划分的存储节点之外再进行扩展,扩展的(kB-kA)个节点是紧接在原来的节点链之后的节点。
优选地,在将表的元组进行独立划分时,利用基于散列的划分或基于范围的划分,基于散列的划分在元组划分键AP上应用合适的散列函数,得到的散列值再对划分数n取模,即得到元组的划分ID;针对不同的数据类型,应用不同的散列函数;
基于范围的划分预先将属性列AP的候选值区间划分成多个连续的范围,每个范围对应一个划分,将元组属性列AP的值所在范围作为元组所述的划分。
优选地,所述查询执行进一步包括:
1)用户通过客户端提交查询,数据管理引擎接收用户查询;
2)对查询语句进行词法和语法分析,生成语法树,然后将语法树转化为标准的关系代数树,并进行语义检查;
将关系代数树转化为逻辑查询计划,并应用启发式规则对其进行初步优化;
根据代价模型选择最优的查询路径,生成实际查询计划;
将实际查询计划转化为一个任务调度图,所述任务调度图中的每个任务都是一个子查询,对应一个分布式计算任务,每个任务必须待其依赖的任务执行完成后才能开始执行;
3)调度和监控任务的执行,根据任务之间的执行依赖关系将任务有序提交给分布式计算服务器,并报告各个任务的执行状态,
将单个任务执行后生成的中间结果或者最终结果存储到数据库的表中或者写入分布式文件系统中,通过数据物化的方式在不同任务之间实现输入输出数据的传递;
4)将最后生成的结果返回给用户中。
根据本发明的另一方面,提供了一种大数据分布式存储系统,包括主节点,分布式计算节点和数据节点,其特征在于:
所述主节点,用于运行数据管理引擎,该数据管理引擎配置以接收用户查询,对查询进行编译、转换和优化、生成查询执行计划并执行查询,同时进行元数据管理和节点监控;
所述分布式计算节点,用于运行服务器进程,执行分布式计算任务;
所述数据节点,用于部署分布式计算的工作进程以及单节点数据库,数据表存储在所述数据库中,
其中,由用户查询转换成的子查询在数据库中执行,或者在分布式计算框架中执行。
优选地,所述数据管理引擎进一步包括:
元数据管理模块,用于存储数据库的元数据信息,所述元数据包括数据表的模式、表数据的划分与存储方法、数据节点信息;
查询编译模块,用于对用户提交的查询进行编译,生成逻辑查询计划;
查询优化模块,用于使用基于规则和基于代价的方法对逻辑查询计划进行优化,得到实际查询计划,然后将其转换成由分布式计算任务组成的任务调度图,提交给查询执行模块执行;
查询执行模块,用于调度分布式计算任务,按照各个任务的依赖关系,同步的执行调度,并监控任务的执行状态,其中每个任务只有在它所依赖的所有任务都执行成功后才能被启动;
节点监控与负载平衡模块,用于定时轮询各个数据节点的状态,发现节点失效后更新相应元数据,当冗余值低于预定义阈值后,对数据增加新的冗余,定期检查数据分布状态,当发现节点负载不平衡时对数据进行重新分布。
本发明相比现有技术,具有以下优点:
提出了结合数据库和分布式计算框架的混合数据仓库架构。改进了大数据的分布式存储方法,增加了将查询下推到数据库中执行的机会,避免跨节点连接带来的数据传输代价。基于队列的任务调度算法提高了查询并行度;同时支持简约查询的轻量级响应模式;具有很好的加载性能、查询性能和容错能力。
附图说明
图1是根据本发明实施例的大数据分布式存储方法的流程图。
具体实施方式
下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
本发明的一方面提供了一种大数据分布式存储方法和系统。图1是根据本发明实施例的大数据分布式存储方法流程图。如图1所示,实施本发明的具体实施方式如下:
云存储系统部署在无共享的集群上,使用Hadoop作为计算层,使用单节点数据库作为存储层,实现中间件技术。云存储系统主要分为三个部分:主节点、分布式计算节点(Hadoop节点)和数据节点。主节点上运行本发明的引擎,负责接收用户查询,对查询进行编译、转换和优化、生成查询执行计划并执行查询,同时还负责元数据管理和节点监控;Hadoop节点上运行Hadoop的服务器进程,负责执行Hadoop任务;数据节点上部署Hadoop的工作进程,同时也部署单节点数据库。数据表存储在数据节点的数据库中,用户查询将被转换成若干子查询,或者在数据库中执行,或者使用Hadoop的分布式计算框架执行。
根据本发明进一步的方面,用于管理大数据存储和查询的数据管理引擎提供组件如下:
元数据管理模块。负责存储数据库的元数据信息,包括数据表的模式、表数据的划分与存储方法、数据节点信息等,元数据存储在一个专门的数据库中。
查询编译与优化模块。查询编译模块对用户提交的查询进行编译,生成逻辑查询计划;查询优化模块使用基于规则和基于代价的方法对逻辑查询计划进行优化,得到实际查询计划,然后将其转换成由Hadoop任务组成的任务调度图,提交给查询执行模块执行。
查询执行模块。主要任务是有序地调度Hadoop任务。按照各个任务的依赖关系,同步的执行调度,即每个任务只有在它所依赖的所有任务都执行成功后才能被启动。查询执行模块负责对任务进行调度,并监控任务的执行状态。
节点监控与负载平衡模块。定时轮询各个数据节点的状态,发现节点失效后及时更新相应元数据。节点失效会造成数据冗余度下降,当冗余值低于预定义阈值后,负载平衡模块就需要对数据增加新的冗余。负载平衡模块还需要定期检查数据分布状态,当发现节点负载不平衡时对数据进行重新分布。
本发明的数据表使用二维关系表结构来表示实体以及实体之间联系。关系表的每一行代表一个元组,每一列称为一个属性。在关系模型中,无论是实体还是实体间的关系都使用关系表来表示。系统存在一个事实表和多个维表,所有维表都直接连接到事实表上。对于存储大数据的表,单个节点是无法存储所有数据的,因此必须将数据进行划分然后分布存储到多个节点中。由于数据库中涉及很多事实表与维表的连接操作,这些连接操作必然带来大量的网络传输。要提高查询效率,必须考虑如何尽可能减少数据的网络传输,譬如使连接操作尽可能地在本地节点执行而不需要跨节点执行。
本发明提供两种数据表的存储方法,包括:
1.表的独立划分存储
"独立"指的是表的大数据分布策略不受其他表影响,该方法比较适用于数据量很大的事实表。对表进行独立划分的时候需要指定划分数n、划分所依据的划分键属性列AP以及冗余系数k。对于需要划分的表的每一条元组,根据划分键AP的值计算出该元组所属的划分ID,然后将该元组存储到该划分对应的一个或者多个节点的数据库中。
本发明支持两种将表的元组进行划分的模式:基于散列的划分和基于范围的划分。基于散列的划分在元组划分键AP上应用合适的散列函数,得到的散列值再对划分数n取模,即得到元组的划分ID;
基于散列的划分需要指定散列函数,不合适的散列函数容易造成分布不均而导致数据倾斜,因此本发明的系统针对不同的数据类型应用不同的散列函数,以尽量避免数据倾斜;
基于范围的划分预先将属性列AP的候选值区间划分成多个连续的范围,每个范围对应一个划分,将元组属性列AP的值所在范围作为元组所述的划分。基于范围的划分通常比较适用于日期类大数据,通过将不同时间范围的大数据分布存储,能有效提高查询效率。
进一步地,本发明的使用改进的链式分布法则对大数据进行分布冗余存储。具体而言,在拥有n个节点的集群中,表A使用划分方法将大数据划分成p个划分,则需要选择p个节点作为存储节点,划分i的数据存储在节点i上,而其k个备份数据存储在节点i+1,i+2,…,i+k(对p取模)上。并且只有在节点i+1,i+2,…,i+k全部同时失效的情况下,划分i的数据才会丢失。
2.表的组合划分存储
独立划分的特点是数据表的划分数和节点分布不依赖于其他表,是完全独立的。连接操作的代价很大部分来自于网络传输。如果事实表A的划分键AP上正好是事实表A的外码,指向维表B的主码BP,即表A的划分键AP也是表A与表B连接时使用的连接键,表A和表B执行连接操作的连接条件是AP=BP,那么可以将跨节点的连接操作转化为本地的连接操作并下推到数据库中执行,只需要将两个表的数据组合放置。
为此,本发明设计了组合划分,使用基于散列的划分或者基于范围的划分方法将大数据划分为p个独立的划分,每个划分的数据存储在k个不同节点上。但是,"组合"即其大数据分布策略依赖于其他的表,因此组合划分的表的划分数和大数据分布都受到了限制。若表B依赖于表A进行组合划分,则表B的划分数等于表A的划分数,且表B的每个划分的存储节点都与表A一致。分以下3种情况:
1)如果表B的冗余系数kB等于表A的冗余系数kA,则表B的每个划分的存储节点正好就是表A相应划分的存储节点。
2)如果表B的冗余系数kB小于表A的冗余系数kA,则表B的每个划分的存储节点是表B相应划分的存储节点中取前kB个节点。
3)如果表B的冗余系数kB大于表A的冗余系数kA,则表B的每个划分的存储节点除了包含表A的相应划分的存储节点之外,还要再进行扩展,但是扩展的(kB-kA)个节点正好是紧接在原来的节点链之后的节点,形成扩展的链。
可以证明,无论表B的冗余系数属于哪种情况,通过组合划分方法得到的数据分布依然满足链式分布法则。组合划分存储增加了本地连接操作的机会,尽可能避免跨节点连接带来的数据传输代价。连接可方便地下推到数据库中执行,利用数据库查询优化技术获得较高的查询效率。
根据本发明另一方面,提出了基于上述架构和存储方法的查询方法。
本发明支持标准SQL语言的子集,支持多个表的连接操作和常见的聚集函数譬如SUM、COUNT、AVG等。
本发明的支持简单的分布式计算扩展,用户可以定义自己的Map和Reduce函数,而Mapper的输入数据由本发明的的底层框架来提供,用户可以指定Mapper的输入来自哪个表,并指定如何从表中获取数据的SQL语句。
根据本发明优选的实施例,查询执行过程主要包括以下步骤,分为查询的提交、编译与优化、执行与返回结果:
1)用户通过客户端提交查询,数据管理引擎将查询交给查询编译与优化模块。
2)查询编译与优化模块分别对于查询编译和查询优化两个部分。查询编译模块首先对查询语句进行词法和语法分析,生成语法树,然后将语法树转化为标准的关系代数树,在此过程中还涉及语义检查,包括检查表是否存在、数据类型是否匹配等。查询优化模块首先将关系代数树转化为逻辑查询计划,并应用启发式规则对其进行初步优化,譬如投影和选择谓词下推,然后根据代价模型选择最优的查询路径,生成实际查询计划。实际查询计划最后被转化为一个任务调度图,提交给查询执行模块执行。任务调度图中的每个任务都是一个子查询,对应一个Hadoop任务。任务之间存在着执行依赖关系,即每个任务必须待其依赖的任务执行完成后才能开始执行,且不能存在循环依赖,因此任务调度图也是有向无环图。整个过程中都需要访问元数据库以获得各种元数据信息。
3)查询执行模块负责调度和监控任务的执行,它根据任务之间的执行依赖关系将任务有序提交给Hadoop服务器,并报告各个任务的执行状态。多个任务可能并发执行。单个任务执行后生成的中间结果或者最终结果被存储到数据库的表中或者写入Hadoop分布式文件系统中。不同任务之间通过数据物化的方式实现输入输出数据的传递。
4)最后生成的结果将会被返回给用户,用户可以选择终端输出、存入数据库中。
可见,本发明将底层数据库存储与上层分布式计算框架无缝地结合起来,并灵活运用和组合各种执行路径以获得最优的查询执行方案。
在上述任务调度图方面,查询执行模块得到的任务调度图是一个有向无环图,图的节点就是单个Hadoop任务,节点之间的有向边代表任务之间的依赖关系。在调度任务时,既要满足任务之间的依赖顺序,又要尽量使任务的执行并行化。因为在同一时刻,可能同时存在多个可执行的任务,这些任务之间是相互独立的,如果串行执行则不能充分利用资源。本发明优选使用基于队列的任务调度算法,使用5个队列,分别对应任务的不同状态。最初,所有任务都在等待队列中;执行模块遍历等待队列中的所有的任务,如果存在任务的所有依赖的任务都已经执行成功,则将其转入就绪队列中;就绪队列中的任务将被提交给Hadoop服务器并转入运行队列,提交过程是异步的,即查询执行模块不会阻塞等待任务完成;执行模块定期检查运行队列中各任务的状态,如果成功则移入成功队列中,失败则移入失败队列中;执行模块迭代以上过程,直到所有任务都执行成功或者任何任务执行失败;只有当所有任务都执行成功后,整个查询执行才算成功。
查询执行的并行性体现在任务是异步提交的,执行模块不会因为等待任务执行完成而阻塞,因此当有多个任务同时变为可以执行状态时,执行模块几乎将它们同时提交给Hadoop服务器,这些任务的执行过程将会重叠并共享资源。
Hadoop任务的启动代价。对于简单的查询,如果按照正常的查询执行过程转化为Hadoop任务执行,很可能Hadoop任务的启动时间占据查询整体响应时间的绝大部分。本发明提供了另外一种查询执行模式,即轻量级响应模式,面对SQL的请求服务,应用查询解释器,查询优化模块和查询执行模块进行轻量级响应处理。当一个查询很简单而且可以不使用Hadoop任务执行时,查询执行模块就会直接连接各节点数据库执行查询,然后在本地将各节点的结果合并起来,并进行必要的聚集操作,最后将最终结果返回。这种方式避免了Hadoop任务的启动代价,整个查询的响应时间大大缩短。
根据本发明的另一方面,提供了一种大数据分布式存储系统,包括主节点,分布式计算节点和数据节点,其特征在于:
所述主节点,用于运行数据管理引擎,该数据管理引擎配置以接收用户查询,对查询进行编译、转换和优化、生成查询执行计划并执行查询,同时进行元数据管理和节点监控;
所述分布式计算节点,用于运行服务器进程,执行分布式计算任务;
所述数据节点,用于部署分布式计算的工作进程以及单节点数据库,数据表存储在所述数据库中,
其中,由用户查询转换成的子查询在数据库中执行,或者在分布式计算框架中执行。
优选地,所述数据管理引擎进一步包括:
元数据管理模块,用于存储数据库的元数据信息,所述元数据包括数据表的模式、表数据的划分与存储方法、数据节点信息;
查询编译模块,用于对用户提交的查询进行编译,生成逻辑查询计划;
查询优化模块,用于使用基于规则和基于代价的方法对逻辑查询计划进行优化,得到实际查询计划,然后将其转换成由分布式计算任务组成的任务调度图,提交给查询执行模块执行;
查询执行模块,用于调度分布式计算任务,按照各个任务的依赖关系,同步的执行调度,并监控任务的执行状态,其中每个任务只有在它所依赖的所有任务都执行成功后才能被启动;
节点监控与负载平衡模块,用于定时轮询各个数据节点的状态,发现节点失效后更新相应元数据,当冗余值低于预定义阈值后,对数据增加新的冗余,定期检查数据分布状态,当发现节点负载不平衡时对数据进行重新分布。
综上所述,本发明提出了结合数据库和分布式计算框架的混合数据仓库架构。改进了分布式存储方法,增加了将查询下推到数据库中执行的机会,避免跨节点连接带来的数据传输代价。基于队列的任务调度算法提高了查询并行度;同时支持简约查询的轻量级响应模式;具有很好的加载性能、查询性能和容错能力。
显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

Claims (5)

1.一种大数据分布式存储方法,用于在云存储系统中实现大数据的存储和查询,所述云存储系统包括主节点,分布式计算节点和数据节点,其特征在于,包括:
将数据管理引擎运行在主节点上,接收用户查询,对查询进行编译、转换和优化、生成查询执行计划并执行查询,同时进行元数据管理和节点监控;
在分布式计算节点上运行服务器进程,执行分布式计算任务;
将分布式计算的工作进程以及单节点数据库部署在数据节点,将数据表存储在数据节点的数据库中;
将由用户查询转换成的子查询在数据库中执行,或者在分布式计算框架中执行;
所述数据表使用二维关系表结构,数据表的存储采用独立划分存储和组合划分存储,其中:
在对表进行独立划分时,指定划分数n、划分所依据的划分键属性列AP以及冗余系数k;对于需要划分的表的每一条元组,根据划分键AP的值计算出该元组所属的划分ID,然后将该元组存储到该划分对应的一个或者多个节点的数据库中;
如果事实表A的划分键AP上是表A的外码,指向维表B的主码BP即表A的划分键AP也是表A与表B连接时使用的连接键,则将跨节点的连接操作转化为本地的连接操作并下推到数据库中执行,此时将两个表的数据组合划分;在对表进行组合划分时,使用基于散列的划分或者基于范围的划分,将数据划分为p个独立的划分,每个划分的数据存储在k个不同节点上;若表B依赖于表A进行组合划分,则表B的划分数等于表A的划分数,且:
如果表B的冗余系数kB等于表A的冗余系数kA,则表B的每个划分的存储节点就是表A相应划分的存储节点;
如果表B的冗余系数kB小于表A的冗余系数kA,则表B的每个划分的存储节点是表B相应划分的存储节点中取前kB个节点;
如果表B的冗余系数kB大于表A的冗余系数kA,则表B的每个划分的存储节点除了包含表A的相应划分的存储节点之外再进行扩展,扩展的(kB-kA)个节点是紧接在原来的节点链之后的节点。
2.根据权利要求1所述的方法,其特征在于:
在将表的元组进行独立划分时,利用基于散列的划分或基于范围的划分,基于散列的划分在元组划分键AP上应用合适的散列函数,得到的散列值再对划分数n取模,即得到元组的划分ID;针对不同的数据类型,应用不同的散列函数;
基于范围的划分预先将属性列AP的候选值区间划分成多个连续的范围,每个范围对应一个划分,将元组属性列AP的值所在范围作为元组所述的划分。
3.根据权利要求1所述的方法,其特征在于,所述查询执行进一步包括:
1)用户通过客户端提交查询,数据管理引擎接收用户查询;
2)对查询语句进行词法和语法分析,生成语法树,然后将语法树转化为标准的关系代数树,并进行语义检查;
将关系代数树转化为逻辑查询计划,并应用启发式规则对其进行初步优化;
根据代价模型选择最优的查询路径,生成实际查询计划;
将实际查询计划转化为一个任务调度图,所述任务调度图中的每个任务都是一个子查询,对应一个分布式计算任务,每个任务必须待其依赖的任务执行完成后才能开始执行;
3)调度和监控任务的执行,根据任务之间的执行依赖关系将任务有序提交给分布式计算服务器,并报告各个任务的执行状态,
将单个任务执行后生成的中间结果或者最终结果存储到数据库的表中或者写入分布式文件系统中,通过数据物化的方式在不同任务之间实现输入输出数据的传递;
4)将最后生成的结果返回给用户中。
4.一种大数据分布式存储系统,包括主节点,分布式计算节点和数据节点,其特征在于:
所述主节点,用于运行数据管理引擎,该数据管理引擎配置以接收用户查询,对查询进行编译、转换和优化、生成查询执行计划并执行查询,同时进行元数据管理和节点监控;
所述分布式计算节点,用于运行服务器进程,执行分布式计算任务;
所述数据节点,用于部署分布式计算的工作进程以及单节点数据库,数据表存储在所述数据库中,
其中,由用户查询转换成的子查询在数据库中执行,或者在分布式计算框架中执行;
所述数据表使用二维关系表结构,数据表的存储采用独立划分存储和组合划分存储,其中:
在对表进行独立划分时,指定划分数n、划分所依据的划分键属性列AP以及冗余系数k;对于需要划分的表的每一条元组,根据划分键AP的值计算出该元组所属的划分ID,然后将该元组存储到该划分对应的一个或者多个节点的数据库中;
如果事实表A的划分键AP上是表A的外码,指向维表B的主码BP即表A的划分键AP也是表A与表B连接时使用的连接键,则将跨节点的连接操作转化为本地的连接操作并下推到数据库中执行,此时将两个表的数据组合划分;在对表进行组合划分时,使用基于散列的划分或者基于范围的划分,将数据划分为p个独立的划分,每个划分的数据存储在k个不同节点上;若表B依赖于表A进行组合划分,则表B的划分数等于表A的划分数,且:
如果表B的冗余系数kB等于表A的冗余系数kA,则表B的每个划分的存储节点就是表A相应划分的存储节点;
如果表B的冗余系数kB小于表A的冗余系数kA,则表B的每个划分的存储节点是表B相应划分的存储节点中取前kB个节点;
如果表B的冗余系数kB大于表A的冗余系数kA,则表B的每个划分的存储节点除了包含表A的相应划分的存储节点之外再进行扩展,扩展的(kB-kA)个节点是紧接在原来的节点链之后的节点。
5.根据权利要求4所述的系统,其特征在于,所述数据管理引擎进一步包括:
元数据管理模块,用于存储数据库的元数据信息,所述元数据包括数据表的模式、表数据的划分与存储方法、数据节点信息;
查询编译模块,用于对用户提交的查询进行编译,生成逻辑查询计划;
查询优化模块,用于使用基于规则和基于代价的方法对逻辑查询计划进行优化,得到实际查询计划,然后将其转换成由分布式计算任务组成的任务调度图,提交给查询执行模块执行;
查询执行模块,用于调度分布式计算任务,按照各个任务的依赖关系,同步的执行调度,并监控任务的执行状态,其中每个任务只有在它所依赖的所有任务都执行成功后才能被启动;
节点监控与负载平衡模块,用于定时轮询各个数据节点的状态,发现节点失效后更新相应元数据,当冗余值低于预定义阈值后,对数据增加新的冗余,定期检查数据分布状态,当发现节点负载不平衡时对数据进行重新分布。
CN201410315506.1A 2014-07-03 2014-07-03 一种大数据分布式存储方法和系统 Expired - Fee Related CN104063486B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410315506.1A CN104063486B (zh) 2014-07-03 2014-07-03 一种大数据分布式存储方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410315506.1A CN104063486B (zh) 2014-07-03 2014-07-03 一种大数据分布式存储方法和系统

Publications (2)

Publication Number Publication Date
CN104063486A CN104063486A (zh) 2014-09-24
CN104063486B true CN104063486B (zh) 2017-07-11

Family

ID=51551200

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410315506.1A Expired - Fee Related CN104063486B (zh) 2014-07-03 2014-07-03 一种大数据分布式存储方法和系统

Country Status (1)

Country Link
CN (1) CN104063486B (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786808B (zh) * 2014-12-15 2019-06-18 阿里巴巴集团控股有限公司 一种用于分布式执行关系型计算指令的方法与设备
CN106202102B (zh) 2015-05-06 2019-04-05 华为技术有限公司 批量数据查询方法和装置
CN106570038B (zh) * 2015-10-12 2020-05-22 中国联合网络通信集团有限公司 一种分布式数据处理方法及系统
CN105302691B (zh) * 2015-10-20 2018-04-24 浪潮(北京)电子信息产业有限公司 一种元数据性能监控方法及系统
CN105183922A (zh) * 2015-10-26 2015-12-23 北京美数信息科技有限公司 一种高并发的存储装置
CN105205178A (zh) * 2015-10-26 2015-12-30 北京美数信息科技有限公司 一种多进程访问内存数据库系统
CN105824868B (zh) * 2015-12-24 2019-05-17 广东亿迅科技有限公司 一种分布式数据库数据处理方法和分布式数据库系统
CN107087010B (zh) * 2016-02-14 2020-10-27 阿里巴巴集团控股有限公司 中间数据传输方法及系统、分布式系统
CN106201361B (zh) * 2016-07-21 2019-02-12 南京华魄信息科技有限公司 一种具备应对n-5存储媒介失效的电力大数据存储方法
CN106528876B (zh) * 2016-12-09 2019-08-23 北京奇虎科技有限公司 分布式系统的信息处理方法及分布式信息处理系统
CN106844343B (zh) * 2017-01-20 2019-11-19 上海傲硕信息科技有限公司 指令结果筛选装置
CN106991116B (zh) * 2017-02-10 2020-04-14 阿里巴巴集团控股有限公司 数据库执行计划的优化方法和装置
CN108696559B (zh) * 2017-04-11 2021-08-20 华为技术有限公司 流处理方法及装置
CN107153679B (zh) * 2017-04-18 2020-11-24 北京思特奇信息技术股份有限公司 一种针对半结构化大数据的提取统计方法及系统
CN107329814B (zh) * 2017-06-16 2020-05-26 电子科技大学 一种基于rdma的分布式内存数据库查询引擎系统
CN107491510A (zh) * 2017-08-03 2017-12-19 国网江苏省电力公司信息通信分公司 一种混合异构数据源统一查询系统及分布式查询方法
CN107656980B (zh) * 2017-09-07 2020-09-22 北京神州绿盟信息安全科技股份有限公司 应用于分布式数据库系统中的方法及分布式数据库系统
CN107784103A (zh) * 2017-10-27 2018-03-09 北京人大金仓信息技术股份有限公司 一种访问hdfs分布式存储系统的标准接口
CN108874907A (zh) * 2018-05-25 2018-11-23 北京明略软件系统有限公司 一种数据查询方法和装置、计算机可读存储介质
CN109213761A (zh) * 2018-08-06 2019-01-15 北京马上慧科技术有限公司 一种自由扩展免迁移的分库分表方法
CN110909014A (zh) * 2018-09-14 2020-03-24 阿里巴巴集团控股有限公司 优化建议生成及数据库查询方法、装置、设备及存储介质
CN111338647B (zh) * 2018-12-18 2023-09-12 杭州海康威视数字技术股份有限公司 一种大数据集群管理方法和装置
CN111522640A (zh) * 2018-12-28 2020-08-11 第四范式(北京)技术有限公司 计算图的并行执行方法和设备
CN110008257B (zh) * 2019-04-10 2024-04-16 深圳市腾讯计算机系统有限公司 数据处理方法、装置、系统、计算机设备和存储介质
CN110134695B (zh) * 2019-05-21 2022-08-16 电子科技大学 一种面向流水线结构化数据查询的数据库智能分区方法
CN110737510B (zh) * 2019-10-23 2022-07-05 北京百度网讯科技有限公司 块设备管理系统
CN110909077A (zh) * 2019-11-05 2020-03-24 四川中讯易科科技有限公司 一种分布式存储方法
CN110955701B (zh) * 2019-11-26 2023-04-25 中思博安科技(北京)有限公司 一种分布式数据的查询方法、装置及分布式系统
CN111475588B (zh) * 2020-06-19 2020-12-08 阿里云计算有限公司 数据处理方法及装置
CN112118030B (zh) * 2020-08-27 2022-02-11 深圳市力合微电子股份有限公司 一种适用于泛dali系统的预应答方法
CN112182028A (zh) * 2020-09-29 2021-01-05 北京人大金仓信息技术股份有限公司 基于分布式数据库的表的数据行数查询方法和装置
CN112416926A (zh) * 2020-11-02 2021-02-26 浙商银行股份有限公司 支持国产cpu simd指令的分布式数据库高性能执行器设计方法
CN112269887A (zh) * 2020-11-09 2021-01-26 安徽华典大数据科技有限公司 一种基于图数据库的分布式系统
CN112347108A (zh) * 2020-11-26 2021-02-09 上海天旦网络科技发展有限公司 适用于混合后端的数据查询方法和系统
CN112527880B (zh) * 2020-12-16 2023-08-08 平安壹钱包电子商务有限公司 大数据集群元数据信息的采集方法、装置、设备及介质
CN113672669B (zh) * 2021-10-21 2021-12-31 大汉电子商务有限公司 基于分布式存储的数据查询方法及装置
CN114490780B (zh) * 2022-03-31 2022-07-22 北京数变科技有限公司 一种数据流的调度方法、装置、电子设备、介质及产品
CN114896278A (zh) * 2022-05-06 2022-08-12 北京偶数科技有限公司 数据查询方法、装置以及存储介质
CN116150263B (zh) * 2022-10-11 2023-07-25 中国兵器工业计算机应用技术研究所 一种分布式图计算引擎
CN116501743B (zh) * 2023-06-21 2023-11-24 中国电信股份有限公司 联表代价生成、重排方法和数据处理方法及装置、系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102546782A (zh) * 2011-12-28 2012-07-04 北京奇虎科技有限公司 一种分布式系统及其数据操作方法
CN102799622A (zh) * 2012-06-19 2012-11-28 北京大学 基于MapReduce扩展框架的分布式SQL查询方法
CN103098041A (zh) * 2010-03-31 2013-05-08 伊姆西公司 在无共享分布式数据库中查询优先级的设备和方法
CN103631870A (zh) * 2013-11-06 2014-03-12 广东电子工业研究院有限公司 一种用于大规模分布式数据处理的系统及其方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139772B2 (en) * 2003-08-01 2006-11-21 Oracle International Corporation Ownership reassignment in a shared-nothing database system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103098041A (zh) * 2010-03-31 2013-05-08 伊姆西公司 在无共享分布式数据库中查询优先级的设备和方法
CN102546782A (zh) * 2011-12-28 2012-07-04 北京奇虎科技有限公司 一种分布式系统及其数据操作方法
CN102799622A (zh) * 2012-06-19 2012-11-28 北京大学 基于MapReduce扩展框架的分布式SQL查询方法
CN103631870A (zh) * 2013-11-06 2014-03-12 广东电子工业研究院有限公司 一种用于大规模分布式数据处理的系统及其方法

Also Published As

Publication number Publication date
CN104063486A (zh) 2014-09-24

Similar Documents

Publication Publication Date Title
CN104063486B (zh) 一种大数据分布式存储方法和系统
US11120022B2 (en) Processing a database query using a shared metadata store
Bu et al. Pregelix: Big (ger) graph analytics on a dataflow engine
Vulimiri et al. Global analytics in the face of bandwidth and regulatory constraints
US8214356B1 (en) Apparatus for elastic database processing with heterogeneous data
Schwarte et al. Fedx: Optimization techniques for federated query processing on linked data
US7814091B2 (en) Multi-tiered query processing techniques for minus and intersect operators
US9348641B2 (en) System and method for performing a transaction in a massively parallel processing database
Wu et al. Semstore: A semantic-preserving distributed rdf triple store
Choi et al. Tajo: A distributed data warehouse system on large clusters
CN105550274B (zh) 双副本并行数据库的查询方法和装置
US20130318068A1 (en) Method for serial and condition-based execution of operators by parallel processes
CN110909077A (zh) 一种分布式存储方法
US11544262B2 (en) Transient materialized view rewrite
US11645281B1 (en) Caching query plans in database systems
Nidzwetzki et al. Distributed secondo: an extensible and scalable database management system
CN105608077A (zh) 一种大数据分布式存储方法和系统
Hefny et al. Comparative study load balance algorithms for map reduce environment
Potter et al. Dynamic data exchange in distributed RDF stores
Guo et al. Leon: A distributed rdf engine for multi-query processing
CN108228654A (zh) 一种大数据分布式存储方法和系统
Lynden et al. Dynamic data redistribution for MapReduce joins
Minier et al. Sage: Preemptive query execution for high data availability on the web
CN106708420A (zh) 一种大数据分布式存储方法和系统
Zhu et al. Hydb: Access optimization for data-intensive service

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170711

Termination date: 20180703