一种支持HiveDML增强的混合存储系统及其方法

文档序号:6521089阅读:277来源:国知局
一种支持HiveDML增强的混合存储系统及其方法【专利摘要】本发明公开了一种支持Hive?DML(Data?Manipulation?Language)增强的混合存储系统及其方法,该存储系统基于DualTable表建立,包括:DualTable表创建模块和DualTable表执行模块;DualTable表创建模块用于建立包含主表和附表,为每行数据维护了唯一ID并基于代价模型对外提供特定操作集的DualTable表;DualTable表执行模块用于基于DualTable的主表和附表实现对DualTable表中的数据进行读取和查询,基于DualTable的附表实现对DualTable表中的数据进行更改,基于代价模型实现DualTable表提供的操作集,基于有序的每行数据唯一ID实现主表和附表数据读取时的合并。【专利说明】—种支持HiveDML增强的混合存储系统及其方法【
技术领域
】[0001]本发明涉及到大数据环境下,使ApacheHive高效的实现DML(DataManipulationLanguage数据操作语言)操作的混合存储系统的开发与实现,特别涉及支持HiveDML增强的混合存储系统。【
背景技术
】[0002]Hive为基于Hadoop的数据分析提供了类SQL接口,减少了MapReduce开发量,同时方便了从现有的提供SQL接口的关系数据仓库向Hadoop生态系统的转换。Hive能够将用户定义的数据表模式映射到底层的数据存储之上,并基于MapReduce实现对数据的查询与操作。但是,受制于较弱的DML支持,Hive在企业级大数据处理中无法充分发挥效能。学术界和工业界进行了大量Hive优化的工作,包括了查询方案优化、执行系统优化、存储系统优化等方面。[0003](I)查询方案优化[0004]在2011年TheInternationalConferenceonDistributedComputingSystems(国际分布式计算系统会议)中RubaoLee等人公开了一篇名为“YSmart:YetanotherSQL-to-MapReduceTranslator”的文献,YSmart能够在复杂的查询中发现关联的操作并基于规则对其化简来产生包含MapReduce任务最少的执行方案,从而减少查询时间。在2011年ACMSymposiumonCloudComputing(ACM云计算研讨会)上SaiWu等人公开了一篇名为“QueryOptimizationforMassivelyParallelDataProcessing,,的文献,提出了一个Hive的优化器AQUA,它能够对查询中多个JOIN进行分组并基于代价模型选择最优的方案;在The38thInternationalConferenceonVeryLargeDataBases(第38届国际超大规模数据库会议)上HaroldLim等人公开了一篇名为“Stubby:ATransformation-basedOptimizerforMapReduceWorkflows”的文献,提出了一个面向MapReduce工作流的优化器Stubby,它能基于一系列的变换(transformation)规则搜索出查询方案各种变体中最高效的一个。这些工作目标在于提高Hive的查询性能,并没有为Hive带来DML操作的增强。[0005](2)执行系统优化[0006]Hortonworks公司提出了Tez框架,基于Hadoop的第二代MapReduce框架YARN让Hadoop更好的执行DAG(DirectedAcyclicGraph,有向无环图)工作流,减少Hive查询执行时不必要的中间任务和数据,从而缩短Hive查询响应时间。UCBerkeley大学开发的Shark(http://spark,incubator,apache,org/)在内存计算框架Spark的基础之上提供了与Hive兼容的接口,使得现有的Hive查询能够获得内存计算带来的加速。此外,学术界进行了大量MapReduce框架相关的优化工作,例如MRShare、Starfish、各种调度器等。这些工作都能够对基于MapReduce的Hive带来好处。这些工作缩短了Hive查询响应时间,但没有增强Hive的DML能力。[0007](3)存储系统优化[0008]Hive默认使用HDFS(HadoopDistributedFileSystem)作为存储,HDFS是GoogleFileSystem的开源实现,提供的高吞吐的大文件顺序读。在2011年的ProceedingsoftheIEEEInternationalConferenceonDataEngineering(IEEE数据工程国际会议)中HeYongqiang等人公开了一篇文献“RCFile:aFastandSpace-efficientDataPlacementStructureinMapReduce-basedWarehousesystems”,提出了利用行列混合存储及压缩的RCFile存储结构,实现数据快速加载、查询快速响应和磁盘充分利用,在Hive和Pig等系统中广泛应用。Hortonworks公司进一步提出了ORC(OptimizedRCFile),提供了Hive类型模型的支持、部分统计信息和索引的存储等功能,进一步优化了Hive数据存储。Hive通过StorageHandler机制支持扩展多种底层存储系统,包括了HBase(http://hbase.apache.0rg/)、Cassandra(http://cassandra.apache.0rg/)等。HBase是类似BigTable的分布式列存储数据库,能够支持对海量结构化数据的随机读写,支撑应用的在线访问需求。HBase借助LogStructureMergeTree方法,将对文件多次随机写转换为磁盘批量写,弥补了HDFS随机读写方面的不足。Phoenix(https://github.com/forcedotcom/phoenix)为HBase提供了类SQL接口,支持了数据的查询、更新、删除等操作。但是Phoenix面向的是低延迟的在线应用(OLTP,OnlineTransactionProcessing),而不是类似Hive的批量数据处理(OLAP,OnlineAnalyticalProcessing),不具有高效的涉及大量数据的查询处理能力。本发明提出的HiveDML增强面向的是批量数据处理中的更新与删除,与Phoenix系统的目标完全不同。[0009]以上介绍的所有Hive相关优化工作和相关系统都没有涉及增强类SQL接口中的DML操作,都不能解决在企业级大数据处理场景中遇到的数据更改问题。【
发明内容】[0010]本发明的所要解决的技术问题在于提供一种面向HiveDML增强的混合存储系统,基于DualTable表,以解决在企业级大数据处理场景中数据更改问题。[0011]为达上述目的,本发明提供了一种支持HiveDML增强的混合存储系统,其特征在于,所述系统基于DualTable表建立,所述混合存储系统,包括:[0012]DualTable表创建模块:用于建立包含主表和附表,为每行数据维护了唯一ID并基于代价模型对外提供特定操作集的DualTable表;[0013]DualTable表执行模块:用于基于所述主表和所述附表实现对所述DualTable表中的数据读取和查询,基于所述附表实现对所述DualTable表中的数据进行更改,基于所述代价模型实现所述DualTable表提供的操作集,基于有序的每行数据的所述唯一ID实现所述主表和所述附表数据读取时的合并。[0014]上述支持HiveDML增强的混合存储系统,其特征在于,所述维护每行数据唯一ID的机制用于维护每行数据唯一的ID,确保不同存储系统间读取数据有序合并。[0015]上述支持HiveDML增强的混合存储系统,其特征在于,所述主表用于所述DualTable表的数据存储,采用分布式文件存储。[0016]上述支持HiveDML增强的混合存储系统,其特征在于,所述附表用于存储所述DualTable表中数据的更改信息。[0017]上述支持HiveDML增强的混合存储系统,其特征在于,所述操作集为所述DualTable提供的操作集合,包含:UnionRead、UPDATE、DELETE、INSERTINTO、CREATE、DROP、LOAD和COMPACT。[0018]上述支持HiveDML增强的混合存储系统,其特征在于,基于所述代价模型,实现所述UPDATE、DELETE操作。[0019]上述支持HiveDML增强的混合存储系统,其特征在于,所述UPDATE操作和DELETE操作包括:0VERWRITE操作方式和EDIT操作方式。[0020]上述支持HiveDML增强的混合存储系统,其特征在于,基于所述代价模型计算对所述OVERWRITE和EDIT操作方式进行动态选取。[0021]上述支持HiveDML增强的混合存储系统,其特征在于,所述DualTable表执行模块,还包括:[0022]数据读取模块:通过专用输入格式读取所述DualTable表中的数据;[0023]数据查询模块:用于根据所述数据读取模块的读取数据,通过查询语句对所述DualTable中的数据进行查询;[0024]数据行ID管理模块:用于确保所述每行数据唯一ID在整个所述DualTable表中的唯一性;[0025]COMPACT模块:用于将所述DualTable表的所述附表中的数据合并进所述主表,并清空附表数据;[0026]代价模型模块:包含代价模型参数获取子模块,用于获取所述代价模型所需的计算参数,基于所述代价模型的估算,实现对所述DualTable表的所述操作集;[0027]删除和更新模块:用于基于所述代价模型模块的动态计算,实现所述UPDATE和所述DELETE操作。[0028]上述支持HiveDML增强的混合存储系统,其特征在于,还包括:[0029]命令处理模块:用于外部向所述DualTable表提交命令,并将所述命令进行格式转换;[0030]上述支持HiveDML增强的混合存储系统,其特征在于,还包括:[0031]并发控制模块:用于通过语句加锁机制,对需要操作的所述数据进行加锁,确保操作的并发控制。[0032]进一步的,本发明提供了一种支持HiveDML增强的混合存储方法应用于所述混合存储系统,所述系统基于DualTable表建立,所述混合存储方法,包括:[0033]DualTable表创建步骤:用于-建立包含主表和附表,为每行数据维护了唯一ID并基于代价模型对外提供特定操作集的DualTable表;[0034]DualTable表执行步骤:用于基于所述主表和所述附表实现对所述DualTable表中的数据读取和查询,基于所述附表实现对所述DualTable表中的数据进行更改,基于所述代价模型实现所述DualTable表提供的操作集,基于有序的每行数据的所述唯一ID实现所述主表和所述附表数据读取时的合并。[0035]上述支持HiveDML增强的混合存储方法,其特征在于,所述DualTable表执行步骤,还包括:[0036]数据读取步骤:通过专用输入格式读取所述DualTable表中的数据;[0037]数据查询步骤:用于根据所述数据读取步骤的读取数据,通过查询语句对所述DualTable中的数据进行查询;[0038]数据行ID管理模块:用于确保所述每行数据唯一ID在整个所述DualTable表中的唯一性;[0039]COMPACT步骤:用于将DualTable表的附表中的数据合并进主表,并清空附表数据;[0040]代价模型步骤:包含代价模型参数获取步骤,用于获取所述代价模型所需的计算参数,基于所述代价模型的估算,实现对所述DualTable表的所述操作集;[0041]删除和更新步骤:用于基于所述代价模型步骤的动态计算,实现所述UPDATE和所述DELETE操作。[0042]上述支持HiveDML增强的混合存储方法,其特征在于,还包括:[0043]命令处理步骤:用于外部向所述DualTable表提交命令,并将所述命令进行格式转换;[0044]上述支持HiveDML增强的混合存储方法,其特征在于,还包括:[0045]并发控制步骤:用于通过语句加锁机制,对需要操作的所述数据进行加锁,确保操作的并发控制。[0046]本发明通过整合HDFS和HBase两种不同特点的存储来同时提供高吞吐的流式读和高效的随机写,并透明的维护底层数据的一致性,使得基于DualTable的Hive能够同时实现高效的查询和更改操作,获得更强的DML支持。[0047]与现有技术相比,本发明具有以下有益效果:[0048]1、支持高效顺序读取主表,实现高效的数据查询操作;[0049]2、支持随机改写的附表,实现高效的数据更改操作;[0050]3、支持基于代价模型的更新和删除操作,以及能够让附表中数据量保持合理的COMPACT操作;[0051]4、支持基于行ID的读取数据合并,能够低代价的维护两个存储中数据的读写一致性。【专利附图】【附图说明】[0052]图1为本发明提供的支持HiveDML增强的混合存储系统结构示意图;[0053]图2为本发明提供的支持HiveDML增强的混合存储方法流程示意图。[0054]其中,附图标记:[0055]IDualTable表创建模块2DualTable表执行模块[0056]21数据查询模块22删除和更新模块[0057]23数据读取模块24数据行ID管理模块[0058]25C0MPACT模块26代价模型模块[0059]3命令处理模块4并发控制模块[0060]SI~S4、S21~S27:本发明实施例的步骤【具体实施方式】[0061]以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。[0062]首先介绍该系统的相关术语。[0063]DualTable可形式化的描述为:DualTable:=〈IDMechanism,MasterTable,AttachedTable,OperationSet,CostModel〉。其中,IDMechanism是维护每行数据唯一ID的机制,数据行的唯一ID用于联系两个存储系统;MasterTable(主表)是用于支持高效顺序读的存储系统;AttachedTable(附表)是用于存储更改数据的存储系统;OperationSet是DualTable提供的操作集,定义为!OperationSet:=UnionRead(读取)IUPDATE(更新)IDELETE(删除)|INSERTINTO(插入)|CREATE(表创建)|DROP(表删除)Iload(数据导入)!compact(数据合并);costModel是支持读写操作实现的代价模型。[0064]本发明基于Hive提供的多种扩展机制实现了DualTable,其中主表使用Hive默认的HDFS存储,附表使用了HBase存储。[0065]如图1所示,本发明提供的一种支持HiveDML增强的混合存储系统是基于DualTable表建立,混合存储系统,包括=DualTable表创建模块I和DualTable表执行模块2;[0066]DualTable表创建模块1:用于建立包含维护每行数据唯一ID的机制、主表、附表、操作集和代价模型的DualTable表;[0067]DualTable表创建方法与现有Hive表创建类似,区别包括(I)需要明确指定使用DualTable专用的InputFormat,OutputFormat和SerDe,同时允许设置DualTable相关的参数;(2)每张DualTable数据表模式中的第一列默认为数据行ID,列名固定为lOwid。(3)创建过程中,将检查并创建HBase中对应的AttachedTable;(4)DualTable暂时不支持表上的PARTITON和BUCKET。[0068]DualTable表创建完毕后,通过Hive的INSERTOVERWRITE语句将数据导入到其中。[0069]DualTable表执行模块2:基于DualTable的主表实现对DualTable表中的数据进行读取和查询,基于DualTable的附表实现对DualTable表中的数据进行更改,基于代价模型实现DualTable表提供的操作集,基于每行数据唯一ID实现读取时主表和附表数据的有序合并。[0070]基于DualTable的主表,实现对DualTable表中的数据进行查询和读取:本发明支持高效顺序读的主表MasterTable能够实现高效的查询操作,主表是每张DualTable表数据的主要存储,数据初始导入时即进入主表。主表提供高效的流式读取和写入性能,而不需要随机的改写支持。在具体实现中,主表可以采用HDFS、GFS(GoogleFileSystem)、KFS(KosmosDistributedFileSystem)等支持高效顺序读的分布式文件存储,并可以采用RCFile等优化的文件结构;[0071]基于DualTable的附表,实现对DualTable表中的数据进行更改:本发明支持随机改写的AttachedTable能够实现高效的数据更改操作,附表用于存储对每张DualTable表数据的更改信息。每张DualTable表对应的主表数据和附表数据的合并视图,即是该表当前的数据内容。在Hive中,没有对DELETE和UPDATE的直接支持,任何更改操作都要通过重写整个数据表(INSERTOVERWRITE)的方式来间接实现,这增大了将企业级系统已有的SQL移植到Hive的复杂度,同时带来了庞大的文件读写开销。支持随机改写的AttachedTable能够实现高效的数据更改操作。[0072]基于代价模型,实现DualTable表提供的操作集:支持基于代价模型的更新和删除操作实现。[0073]对于DualTable表中数据的UPDATE和DELETE,有两种方式可以选择:[0074]I)OVERWRITE方案:类似Hive的INSERTOVERWRITE语义,直接读取并重写一遍主表中的数据,重写的过程中将替换要更新的值(UPDATE)或者删除要删除的数据(DELETE),最后将附表中的数据完全清除。可见,OVERWRITE方案能够清空附表,有利于控制附表的数据量。[0075]2)EDIT方案:将数据表中被更改的数据及其行id信息写入附表中:对于更新操作,写入新值;对于删除操作,写入删除标记。不改动主表中数据。[0076]两种方案在同一场景下执行效率以及对后续读效率的影响均不同,DualTable会根据一个代价模型来选择一个最高效的方案。[0077]基于每行数据唯一ID,实现读取数据有序合并:支持基于行ID的读时数据合并,能够低代价的维护两个存储中数据的读写一致性。为了高效的实现数据合并,使用有序行id的方式进行优化:在主表和附表中按照升序维护行id,从而将两个存储的内容合并转化为两个有序id表的合并,提闻效率。附表中所有行id按照升序维护,能够使附表支持闻效的基于行id区间的查询。对于HBase、GoogleBigTable等存储,数据模型中已经保证rowkey升序,因此将行id作为rowkey即可保证有序。而在主表中所有行id按照“分块”呈升序即可达到优化效果。例如使用HDFS作为主表存储时,一个表可以包含一个文件夹下的多个文件,只要保证每个文件内部行id是升序的即可。单个文件内的升序行id在LOAD和INSERTINTO操作生成文件时自动生成。[0078]其中DualTable表执行模块2,还包括:数据查询模块21、删除和更新模块22、数据读取模块23、数据行ID管理模块24、COMPACT模块25和代价模型模块26。[0079]数据查询模块21:用于通过查询语句对DualTable中的数据进行查询;[0080]DualTable的底层存储机制对查询语句透明,现有的HiveQL查询语句均可以直接在DualTable表上进行,不需要任何改动。[0081]删除和更新模块22:用于基于代价模型模块26的动态计算,实现UPDATE和所述DELETE操作。[0082]本发明利用Hive的UDTF扩展机制实现UPDATE和DELETE语义。UDTF提供了对每一行数据进行自定义处理的机制。DualTable内部实现了dualtable_update和dualtable_delete两个UDTF。用户提交的UPDATE语句将被转化成INSERTOVERWRITE和UDTF两种方式(分别对应OVERWRITE方案和EDIT方案),然后在运行时依据代价模型选择合适的方案。[0083]DualTable的COMPACT命令将表中的数据全部读出然后写进HDFS主表,随后删除HBase中的AttachedTable。因此DUALTABLECOMPACTtable语句等价于INSERTOVERWRITEtableSELECT*FR0Mtable,然后删除HBase中相应AttachedTable。[0084]数据读取模块23:通过所述专用输入格式读取所述DualTable表中的数据;[0085]Hive通过InputFormat来获取底层存储的数据,不断调用nextO函数来获取下一行的数据。在为DualTable定制的DualTableInputFormat中,同时读取HBase和HDFS中的数据,并依据UnionRead算法合并两份数据,在DualTableInputFormat的nextO函数调用中返回合并后的实际数据。数据读取模块用于支撑数据查询模块对于底层数据的访问。[0086]数据行ID管理模块24:用于确保所述每行数据的ID在整个所述DualTable表中的唯一性;[0087]在对表进行INSERTOVERWRITE,INSERTINTO时要维护数据行ID,保证每行ID在整张表中的唯一性。[0088]本发明使用了ORC(OptimizedRCFile)文件结构作为HDFS上MasterTable的存储,由于HDFS文件不可被改写,因此本发明结合使用文件ID和数据行在整个文件中的行号作为该行的ID,数据行R的ID为“[R所在文件的ID][R在文件中的行数]”。在生成每个ORC文件时,从HBase中的DualTableMetadata表中获取一个该ORC文件所在数据表对应的自增ID值作为该文件的ID,并写入该ORC文件的元信息中。[0089]INSERTOVERWRITE和INSERTINTO均会将新数据写入新生成的HDFS文件中,数据最开始也是通过INSERTOVERWRITE导入DualTable,因此上述ID管理机制能够保证DualTable中每行数据拥有唯一的ID。[0090]此外,由于在ORC文件结构之上只需要额外记录一个文件ID,行号可以在读取时自然获得,因此DualTable行ID带来的存储开销极小。[0091]COMPACT模块25:用于将DualTable表的附表中的数据合并进主表,并清空附表数据;[0092]随着对DualTable表的不断更改,附表中的数据会不断增加,UnionRead需要处理的更改数据增多导致效率下降。因此,需要使用COMPACT操作合理的控制附表的数据量。Unionread的过程中将附表和主表数据合并,并写到一个新的主表中,最后清空附表(因为其数据已经反映到主表中了)。[0093]在COMPACT操作中,首先UnionRead整张DualTable表,将结果INSERTINTO一个临时主表中,然后清空附表数据和旧的主表数据,最后将临时主表设为正式的主表。DualTable允许用户手动的对指定的表执行COMPACT操作。用户可以将COMPACT操作放到系统低负载时定时进行,也可以结合分析任务的具体情况,在分析过程中合适位置加入COMPACT操作。[0094]DualTable表支持对行数据的顺序读取,例如支持作为Hive生成的MapReduce任务的输入。读取时同时访问主表和附表存储,对于主表中的每一行数据,依据行id在附表中获取更改数据,合并后作为最终数据返回。[0095]代价模型模块26:包含代价模型参数获取子模块,用于获取代价模型所需的计算参数,并基于代价模型的估算,实现对DualTable表的操作集;[0096]UPDATE和DELETE操作使用的代价模型的参数主要包括了HDFS的读写速度,HBase的读写速度,HDFS和HBase中的数据量,更新/删除的数据行比例α,两次更新之间涉及的读次数k,数据行平均长度d等。其他参数如“删除标记大小”为常量。[0097]在DualTable进行HDFS/HBase读写的过程中,对读写的用时和处理行数量进行了记录,从而可以计算每秒能处理的行数。结合HDFS上文件的数据量,可以得到每秒的数据处理量。对于单次执行的单条语句,更新/删除的数据行比例α和两次更新之间涉及的读次数k由用户给定。对于多次重复执行的包含多条语句的任务,利用前几次执行记录的α值来估计之后的情况,k则通过分析任务中涉及的所有语句来确定。数据行平均长度d通过HDFS文件大小及数据行总数来估算。[0098]本发明提供的混合存储系统,还包括:命令处理模块3和并发控制模块4;[0099]命令处理模块3用于外部向DualTable表提交命令,并将命令进行格式转换;[0100]用户向DualTable命令行提交的命令,如果是普通的Hive查询或操作,将直接交由原生Hive执行;如果是DualTable相关操作,将交给DualTable命令解析器处理,依据元信息、代价模型计算信息,命令将被转化成原生Hive能够接受的形式,最后提交给原生Hive执行。[0101]并发控制模块4:用于通过语句加锁机制,对需要操作的数据进行加锁,确保操作的并发控制。[0102]DualTable不允许在一个表上同时执行多个操作(多个读操作除外)。因此,需要进行并发控制。现有的Hive可以利用Zookeeper开启语句级别的并发控制,通过对数据表和分区加“互斥-共享”锁来实现数据访问并发控制。DualTable开启Hive的语句加锁机制,并且对于本发明扩展的操作(COMPACT),按照现有Hive的加锁规则对涉及的数据表进行加锁,从而保证正确的并发控制。[0103]下面结合【具体实施方式】,对本发明UPDATE和DELETE的代价模型,以及UnionRead操作做进一步的说明。[0104]一、UPDATE和DELETE的代价模型[0105]DualTable在执行UPDATE或DELETE操作时,会根据如下的代价模型动态地选取一个最优的方案。两种方案中涉及的开销主要包括了:(1)读写主表的开销(2)读写附表的开销。以下是相关定义和假设。[0106]定义1:在存储S中,读取和写入数据量为D的数据的开销分别记为【权利要求】1.一种支持HiveDML增强的混合存储系统,其特征在于,包括:DualTable表创建模块:用于建立包含主表和附表,为每行数据维护了唯一ID并基于代价模型对外提供特定操作集的DualTable表;DualTable表执行模块:用于基于所述主表和所述附表实现对所述DualTable表中的数据读取和查询,基于所述附表实现对所述DualTable表中的数据进行更改,基于所述代价模型实现所述DualTable表提供的操作集,基于有序的每行数据的所述唯一ID实现所述主表和所述附表数据读取时的合并。2.根据权利要求1所述支持HiveDML增强的混合存储系统,其特征在于,所述维护每行数据唯一ID的机制用于维护每行数据唯一的ID,确保不同存储系统间读取数据有序合并。3.根据权利要求1所述支持HiveDML增强的混合存储系统,其特征在于,所述主表用于所述DualTable表的数据存储,采用分布式文件存储。4.根据权利要求1所述支持HiveDML增强的混合存储系统,其特征在于,所述附表用于存储所述DualTable表中数据的更改信息。5.根据权利要求1所述支持HiveDML增强的混合存储系统,其特征在于,所述操作集为所述DualTable提供的操作集合,包含:UnionRead、UPDATE、DELETE、INSERTINTO、CREATE、DROP、LOAD和COMPACT。6.根据权利要求1所述支持HiveDML增强的混合存储系统,其特征在于,基于所述代价模型,实现所述UPDATE和DELETE操作。7.根据权利要求6所述支持HiveDML增强的混合存储系统,其特征在于,所述UPDATE操作和DELETE操作包括:OVERWRITE操作方式和EDIT操作方式。8.根据权利要求7所述支持HiveDML增强的混合存储系统,其特征在于,基于所述代价模型计算对所述OVERWRITE和EDIT操作方式进行动态选取。9.根据权利要求1所述支持HiveDML增强的混合存储系统,其特征在于,所述DualTable表执行模块,还包括:数据读取模块:通过专用输入格式读取所述DualTable表中的数据;数据查询模块:用于根据所述数据读取模块的读取数据,通过查询语句对所述DualTable中的数据进行查询;数据行ID管理模块:用于确保所述每行数据唯一ID在整个所述DualTable表中的唯一I"生;COMPACT模块:用于将DualTable表的附表中的数据合并进主表,并清空附表数据;代价模型模块:包含代价模型参数获取子模块,用于获取所述代价模型所需的计算参数,基于所述代价模型的估算,支持所述DualTable表的删除和更新操作的实现;删除和更新模块:用于基于所述代价模型模块的动态计算,实现所述UPDATE和所述DELETE操作。10.根据权利要求1所述支持HiveDML增强的混合存储系统,其特征在于,还包括:命令处理模块:用于外部向所述DualTable表提交命令,并将所述命令进行格式转换。11.根据权利要求1所述支持HiveDML增强的混合存储系统,其特征在于,还包括:并发控制模块:用于通过语句加锁机制,对需要操作的所述数据进行加锁,确保操作的并发控制。12.—种支持HiveDML增强的混合存储方法,应用于如权利要求1-11中任一项所述混合存储系统,所述系统基于DualTable表建立,所述混合存储方法,包括:DualTable表创建步骤:用于建立包含主表和附表,为每行数据维护了唯一ID并基于代价模型对外提供特定操作集的DualTable表;DualTable表执行步骤:用于基于所述主表和所述附表实现对所述DualTable表中的数据读取和查询,基于所述附表实现对所述DualTable表中的数据进行更改,基于所述代价模型实现所述DualTable表提供的操作集,基于有序的每行数据的所述唯一ID实现所述主表和所述附表数据读取时的合并。13.根据权利要求12所述支持HiveDML增强的混合存储方法,其特征在于,所述DualTable表执行步骤,还包括:数据读取步骤:通过专用输入格式读取所述DualTable表中的数据;数据查询步骤:用于根据所述数据读取步骤的读取数据,通过查询语句对所述DualTable中的数据进行查询;数据行ID管理步骤:用于确保所述每行数据唯一ID在整个所述DualTable表中的唯一I"生;COMPACT步骤:用于将DualTable表的附表中的数据合并进主表,并清空附表数据;代价模型步骤:包含代价模型参数获取子步骤,用于获取所述代价模型所需的计算参数,基于所述代价模型的估算,实现对所述DualTable表的所述操作集;`删除和更新步骤:用于基于所述代价模型步骤的动态计算,实现所述UPDATE和所述DELETE操作。14.根据权利要求12所述支持HiveDML增强的混合存储方法,其特征在于,还包括:命令处理步骤:用于外部向所述DualTable表提交命令,并将所述命令进行格式转换。15.根据权利要求12所述支持HiveDML增强的混合存储方法,其特征在于,还包括:并发控制步骤:用于通过语句加锁机制,对需要操作的所述数据进行加锁,确保操作的并发控制。【文档编号】G06F17/30GK103678519SQ201310618652【公开日】2014年3月26日申请日期:2013年11月29日优先权日:2013年11月29日【发明者】黄硕,虎嵩林,梁英,谷丹阳,吴凯锋,李祥珍,洪建光,张春光,肖政,裴旭斌,衡星辰,崔蔚申请人:中国科学院计算技术研究所,国网浙江省电力公司信息通信分公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1