CN110909077A - 一种分布式存储方法 - Google Patents
一种分布式存储方法 Download PDFInfo
- Publication number
- CN110909077A CN110909077A CN201911071974.8A CN201911071974A CN110909077A CN 110909077 A CN110909077 A CN 110909077A CN 201911071974 A CN201911071974 A CN 201911071974A CN 110909077 A CN110909077 A CN 110909077A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- node
- task
- division
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 59
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000008569 process Effects 0.000 claims abstract description 18
- 238000012544 monitoring process Methods 0.000 claims abstract description 16
- 238000013523 data management Methods 0.000 claims abstract description 12
- 238000007726 management method Methods 0.000 claims abstract description 9
- 238000005192 partition Methods 0.000 claims description 26
- 238000000638 solvent extraction Methods 0.000 claims description 14
- 238000009826 distribution Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 10
- 238000005457 optimization Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000007689 inspection Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 238000007405 data analysis Methods 0.000 description 5
- 239000002689 soil Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 239000002585 base Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000003513 alkali Substances 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
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是根据本发明实施例的一种分布式存储方法流程图。如图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 (4)
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.根据权利要求1所述的一种分布式存储方法,其特征在于:所述数据管理引擎进一步包括:元数据管理模块,用于存储数据库的元数据信息,所述元数据包括数据表的模式、表数据的划分与存储方法、数据节点信息;
查询编译模块,用于对用户提交的查询进行编译,生成逻辑查询计划;查询优化模块,用于使用基于规则和基于代价的方法对逻辑查询计划进行优化,得到实际查询计划,然后将其转换成由分布式计算任务组成的任务调度图,提交给查询执行模块执行;
查询执行模块,用于调度分布式计算任务,按照各个任务的依赖关系,同步的执行调度,并监控任务的执行状态,其中每个任务只有在它所依赖的所有任务都执行成功后才能被启动;
节点监控与负载平衡模块,用于定时轮询各个数据节点的状态,发现节点失效后更新相应元数据,当冗余值低于预定义阈值后,对数据增加新的冗余,定期检查数据分布状态,当发现节点负载不平衡时对数据进行重新分布。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911071974.8A CN110909077A (zh) | 2019-11-05 | 2019-11-05 | 一种分布式存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911071974.8A CN110909077A (zh) | 2019-11-05 | 2019-11-05 | 一种分布式存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110909077A true CN110909077A (zh) | 2020-03-24 |
Family
ID=69816188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911071974.8A Pending CN110909077A (zh) | 2019-11-05 | 2019-11-05 | 一种分布式存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110909077A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112215553A (zh) * | 2020-10-22 | 2021-01-12 | 上海烟草集团有限责任公司 | 一种物流数据库分布式控制方法及*** |
CN112286661A (zh) * | 2020-10-30 | 2021-01-29 | 海通证券股份有限公司 | 任务调度方法及装置、存储介质、终端 |
CN112434061A (zh) * | 2020-08-25 | 2021-03-02 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和*** |
CN112835696A (zh) * | 2021-02-08 | 2021-05-25 | 兴业数字金融服务(上海)股份有限公司 | 多租户任务调度方法、***及介质 |
CN113254476A (zh) * | 2021-05-28 | 2021-08-13 | 北京金山云网络技术有限公司 | 请求的处理方法和装置、电子设备和存储介质 |
CN114328755A (zh) * | 2022-03-10 | 2022-04-12 | 北京金山云网络技术有限公司 | 一种数据写入方法、数据读取方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和*** |
CN105608077A (zh) * | 2014-10-27 | 2016-05-25 | 青岛金讯网络工程有限公司 | 一种大数据分布式存储方法和*** |
CN106708420A (zh) * | 2015-11-18 | 2017-05-24 | 青岛海日安电子有限公司 | 一种大数据分布式存储方法和*** |
CN108228654A (zh) * | 2016-12-21 | 2018-06-29 | 青岛祥智电子技术有限公司 | 一种大数据分布式存储方法和*** |
-
2019
- 2019-11-05 CN CN201911071974.8A patent/CN110909077A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和*** |
CN105608077A (zh) * | 2014-10-27 | 2016-05-25 | 青岛金讯网络工程有限公司 | 一种大数据分布式存储方法和*** |
CN106708420A (zh) * | 2015-11-18 | 2017-05-24 | 青岛海日安电子有限公司 | 一种大数据分布式存储方法和*** |
CN108228654A (zh) * | 2016-12-21 | 2018-06-29 | 青岛祥智电子技术有限公司 | 一种大数据分布式存储方法和*** |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112434061A (zh) * | 2020-08-25 | 2021-03-02 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和*** |
CN112434061B (zh) * | 2020-08-25 | 2024-04-16 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和*** |
CN112215553A (zh) * | 2020-10-22 | 2021-01-12 | 上海烟草集团有限责任公司 | 一种物流数据库分布式控制方法及*** |
CN112215553B (zh) * | 2020-10-22 | 2023-01-31 | 上海烟草集团有限责任公司 | 一种物流数据库分布式控制方法及*** |
CN112286661A (zh) * | 2020-10-30 | 2021-01-29 | 海通证券股份有限公司 | 任务调度方法及装置、存储介质、终端 |
CN112286661B (zh) * | 2020-10-30 | 2021-10-15 | 海通证券股份有限公司 | 任务调度方法及装置、存储介质、终端 |
CN112835696A (zh) * | 2021-02-08 | 2021-05-25 | 兴业数字金融服务(上海)股份有限公司 | 多租户任务调度方法、***及介质 |
CN112835696B (zh) * | 2021-02-08 | 2023-12-05 | 兴业数字金融服务(上海)股份有限公司 | 多租户任务调度方法、***及介质 |
CN113254476A (zh) * | 2021-05-28 | 2021-08-13 | 北京金山云网络技术有限公司 | 请求的处理方法和装置、电子设备和存储介质 |
CN114328755A (zh) * | 2022-03-10 | 2022-04-12 | 北京金山云网络技术有限公司 | 一种数据写入方法、数据读取方法、装置及电子设备 |
CN114328755B (zh) * | 2022-03-10 | 2022-08-05 | 北京金山云网络技术有限公司 | 一种数据写入方法、数据读取方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110909077A (zh) | 一种分布式存储方法 | |
US20200278966A1 (en) | Optimization of database queries for database systems and environments | |
CN104063486B (zh) | 一种大数据分布式存储方法和*** | |
US8935232B2 (en) | Query execution systems and methods | |
Mihaylov et al. | REX: Recursive, delta-based data-centric computation | |
Minier et al. | SaGe: Web preemption for public SPARQL query services | |
US4769772A (en) | Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases | |
US8126870B2 (en) | System and methodology for parallel query optimization using semantic-based partitioning | |
US7103590B1 (en) | Method and system for pipelined database table functions | |
US7730055B2 (en) | Efficient hash based full-outer join | |
Choi et al. | Tajo: A distributed data warehouse system on large clusters | |
US11023443B2 (en) | Collaborative planning for accelerating analytic queries | |
CN103064875A (zh) | 一种服务化空间数据分布式查询方法 | |
US20180004809A1 (en) | Spool file for optimizing hash join operations in a relational database system | |
Sellami et al. | Complex queries optimization and evaluation over relational and NoSQL data stores in cloud environments | |
Hubail et al. | Couchbase analytics: NoETL for scalable NoSQL data analysis | |
US11010383B2 (en) | Hierarchy rearrange operator | |
US20190114295A1 (en) | Incremental simplification and optimization of complex queries using dynamic result feedback | |
Samwel et al. | F1 query: Declarative querying at scale | |
EP3688551B1 (en) | Boomerang join: a network efficient, late-materialized, distributed join technique | |
US11893026B2 (en) | Advanced multiprovider optimization | |
US6470331B1 (en) | Very large table reduction in parallel processing database systems | |
Chawla et al. | Storage, partitioning, indexing and retrieval in Big RDF frameworks: A survey | |
CN105608077A (zh) | 一种大数据分布式存储方法和*** | |
Özsu et al. | NoSQL, NewSQL, and polystores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200324 |