一种云端大数据处理方法和系统的制作方法

文档序号:6621965阅读:340来源:国知局
一种云端大数据处理方法和系统的制作方法
【专利摘要】本发明提供了一种云端大数据处理方法和系统,该方法包括:定义数据层次模型,所述数据层次模型包括SQL层和XML层;在数据寻址时,使用B-树结构存储XML层的索引表和数据表;定义映射函数,将SQL层中的数据项对应到XML层中的数据项。本发明融合了两种数据模型,增加了数据表达的灵活性和扩展性,性能得到了很大的提高。
【专利说明】一种云端大数据处理方法和系统

【技术领域】
[0001]本发明涉及云存储,特别涉及一种大数据的云计算方法和系统。

【背景技术】
[0002]随着移动互联网、物联网等应用的飞速发展,全球数据量出现了爆炸式增长。数据量的飞速增长预示着现在已经进入了大数据时代。网络运营商拥有庞大的用户,同时具有对终端及用户上网通道的掌控能力,使得在用户行为分析方面具有很好的数据基础,深入分析用户流量行为特征和规律,发现用户潜在消费需求,是提升价值和经营水平的有效手段。然而,不仅仅是数据规模越来越大,而且数据类型多和处理实时性要求都极大地增加了大数据处理的复杂度。大数据给传统的数据分析处理技术(例如并行数据库、数据仓库)带来的技术挑战。传统数据分析处理技术无法处理大数据的高扩展性和海量需求。针对亿万的用户,数据呈现出多源化、异构化的趋势,不同的应用对数据的一致性、数据交互、传输延时等均有不同的需求。基于XML的数据模型很好地解决了多机并行处理的瓶颈,存储容量也不再受限,并且能更好地存储各种复杂的数据类型,查询效率也更高。但XML数据模型功能较单一,使用起来没有SQL数据模型灵活,不能增加表以及多表结合来完成复杂的查询功能,应用者必须要更深入的分析大数据之间的结构,对应用支持不好,使用不方便。
[0003]因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。


【发明内容】

[0004]为解决上述现有技术所存在的问题,本发明提出了一种云端大数据处理方法和系统,该方法包括:
[0005]定义数据层次模型,所述数据层次模型包括SQL层和XML层;
[0006]在数据寻址时,使用B-树结构存储XML层的索引表和数据表;
[0007]定义映射函数,将SQL层中的数据项对应到XML层中的数据项。
[0008]优选地,所述SQL层和XML层均由表结构来表示数据;在该层次模型中,SQL层位于最上层,用于处理应用给出的各种事务性的操作,以及对结构化数据的管理,数据的属性和联系均用二维表表示。
[0009]优选地,所述XML层中的表结构米用多维存储,表第一行是表的结构信息,在定义表时首先定义表的列簇,所述列簇包含多列,行和列在进行数据插入时写入,在表中插入数据时,要指定行、表中存在的列簇、以及列,并产生一个时间戳,根据时间戳个数,决定数据的副本个数;XML层的数据表和索引表采用水平分片,将表划分为子表管理,随着数据的插入,当子表增长到预定大小时分裂为两个子表,每个子表由若干记录行组成。
[0010]优选地,所述SQL表中的数据项和XML表中的数据项是一一对应的,SQL层和XML层的划分都是针对同一个实体型的数据,属于同一实体型的横向分层,均封装在系统的SQL层中;所述XML层中,只有数据表存储了实际的大字段数据,包括键和值,二层索引表保存了数据表的地址信息以及元数据信息,二层索引表中每行记录对应于一个数据表,根索引表保存了二层索引表的地址信息以及其他元数据信息,根索引表中每条记录对应一个二层索引表。
[0011]优选地,所述B-树的根索引节点不被划分,具有唯一性;根据可自定义的节点大小与其文件大小确定数据节点的合并和分裂条件;数据插入和删除,都在数据节点进行,树形结构始终由两层索引节点和一层数据节点组成;包括根索引节点在内的索引节点的子树个数等于索引节点的记录项数目;索引节点的记录项数目等于可自定义的节点大小与每行记录大小的比值。
[0012]优选地,所述映射函数根据不同的SQL层数据项而使用不同的映射函数进行转换,当转换成表之间的映射时,SQL表与XML表之间是多对一的映射,即SQL层中I到i_l的表的某个分量都映射到了 XML层中同一个数据子表中不同的数据项,其中I < i < η,η为映射函数的个数;
[0013]并且若定义域为X,值域为Y,映射函数f满足以下约束:
[0014]6.1,任何不同的数据项或者NULL均表示X或Y中一个唯一元素;
[0015]6.2对于任意一个元素χ e X,通过f转换,在Y中有唯一元素与其对应;
[0016]6.3对于每个函数fi (I ( i彡η),定义域X为SQL表中某个属性的分量,或者直接为查询条件,值域Y均为XML层中的表的数据。
[0017]优选地,所述存储和查询操作中,用户通过统一接口控制SQL层和XML层数据的插入或者删除,数据查询在接口中优化为通过SQL层和XML层的查询,并且对SQL层和XML层的数据访问并发进行,保证SQL层和XML层数据的一致性和完整性,其中XML层数据的读写并发根据时间戳进行控制。
[0018]优选地,所述SQL层和XML层数据的一致性和完整性通过以下约束过程来获取:
[0019]8.1,当创建表时,如果不同的表有相同的联合主键,则主键顺序一致;
[0020]8.2,标记与XML层中行相关的主键列,其余的主键列或者主键列的联合作为步骤
8.2中列簇的列,当SQL层中只有唯一主键时,自动标记为行;
[0021]8.3,标记表中的大字段属性;
[0022]8.4,统计每一类型表中各个属性列的信息,使一个schema下的各个SQL表映射到同一个XML表中;
[0023]8.5,对于步骤8.4中的SQL表和XML表,如果SQL表中,除去已经在步骤8.2中标记的主键列,其余属性均为大字段,则标记该SQL表为大字段,然后在XML表中增加一个名为SQL表名的列簇,否则增加一个名为SQL表中标记的属性的列簇;
[0024]8.6,对映射函数的约束,当原象为NULL时,象必为NULL ;
[0025]并且,在进行数据操作时,其键值根据查询条件动态产生,一次事务操作只有一个键。
[0026]根据本发明的另一方面,提供了一种云端大数据处理系统,用于结合结构化SQL和非结构化XML对大数据进行存储和查询,其特征在于,包括:
[0027]模型定义模块,用于定义数据层次模型,所述数据层次模型包括SQL层和XML层;
[0028]存储模块,用于在在数据寻址时,使用B-树结构存储XML层的索引表和数据表;
[0029]映射模块,用于定义映射函数,将SQL层中的数据项对应到XML层中的数据项。
[0030]本发明相比现有技术,具有以下优点:
[0031]改进了大数据处理方法和系统,按实体的属性类型进行横向划分,融合了两种数据模型,使数据应用在灵活性和扩展性之间有了较好的平衡。在处理大字段数据时,性能得到了很大的提高,在云计算大数据管理领域发挥更大的功能。

【专利附图】

【附图说明】
[0032]图1是根据本发明实施例的云端大数据处理方法的流程图。

【具体实施方式】
[0033]下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
[0034]本发明的一方面提供了一种云端大数据处理方法和系统。根据数据实体的属性类型,对数据实体进行进一步切分,每个子实体属于SQL型即结构化模型和XML型即非结构化模型中的一种。在处理复杂数据类型时,首先在实体模式定义中标记数据对应属性,然后自动转换到对应模块,实现结构化数据的平滑过渡。图1是根据本发明实施例的云端大数据处理方法和系统流程图。如图1所示,实施本发明方法的具体步骤如下:
[0035]首先,定义数据层次模型,所述数据层次模型包括SQL层和XML层;
[0036]其次,在数据寻址时,使用B-树结构存储XML层的索引表和数据表;
[0037]第三,映射函数,将SQL层中的数据项对应到XML层中的数据项。
[0038]在定义数据层次模型步骤中,SQL层和XML层均由表结构来表示数据;在该层次模型中,最上层的是SQL层,与SQL数据库系统一样,数据的各种属性和联系均用二维表表示。SQL层主要负责处理应用给出的各种事务性的操作,以及对常见的结构化数据的管理。
[0039]SQL表中的一个数据项和XML表中的一个数据项是一一对应的。SQL表和XML表是η:1的关系,并且组成树形结构;SQL层和XML层的划分都是针对同一个实体型的数据,属于同一实体型的横向分层。因此,在处理实体间的无论一对多,还是多对多都很方便,不需要建立冗余节点和虚拟节点,均封装在系统的SQL层中,克服了纵向分层结构的弱点。
[0040]在XML层中,数据的逻辑格式也是表,这点和SQL层一致,但是表内部的结构不同,XML层中的表结构是多维的。
[0041]XML层中表的一行数据,第一行是表的结构信息。在定义表时,要定义表的列簇,列簇包含很多列,列可以动态写入,列簇信息属于表结构的组成信息。行也是在进行数据插入时写入。所以在某个表中插入一项数据时,要指定行、表中存在的列簇、以及列。每插入一个数据,系统会产生一个时间戳,所以系统中支持的时间戳个数,决定数据的副本个数。
[0042]数据表和索引表都米用水平分片的技术,将一张表分为很多子表管理。索引表和数据表结构一致,均由一个或多个不同的列簇组成。数据库系统初始化时,数据量较小,都保存在一个表中,即只有一个子表。随着数据的不断插入,当第一个子表增长到预定大小,开始分裂为两个子表,分裂后较小的两个子表可以继续插入然后再分裂。依次继续,到最后,原来的表由当前由多个分裂出的子表组成,所以当一张表的数据量很大时,可以包含很多子表,每个子表由若干记录行组成。
[0043]XML层中,只有数据表存储了实际的大字段数据,包括其键及值。其他都是索引表,二层索引表保存了数据表的地址信息以及其它元数据信息,二层索引表中每行记录对应一个数据表。根索引表保存了二层索引表的地址信息以及其他元数据信息,根索引表中每条记录对应一个二层索引表。数据寻址时,涉及到分散的多台服务器的磁盘查询,为了降低磁盘读取次数,使用改进的B-树结构存储索引表和数据表,每个节点即为一个子表。本发明的B-树形成过程具体包括以下步骤:
[0044](I)简化第一层根索引节点和第二层索引节点的操作,根索引节点不分裂,永远只有一个;
[0045](2)根据可自定义的节点大小与其文件大小而确定数据节点的合并和分裂条件,而不由B-树的最小度数或者阶数确定;
[0046](3)无论数据插入还是删除,都在数据节点进行,树形结构永远都由两层索引节点和一层数据节点组成;
[0047](4)索引节点(包括根索引节点)的子树个数等于索引节点的记录项数目,而不是由B-树的最小度数或者阶数决定。
[0048](5)索引节点的记录项数目等于可自定义的节点大小除以每行记录大小。
[0049]如果根索引表在内存中,每次根据键访问值时,就只需两次磁盘操作。将键与根索引节点中的记录行比较,找到指向二层索引节点的指针,将相应二层索引节点的数据读入内存,这是第一次磁盘读取。然后再将键与二层索引节点中的记录行比较,找到指向数据节点的指针,将相应数据节点的数据读入内存,这是第二次磁盘读取。最后在数据节点中,进行查找,就能访问到与键关联的值。改进后的B-树不仅提高了查询效率,而且由于其合并和分裂时,数据操作较单一,不用考虑树的高度变化。
[0050]本发明定义了一组映射函数?.:Π....^..?.η(1彡i彡n,n为函数个数)。映射函数f在用户查询条下,负责将SQL层中的数据项对应到XML层中的数据项,可能数据类型或者数据结构有差异,不同的SQL层数据项需要用不同的映射函数进行转换,映射函数的功能决定了系统支持的映射种类,映射种类越完善,对XML层数据的访问效率就越好。SQL层中的表由于关系约束,是严格规范化的;XML层中的表没有SQL约束,表结构较灵活,能存储的字段很多,所以当转换成表之间的映射时,SQL表与XML表之间是多对一的映射。即SQL层中I到i_l的表的某个分量都映射到了 XML层中同一个数据子表中不同的数据项。
[0051]在设计映射函数组f时,假设定义域为X,值域为Y,有以下几点约束条件:
[0052](I)任何不同的数据项或者NULL均表示X或Y中一个唯一元素;
[0053](2)对于任意一个元素X e X,通过f转换,在Y中有唯一元素与其对应;
[0054](3)对于每个函数fi (I ( i彡η),他们的定义域X为SQL表中某个属性的分量,或者直接为查询条件。值域Y均为XML层中的表的数据。
[0055]设计好的映射函数,必须很好的分析函数的定义域、值域。实践表明,为了提高查询效率,在设计映射函数f时,一个原则就是使XML表中的行尽量简单,因为映射函数在执行时会产生与行进行匹配的中间值,而在对XML表的查询中,行也是一个主要的查询条件,需要解析行。因此,设计越简单的行越能减少查询时间模型支持查询、插入、删除和修改等操作,并且对复杂数据的查询进行了优化。针对实体的不同属性,本发明数据操作也有自己如下的特点。
[0056](I)通过统一接口控制SQL层和XML层数据的插入或者删除。
[0057](2)数据查询在接口中优化为通过SQL层和XML层的查询。
[0058](3)对SQL层和XML层的数据访问并发进行。
[0059](4)XML层数据的读写并发,根据时间戳进行控制。在XML层中我们定义行的约束条件,即当行为空时,该行不能有数据。
[0060]接下来是组织好XML层的列簇及其列的个数,整合SQL层和XML层的操作,保证SQL层和XML层数据的一致性和完整性。对同时包含SQL子实体和XML子实体的新模型,自定义了如下约束过程:
[0061](I)当创建表时,如果不同的表有相同的联合主键,则主键顺序一致;
[0062](2)标记与XML层中行相关的主键列,其余的主键列或者主键列的联合作为步骤
(5)中列簇的列,当SQL层中只有唯一主键时,自动标记为行;
[0063](3)标记表中的大字段属性,如图片或者长段文字描述等;
[0064](4)统计每一类型表中各个属性列的信息,使一个schema下的各个SQL表能映射到同一个XML表中;
[0065](5)对于步骤(4)中的SQL表和XML表,如果SQL表中,除去已经在步骤⑵中标记的主键列,其余属性均为大字段,则标记该SQL表为大字段,然后在XML表中增加一个名为SQL表名的列簇,否则增加一个名为SQL表中标记的属性的列簇。
[0066](6)对映射函数的约束,当原象为NULL时,象必为NULL。
[0067]根据这些数据约束条件,当在进行数据操作时,尤其是对大字段数据的索引,其键值是根据查询条件动态产生的,一次事务操作只有一个键,而不是一个键组。
[0068]下面从数据的基本读写访问开始说明本发明数据存储结构的操作流程及具体实现。
[0069]在对外接口时,无论SQL层和XML层,还是SQL表和非SQL表,都是透明的,但是SQL层与XML层之间的交互,采用两阶段提交协议。应当注意,有大字段标记的属性列,新模型都处理成字节类型,有可能数据容量较大,因此在对其进行写入时需指定输入源,读取时要定义好相应的数据容器。
[0070]数据写入:
[0071]为了保证数据的一致性,方便数据的管理,本发明向外提供统一的数据写入接口。即在创建表时,只需指明各列的数据属性(大字段属性标记或者主键列的行标记),然后接口内部封装了对有标记的属性列的操作,用户不用接触XML型数据的定义和操作。
[0072]首先用户通过DDL语言定义表,标记大字段的属性列,用行标记相关的主键列,然后模型根据标记信息和其他相关信息,自动产生对应的XML表。
[0073]表定义完成后,用户可以在表中插入数据。对于没有大字段的表,在SQL表中写入即可。如果只写入有大字段属性的列,直接调用数据写入接口,接口内部会转换成对相应XML表的写入操作。当在XML表中的操作完成后,在SQL表的属性列的相应行写上对应的大数据项的索引信息,只有这个分量写入成功后才算对大字段的数据写入操作完成。如果索引信息为NULL,则对应的XML表数据项不能有数据。
[0074]对于同时有SQL子实体和XML子实体的数据进行插入时,可并发进行。在SQL表中写入基本数据,在XML数据库表中写入大字段的数据。同一个实体型的数据除主键或者行之外,在SQL层中和XML层中是相互独立的。
[0075]数据读取:
[0076]在数据读取过程中,与以往的SQL查询不同的是,系统对非结构化的大字段数据做了查询优化,并且同时保留结构化数据的查询优势。对于没有大字段的表,数据读取与传统的SQL模型一致。
[0077]如果只读取有大字段属性的列,直接调用数据读取接口,在接口内部转换成对相应的XML表的读取操作。当执行较小数据量的查询时,大大减少了读取时间。
[0078]对于同时涉及到数据的SQL子实体和XML子实体的复杂查询时,首先要分析查询条件,以便于查询优化。如果查询的SQL子实体与XML子实体的数据之间没有严格的拓扑关系,可以并行查询,否则就先在SQL层中查询,然后通过映射函数再到XML层。
[0079]根据本发明的另一方面,提供了一种云端大数据处理系统,用于结合结构化SQL和非结构化XML对大数据进行存储和查询,其特征在于,包括:
[0080]模型定义模块,用于定义数据层次模型,所述数据层次模型包括SQL层和XML层;
[0081]存储模块,用于在在数据寻址时,使用B-树结构存储XML层的索引表和数据表;
[0082]映射模块,用于定义映射函数,将SQL层中的数据项对应到XML层中的数据项。
[0083]综上所述,本发明改进了大数据处理方法和系统,按实体的属性类型进行横向划分,融合了两种数据模型,使数据应用在灵活性和扩展性之间有了较好的平衡。在处理大字段数据时,性能得到了很大的提高,在云计算大数据管理领域发挥更大的功能。
[0084]显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
[0085]应当理解的是,本发明的上述【具体实施方式】仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
【权利要求】
1.一种云端大数据处理方法,用于结合结构化SQL和非结构化XML对大数据进行存储和查询,其特征在于,包括: 定义数据层次模型,所述数据层次模型包括SQL层和XML层; 在数据寻址时,使用B-树结构存储XML层的索引表和数据表; 定义映射函数,将SQL层中的数据项对应到XML层中的数据项。
2.根据权利要求1所述的方法,其特征在于,所述SQL层和XML层均由表结构来表示数据;在该层次模型中,SQL层位于最上层,用于处理应用给出的各种事务性的操作,以及对结构化数据的管理,数据的属性和联系均用二维表表示。
3.根据权利要求2所述的方法,其特征在于,所述XML层中的表结构采用多维存储,表第一行是表的结构信息,在定义表时首先定义表的列簇,所述列簇包含多列,行和列在进行数据插入时写入,在表中插入数据时,要指定行、表中存在的列簇、以及列,并产生一个时间戳,根据时间戳个数,决定数据的副本个数;XML层的数据表和索引表采用水平分片,将表划分为子表管理,随着数据的插入,当子表增长到预定大小时分裂为两个子表,每个子表由若干记录行组成。
4.根据权利要求3所述的方法,其特征在于,所述SQL表中的数据项和XML表中的数据项是一一对应的,SQL层和XML层的划分都是针对同一个实体型的数据,属于同一实体型的横向分层,均封装在系统的SQL层中;所述XML层中,只有数据表存储了实际的大字段数据,包括键和值,二层索引表保存了数据表的地址信息以及元数据信息,二层索引表中每行记录对应于一个数据表,根索引表保存了二层索引表的地址信息以及其他元数据信息,根索引表中每条记录对应一个二层索引表。
5.根据权利要求4所述的方法,其特征在于,所述B-树的根索引节点不被划分,具有唯一性;根据可自定义的节点大小与其文件大小确定数据节点的合并和分裂条件;数据插入和删除,都在数据节点进行,树形结构始终由两层索引节点和一层数据节点组成;包括根索引节点在内的索引节点的子树个数等于索引节点的记录项数目;索引节点的记录项数目等于可自定义的节点大小与每行记录大小的比值。
6.根据权利要求5所述的方法,其特征在于,所述映射函数根据不同的SQL层数据项而使用不同的映射函数进行转换,当转换成表之间的映射时,SQL表与XML表之间是多对一的映射,即SQL层中I到1-Ι的表的某个分量都映射到了 XML层中同一个数据子表中不同的数据项,其中I < i < η,η为映射函数的个数; 并且若定义域为X,值域为Y,映射函数f满足以下约束: 6.1,任何不同的数据项或者NULL均表示X或Y中一个唯一元素; 6.2对于任意一个元素χ e X,通过f转换,在Y中有唯一元素与其对应; 6.3对于每个函数fi (I彡i彡η),定义域X为SQL表中某个属性的分量,或者直接为查询条件,值域Y均为XML层中的表的数据。
7.根据权利要求6所述的方法,其特征在于,所述存储和查询操作中,用户通过统一接口控制SQL层和XML层数据的插入或者删除,数据查询在接口中优化为通过SQL层和XML层的查询,并且对SQL层和XML层的数据访问并发进行,保证SQL层和XML层数据的一致性和完整性,其中XML层数据的读写并发根据时间戳进行控制。
8.根据权利要求7所述的方法,其特征在于,所述SQL层和XML层数据的一致性和完整性通过以下约束过程来获取: 8.1,当创建表时,如果不同的表有相同的联合主键,则主键顺序一致; 8.2,标记与XML层中行相关的主键列,其余的主键列或者主键列的联合作为步骤8.2中列簇的列,当SQL层中只有唯一主键时,自动标记为行; 8.3,标记表中的大字段属性; 8.4,统计每一类型表中各个属性列的信息,使一个schema下的各个SQL表映射到同一个XML表中; 8.5,对于步骤8.4中的SQL表和XML表,如果SQL表中,除去已经在步骤8.2中标记的主键列,其余属性均为大字段,则标记该SQL表为大字段,然后在XML表中增加一个名为SQL表名的列簇,否则增加一个名为SQL表中标记的属性的列簇; 8.6,对映射函数的约束,当原象为NULL时,象必为NULL ; 并且,在进行数据操作时,其键值根据查询条件动态产生,一次事务操作只有一个键。
9.一种云端大数据处理系统,用于结合结构化SQL和非结构化XML对大数据进行存储和查询,其特征在于,包括: 模型定义模块,用于定义数据层次模型,所述数据层次模型包括SQL层和XML层; 存储模块,用于在在数据寻址时,使用B-树结构存储XML层的索引表和数据表; 映射模块,用于定义映射函数,将SQL层中的数据项对应到XML层中的数据项。
【文档编号】G06F17/30GK104133890SQ201410370225
【公开日】2014年11月5日 申请日期:2014年7月30日 优先权日:2014年7月30日
【发明者】蒲思羽 申请人:四川中亚联邦科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1