一种数据处理方法和设备与流程

文档序号:11155160阅读:560来源:国知局
本申请实施例涉及通信
技术领域
,特别涉及一种数据处理方法。本申请实施例同时还涉及一种数据处理设备。
背景技术
:现有的数据处理方式中,是基于OLTP(On-LineTransactionProcessing,联机事务处理)数据库,OLAP(OnlineAnalyticalProcessing,联机分析处理)数据库以及Infobright数据库来进行的,但目前主要的OLTP数据库,采用transaction日志的方法,保证所有插入、修改和删除的事务一致性,采用的方法是每个时间周期(天,周,月)开始,创建一张新表,并将采集的数据导入到该表中,并且创建静态索引。索引创建后,才可支持高效的查询,其并不支持数据的实时更新。OLAP数据库则采用按批数据导入模式,也不支持实时数据查询。Infobright数据库需要等待批量数据更新完成后才可查询,更新速度慢;且不支持版本体系,不支持历史版本数据查询,也因此难以扩展并应用于分布式数据库。由此可见,目前并没有一种数据处理方式能实现快速对数据进行更新以及快速查询。技术实现要素:针对现有技术中的缺陷,本申请提出了一种数据处理方法,应用于包括多个只读快照和一个可写快照的数据存储系统中,各个只读快照的生成时间各不相同,该方法包括:基于对数据的修改生成可写快照;定时通过克隆可写快照生成新的只读快照;当接收到数据查询请求时,通过索引的方式在当前生成时间最新的只读快照完成数据查询。可选的,所述只读快照与所述可写快照的结构一致,所述结构中以数据列来进行数据存储,每个数据列中包含有一个或多个数据块,每个数据块中包含相同数量的子数据块。可选的,基于对数据的修改生成可写快照,具体包括:确定当前生成时间最新的只读快照;将确定的只读快照中的数据信息复制到预设快照中;在预设快照中确定待修改的数据的位置,并在确定的位置完成数据的修改,以及基于修改更新预设快照中的数据信息;基于更新后的预设快照中的数据信息生成可写快照。可选的,对数据的修改包括:插入数据,删除数据,更新数据;所述在预设快照中确定待修改的数据的位置,并在确定的位置完成数据的修改,以及基于修改更新预设快照中的数据信息,具体包括:当需要插入数据时,在预设快照中确定存储待插入的数据的子数据块;并在数据存储空间中对应确定的子数据块的位置将待插入的数据插入;基于插入的数据的数据信息更新预设快照中的数据信息;当需要删除数据时,在预设快照中确定待删除的数据所在的子数据块;在数据存储空间中对应确定的子数据块的位置将待删除的数据删除,并将预设快照中确定待删除的数据所在子数据块所对应的数据标识更改为已删除状态;当需要更新数据时,在预设快照中确定待更新的数据所在的数据块,复制确定的数据块,在复制的数据块中确定需要更新的数据所在的子数据块,并在数据存储空间中对应确定的子数据块的位置进行数据更新,生成更新后 的数据块,以及在预设快照中将更新后的数据块替换预设的快照中对应的数据块。可选的,所述数据块中存储的多个数据包含有数值;所述当接收到数据查询请求时,通过索引的方式在当前生成时间最新的只读快照完成数据查询,具体包括:当接收到数据查询请求时,基于所述数据查询请求确定待查询的数据的数值;确定当前生成时间最新的只读快照,以及确定的只读快照中的各个数据块,并确定各个数据块中的数据的数值范围;通过判断待查询的数据的数值是否处于所述数值范围内来对各个数据块进行筛选;在通过扫描筛选出的数据块,并进行数值匹配,以完成数据查询。可选的,所述数据块中存储的多个数据包含有数值;所述当接收到数据查询请求时,通过索引的方式在当前生成时间最新的只读快照完成数据查询,具体包括:当接收到数据查询请求时,基于所述数据查询请求确定待查询的数据的数值;基于各个数据块中的各个数据的数值新生成按照数值大小排序的数据排序序列;利用二分查找法以及待查询的数据的数值在所述数据排序序列中进行查找,以完成数据查询。可选的,基于各个数据块中的各个数据的数值新生成按照数值大小排序的数据排序序列,具体包括:通过为各个数据块中的各个数据建立倒排索引的方式,生成按照数值从小到大排序的数据排序序列。本申请还提出了一种数据处理设备,应用于包括多个只读快照和一个可写快照的数据存储系统中,各个只读快照的生成时间各不相同,包括:第一生成模块,用于基于对数据的修改生成可写快照;第二生成模块,用于定时通过克隆可写快照生成新的只读快照;查询模块,用于当接收到数据查询请求时,通过索引的方式在当前生成时间最新的只读快照完成数据查询。可选的,所述只读快照与所述可写快照的结构一致,所述结构中以数据列来进行数据存储,每个数据列中包含有一个或多个数据块,每个数据块中包含相同数量的子数据块。可选的,第一生成模块,具体用于:确定当前生成时间最新的只读快照;将确定的只读快照中的数据信息复制到预设快照中;在预设的快照中确定待修改的数据的位置,并在确定的位置完成数据的修改,以及基于修改更新预设快照中的数据信息;基于更新后的预设快照中的数据信息生成可写快照。可选的,对数据的修改包括:插入数据,删除数据,更新数据;所述第一生成模块在预设的快照中确定待修改的数据的位置,并在确定的位置完成数据的修改,具体包括:所述第一生成模块在预设快照中确定待修改的数据的位置,并在确定的位置完成数据的修改,以及基于修改更新预设快照中的数据信息,具体包括:当需要插入数据时,在预设快照中确定存储待插入的数据的子数据块;并在数据存储空间中对应确定的子数据块的位置将待插入的数据插入;基于插入的数据的数据信息更新预设快照中的数据信息;当需要删除数据时,在预设快照中确定待删除的数据所在的子数据块; 在数据存储空间中对应确定的子数据块的位置将待删除的数据删除,并将预设快照中确定待删除的数据所在子数据块所对应的数据标识更改为已删除状态;当需要更新数据时,在预设快照中确定待更新的数据所在的数据块,复制确定的数据块,在复制的数据块中确定需要更新的数据所在的子数据块,并在数据存储空间中对应确定的子数据块的位置进行数据更新,生成更新后的数据块,以及在预设快照中将更新后的数据块替换预设的快照中对应的数据块。可选的,所述数据块中存储的多个数据包含有数值;所述查询模块,具体用于:当接收到数据查询请求时,基于所述数据查询请求确定待查询的数据的数值;确定当前生成时间最新的只读快照,以及确定的只读快照中的各个数据块,并确定各个数据块中的数据的数值范围;通过判断待查询的数据的数值是否处于所述数值范围内来对各个数据块进行筛选;在通过扫描筛选出的数据块,并进行数值匹配,以完成数据查询。可选的,所述数据块中存储的多个数据包含有数值;所述查询模块,具体用于:当接收到数据查询请求时,基于所述数据查询请求确定待查询的数据的数值;基于各个数据块中的各个数据的数值新生成按照数值大小排序的数据排序序列;利用二分查找法以及待查询的数据的数值在所述数据排序序列中进行查找,以完成数据查询。可选的,所述查询模块基于各个数据块中的各个数据的数值新生成按照数值大小排序的数据排序序列,具体包括:通过为各个数据块中的各个数据建立倒排索引的方式,生成按照数值从小到大排序的数据排序序列。与现有技术相比,本申请通过基于对数据的修改生成可写快照;定时通过克隆可写快照生成新的只读快照;当接收到数据查询请求时,通过索引的方式在当前生成时间最新的只读快照完成数据查询;以此通过修改和查询分离,实现了快速地实时更新性能,同时基于采用快速和倒排两种索引,有效提高了查询性能,此外,数据采用数据列存储,每个数据列又可以按固定块大小,分成多个数据块,每个数据块的长度相同;因此在修改时,只需要将修改的影响范围限定到需要修改的数据块内,而不会影响到其他的数据块,减小修改所造成的资源消耗。附图说明图1为本申请实施例提出的一种数据处理方法的流程示意图;图2为本申请实施例提出的一种生成可写快照的示意图;图3为本申请实施例提出的一种快照的结构示意图;图4为本申请实施例提出的一种插入数据后的可写快照的结构示意图;图5为本申请实施例提出的一种删除数据后的可写快照的结构示意图;图6为本申请实施例提出的一种更新数据后的可写快照的结构示意图;图7为本申请实施例提出的一种倒序索引的示意图;图8为本申请实施例提出的一种数据处理设备的结构示意图。具体实施方式本申请实施例提出了一种数据处理方法,应用于包括多个只读快照和一 个可写快照的数据存储系统中,各个只读快照的生成时间各不相同,只读快照以及可写快照中存储有各数据的数据信息(包括各数据的描述信息以及各数据所处位置的位置信息),而不是直接存储数据本身,由于数据是会不断更新的,因此,每隔一段时间基于当前数据的描述信息以及数据所处的位置生成一个只读快照,而可写快照则是基于当前对数据进行的修改生成的。如图1所示,该方法包括:步骤101、基于对数据的修改生成可写快照。具体的,生成可写快照,可以有如下子步骤:步骤A,确定当前生成时间最新的只读快照;步骤B,将确定的只读快照中的数据信息复制到预设的快照中;步骤C,在预设快照中确定待修改的数据的位置,并在确定的位置完成数据的修改,以及基于修改更新预设快照中的数据信息;步骤D,基于更新后的预设快照中的数据信息生成可写快照。以一个具体的例子来进行说明,例如一个班级原有30个学生,每个学生对应一个数据,基于学生的信息(包括描述信息和位置信息)生成只读快照,因此生成时间最新的只读快照中,例如命名为只读快照1,会保存有这30个学生的描述信息,例如可以有姓名,性别,年龄,民族等等,以及这30个学生在该班级所处的位置信息,例如位置信息可以表现为第2排第2座等等。而若该班级当前有一个新加入的学生,则会复制只读快照1中的数据(对应30个学生的信息)到预设的空白的快照中,并在复制完成之后,基于预设的快照确定新加入的学生的位置,并最终根据确定的位置安置该学生。事实上,由于涉及到数据的修改,可写快照是变化的,首先可写快照是复制了最新的只读快照之后的预设快照,然后在确定了第31个学生的位置之后,并最终基于预设快照完成第31个学生安置的同时,预设快照也完成相应的修改,最终的可写快照中会包括31个学生的描述信息,以及31个学生对应的位置,可 见可写快照中存储的是对应当前最新数据的数据信息。而后续在进行查询时,所有的查询都可运行在任意一个只读快照上(例如对应图2中的只读快照RO-SNAP1,只读快照RO-SNAP2,只读快照RO-SNAP3),由于不同的只读快照对应不同时间的数据,因此通过只读快照,可以查询到最新的数据的状态,以及历史数据的状态,且不会影响到其他的只读快照的查询过程以及可写快照的生成,并可以在进行一个或多个数据查询的同时,进行数据的修改,从而实现高效的数据查询与修改。若是要查询当前数据的信息,则最好基于最新的只读快照(时间越新,所包含的数据越新)进行查询;而可写快照只有一个,是基于所有实时的数据的修改来更新的,例如如图2所示的,当需要插入(insert)一个新的数据4时,基于最新的只读快照RO-SNAP3,最终生成的可写快照WR-DATA中包含只读快照RO-SNAP3中的三个数据,以及新的数据4,其中,只读快照以及可写快照的命名可以有很多方式,并不限于以上的这几种。每个快照实际存储的是上个快照中数据的数据信息(包括描述信息以及位置信息)和相较于上个快照的增量数据的数据信息,而真实的数据只有一份,以此可以有效减少存储空间。每隔一段时间(例如为60s)会自动对当前的可写快照克隆一个只读快照,例如克隆可写快照WR-DATA生成只读快照RO-SNAP4,并当有数据查询请求时,基于只读快照进行查询,可以在生成时间最新的只读快照进行查询,也可以在别的历史时间生成的只读快照中进行查询。而具体的,所述只读快照与所述可写快照的结构一致,所述结构中以数据列来进行数据存储,每个数据列中包含有一个或多个数据块,每个数据块中包含相同数量的子数据块,其结构可以如图3所示,为一个包含两列(也即id和name)的表的存储结构,每列的块大小为3,至于Deletebitset则是对应同一行的数据是否被删除的标识,在具体的应用环境中,还可以根据需要设置其他的数据标识,用以标识对应数据的状态,仍以图3为例,图3所 示的快照中包含有四条记录:(1,"one"),(2,"two"),(3,"three"),(4,"four")。当然,除此以外,还可以包括其他的数据记录,例如记录学生的学号,以及对应的学生名字,以及身高,体重等等的数据。具体的,对数据的修改包括:插入数据(insert),删除数据(update),更新数据(delete);为此,步骤C中在预设的快照中确定待修改的数据的位置,并在确定的位置完成数据的修改,以及基于修改更新预设快照中的数据信息具体包括:(1)、当需要插入数据时,在预设的快照中确定存储待插入的数据的子数据块;并在数据存储空间中对应确定的子数据块的位置将待插入的数据插入;基于插入的数据的数据信息更新预设快照中的数据信息。具体的Insert数据过程中,当执行SQLinsertintotable(id,name)values(5,"five")后,也即插入数据5后,快照的存储结构变化如图4所示。预设的快照,也即最开始的可写快照,用于确定存储待插入的数据的子数据块的位置,例如确定为子数据块1中的位置1,真实数据的插入过程中,在数据存储空间中找到对应可写快照确定的位置(例如为子数据块1中的位置1)的真实数据存储位置,并在确定的真实数据存储位置执行数据的插入,与此同时,也相应地在该可写快照中基于数据的插入更新该可写快照;其他对于数据的修改与此类似。(2)、当需要删除数据时,在预设快照中确定待删除的数据所在的子数据块;在数据存储空间中对应确定的子数据块的位置将待删除的数据删除,并将预设快照中确定待删除的数据所在子数据块所对应的数据标识更改为已删除状态。具体的Delete数据过程中,对于删除SQLdeletefromtablewhereid=2,也即删除数据2,则只需要将位图的第二行标记为1即可,而并不会实际删除该数据2,从而避免对其他数据的影响,生成的可写快照的存储结构如图5所 示。(3)、当需要更新数据时,在预设快照中确定待更新的数据所在的数据块,复制确定的数据块,在复制的数据块中确定需要更新的数据所在的子数据块,并在数据存储空间中对应确定的子数据块的位置进行数据更新,生成更新后的数据块,以及在预设快照中将更新后的数据块替换预设的快照中对应的数据块。具体的Update数据过程中,当执行SQLupdatetablesetname="san"whereid=3,也即将数据3进行更新,确定数据3在数据块1(包括数据1,数据2,数据3,分别对应one,two,three)中,为此,拷贝该数据块1,并将新拷贝块的第三行置为“san”,并将修改后的数据块1替换原更新前的数据块1,生成的可写快照的存储结构如图6所示。步骤102、定时通过克隆可写快照生成新的只读快照。该具体过程如图2所示,即进行克隆,复制一份。步骤103、当接收到数据查询请求时,通过索引的方式在当前生成时间最新的只读快照完成数据查询。具体的,可以在接收到数据查询请求时进行查询,还可以是在如前述的进行数据处理中,在定位需要处理的位置时进行查询,其中所述数据块中存储的多个数据包含有数值;有以下两种方式来进行查询:方式一、当接收到数据查询请求时,基于所述数据查询请求确定待查询的数据的数值;确定当前生成时间最新的只读快照,以及确定的只读快照中的各个数据块,并确定各个数据块中的数据的数值范围;通过判断待查询的数据的数值是否处于所述数值范围内来对各个数据块进行筛选;在通过扫描筛选出的数据块,并进行数值匹配,以完成数据查询。具体的,对于每个数据块,记录该数据块的最大值和最小值,并进行等值和范围查询,只有等值和范围与最大值和最小值有交集时,才会扫描该块;否则直接跳过,以达到加快查询的性能。例如,id列的第一个块的最大值为3,最小值为1;当查询SQL为select*fromtablewhereid=2,由于2在[1,3]范围中,所以需要扫描该数据块,并找到结果为(2,"two");再例如,当查询SQL为select*fromtablewhereid=4,由于4不在[1,3]范围中,所以可以确定该块不满足该条件,并跳过该块。以及,当查询SQL为select*fromtablewhereidbetween2and4,由于由于[2,4]与[1,3]有交集,所以需要扫描该数据块,并找到结果为(2,"two"),(3,"three");当查询SQL为select*fromtablewhereidbetween4and5,由于由于[4,5]与[1,3]没有交集,所以可以确定该块不满足该条件,并跳过该块。方式二、当接收到数据查询请求时,基于所述数据查询请求确定待查询的数据的数值;基于各个数据块中的各个数据的数值新生成按照数值大小排序的数据排序序列;利用二分查找法以及待查询的数据的数值在所述数据排序序列中进行查找,以完成数据查询。而具体的,方式二中基于各个数据块中的各个数据的数值新生成按照数值大小排序的数据排序序列,具体包括:通过为各个数据块中的各个数据建立倒排索引的方式,生成按照数值从小到大排序的数据排序序列。而具体的,针对对于经常查询的数据列,采用方式一的快速索引不能排除所有的块,所以需要对每个数据块建立一种快速倒排索引。其中,倒排索引是一个长度为块大小的数值型数组。数组的第i个值是将该块从小到大排序后的元素在数据块中的位置。例如图7所示,数据块中存储的数据依次为13,16,14,1,12,对其进行排序,13为首位,排在第0位,其他的依次对应,16-1,14-2,1-3,12-4,而在数据块中最小数值为数据1,对应的排序号为3,第二为数据12(对应排序号4),第三为数据13(对应排序号0),第四位数据14(对应排序号2),最大数据为16(对应排序号1),以此生成invertIndex,再遍历invertIndex的每个元素,再以该值作为index,读取block值,即可以得到一个有序的序列。如下图所示,倒排索引第一个值为3,读取block的第3个元素(从0开始计数),得到1;倒排索引第二个值为4,读取block的第4个元素,得到12;以此类推,可以得到有序序列:1,12,13,14,16。对于有序序列,可以使用二分查找,也可以做等值或范围查询。具体的二分查找,例如有数据块中有数据1-100,待查询的为23,首先,查找1-100中的中间数50,与23进行比较,由于50大于23,因此,继续找1-50的中间数与23进行比较,以此提高查找效率。为了对本申请进行进一步的说明,本申请实施例还公开了一种数据处理设备,应用于包括多个只读快照和一个可写快照的数据存储系统中,各个只读快照的生成时间各不相同,如图8所示,包括:第一生成模块801,用于基于对数据的修改生成可写快照;第二生成模块802,用于定时通过克隆可写快照生成新的只读快照;查询模块803,用于当接收到数据查询请求时,通过索引的方式在当前生成时间最新的只读快照完成数据查询。具体的,所述只读快照与所述可写快照的结构一致,所述结构中以数据列来进行数据存储,每个数据列中包含有一个或多个数据块,每个数据块中包含相同数量的子数据块。具体的,第一生成模块801,具体用于:确定当前生成时间最新的只读快照;将确定的只读快照中的数据信息复制到预设快照中;在预设的快照中确定待修改的数据的位置,并在确定的位置完成数据的修改,以及基于修改更新预设快照中的数据信息;基于更新后的预设快照中的数据信息生成可写快照。具体的,对数据的修改包括:插入数据,删除数据,更新数据;所述第一生成模块801在预设快照中确定待修改的数据的位置,并在确定的位置完成数据的修改,以及基于修改更新预设快照中的数据信息,具体包括:当需要插入数据时,在预设快照中确定存储待插入的数据的子数据块;并在数据存储空间中对应确定的子数据块的位置将待插入的数据插入;基于插入的数据的数据信息更新预设快照中的数据信息;当需要删除数据时,在预设快照中确定待删除的数据所在的子数据块;在数据存储空间中对应确定的子数据块的位置将待删除的数据删除,并将预设快照中确定待删除的数据所在子数据块所对应的数据标识更改为已删除状态;当需要更新数据时,在预设快照中确定待更新的数据所在的数据块,复制确定的数据块,在复制的数据块中确定需要更新的数据所在的子数据块,并在数据存储空间中对应确定的子数据块的位置进行数据更新,生成更新后的数据块,以及在预设快照中将更新后的数据块替换预设的快照中对应的数据块。具体的,所述数据块中存储的多个数据包含有数值;所述查询模块803,具体用于:当接收到数据查询请求时,基于所述数据查询请求确定待查询的数据的数值;确定当前生成时间最新的只读快照,以及确定的只读快照中的各个数据块,并确定各个数据块中的数据的数值范围;通过判断待查询的数据的数值是否处于所述数值范围内来对各个数据块进行筛选;在通过扫描筛选出的数据块,并进行数值匹配,以完成数据查询。具体的,所述数据块中存储的多个数据包含有数值;所述查询模块803,具体用于:当接收到数据查询请求时,基于所述数据查询请求确定待查询的数据的数值;基于各个数据块中的各个数据的数值新生成按照数值大小排序的数据排序序列;利用二分查找法以及待查询的数据的数值在所述数据排序序列中进行查找,以完成数据查询。所述查询模块803基于各个数据块中的各个数据的数值新生成按照数值大小排序的数据排序序列,具体包括:通过为各个数据块中的各个数据建立倒排索引的方式,生成按照数值从小到大排序的数据排序序列针对该系统信息优化方法,本发明的关键点和欲保护点如下:本申请通过基于对数据的修改生成可写快照;定时通过克隆可写快照生成新的只读快照;当接收到数据查询请求时,通过索引的方式在当前生成时间最新的只读 快照完成数据查询;以此通过修改和查询分离,实现了快速地实时更新性能,同时基于采用快速和倒排两种索引,有效提高了查询性能。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1