数据处理方法和装置、存储介质及电子装置与流程

文档序号:18600978发布日期:2019-09-03 22:38阅读:129来源:国知局
数据处理方法和装置、存储介质及电子装置与流程

本发明涉及计算机领域,具体而言,涉及一种数据处理方法和装置、存储介质及电子装置。



背景技术:

目前,通常采用数据库的方式进行数据存储。对于数据库中的历史数据,通过采用清除操作将其清除。上述数据处理方式会使得数据库中的历史数据缺失,从而导致难以追溯历史数据的问题。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种数据处理方法和装置、存储介质及电子装置,以至少解决相关技术中的数据处理方式会导致难以追溯历史数据的技术问题。

根据本发明实施例的一个方面,提供了一种数据处理方法,包括:获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行;将该多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的目标页面,其中,所述多个目标行的所述多个目标列中相同目标列上记录的目标属性值被记录在所述列式存储数据库中的多个目标页面中的至少一个页面上;在达到所述目标时间之后,清除该多个目标行。

根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:第一获取单元,用于获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行;存储单元,用于将所述多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的目标页面,其中,所述多个目标行的所述多个目标列中相同目标列上记录的目标属性值被记录在所述列式存储数据库中的多个目标页面中的至少一个页面上;清除单元,用于在达到所述目标时间之后,清除所述多个目标行。

根据本发明实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述方法。

根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的方法。

在本发明实施例中,采用将行式存储数据库的数据表中待被清除的目标行通过列式存储数据库进行存储的方式,通过获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行;将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的目标页面,其中,多个目标行的多个目标列中相同目标列上记录的目标属性值被记录在列式存储数据库中的多个目标页面中的至少一个页面上;在达到目标时间之后,清除多个目标行,达到了对数据库中的历史数据进行保存的目的,从而实现了保证数据变迁历史数据完整的技术效果,进而解决了相关技术中的数据处理方式会导致难以追溯历史数据的技术问题。

附图说明

此处所说的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种数据处理方法的应用环境的示意图;

图2是根据本发明实施例的一种可选的数据处理方法的流程示意图;

图3是根据本发明实施例的一种可选的转储过渡页的示意图;

图4是根据本发明实施例的另一种可选的转储过渡页的示意图;

图5是根据本发明实施例的另一种可选的数据处理方法的示意图;

图6是根据本发明实施例的又一种可选的数据处理方法的示意图;

图7是根据本发明实施例的又一种可选的数据处理方法的示意图;

图8是根据本发明实施例的又一种可选的数据处理方法的示意图;

图9是根据本发明实施例的另一种可选的数据处理方法的流程示意图;

图10是根据本发明实施例的又一种可选的数据处理方法的流程示意图;

图11是根据本发明实施例的一种可选的数据处理装置的结构示意图;

图12是根据本发明实施例的一种可选的电子装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例的一个方面,提供了一种数据处理方法。可选地,上述数据处理方法可以但不限于应用于如图1所示的应用环境中。如图1所示,用户102使用的用户设备104包括:ram106和处理器108。用户102可以使用用户设备104通过网络112向查询系统114发送查询请求110。查询系统114中的搜索引擎116包括:索引引擎118和排序引擎120。接收到查询请求110后,查询系统可以根据查询请求对行式存储数据库122和列式存储数据库124进行查询,得到查询结果126,并将查询结果126通过网络112返回给用户设备104。

对于查询系统114上的数据处理,系统中的每个节点设备可以获取行式存储数据库122的数据表中在目标时间上待被清除的多个目标行;将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库124中的目标页面,其中,多个目标行的多个目标列中相同目标列上记录的目标属性值被记录在列式存储数据库中的多个目标页面中的至少一个目标页面上;在达到目标时间之后,清除多个目标行。

可选地,用户设备104可以包括但不限于:手机、平板电脑等、台式电脑等;查询系统114可以包括但不限于以下至少之一:分布式数据库系统(每个节点采用实施例的数据处理方法)、基于多版本并发控制(multi-versionconcurrencycontrol,简称为mvcc)的关系型数据库系统、基于mvcc的非关系型数据库系统等。上述网络可以包括但不限于无线网络、有线网络,其中,无线网络包括:蓝牙、wifi及其他实现无线通信的网络。有线网络可以包括但不限于:局域网、城域网和广域网。上述查询系统可以包括但不限于以下至少之一:pc机及其他用于计算服务的设备。上述只是一种示例,本实施例中对此不做任何限定。

可选地,在本实施例中,作为一种可选的实施方式,如图2所示,上述数据处理方法可以包括:

s202,获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行;

s204,将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的目标页面,其中,多个目标行的多个目标列中相同目标列上记录的目标属性值被记录在列式存储数据库中的多个目标页面中的至少一个页面上;

s206,在达到目标时间之后,清除多个目标行。

可选地,上述数据处理方法可以但不限于应用于:记录用户行为、保存账号的账务变动、记录股票交易记录、记录气象天气等需要对历史信息支持的场景。

例如,以保存账号的账务变动的场景为例,对于用户的网上账户,用户会往网上账户充值,也会通过网上账户消费,而如果账户信息只有余额,在日后账务出现问题时,用户无法得知账务何时何地因何事出了问题。如果通过如下方式将所有的账户修改信息都进行转储,那么用户从开户到销户所有的交易状态都被记录下来,出了问题都可以第一时间追溯、定位:获取行式存储数据库的数据表(存储有用户的账务信息)中在目标时间上待被清除的多个目标行(历史账号修改信息);将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的目标页面,其中,多个目标行的多个目标列中相同目标列上记录的目标属性值被记录在列式存储数据库中的目标页面中的至少一个页面上;在达到目标时间之后,清除多个目标行。

需要说明的是,在相关技术中,对于数据库中的历史数据,通过采用清除操作将其清除。数据变迁历史在许多场景中都有重要意义,如银行监控储户的历史账单变化信息,气象部门监控天气变化信息,股市显示历史交易信息等。而采用前述方法,会使得数据库中的历史数据缺失,难以追溯历史数据。而在本申请中,通过获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行;将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的目标页面,其中,多个目标行的多个目标列中相同目标列上记录的目标属性值被记录在列式存储数据库中的多个目标页面中的至少一个页面上;在达到目标时间之后,清除多个目标行,以对数据库中的历史数据进行保存,保证数据变迁历史数据的完整,进而解决了相关技术中的数据处理方式会导致难以追溯历史数据的技术问题。

可选地,行式存储数据库(行存数据库)待转储的数据可以位于节点设备的内存中。行存数据库以行存的形式保存数据表中的数据(如,最新版本的数据),行存数据库可以包括但不限于:postgresql、mysql等。在行存数据库中,通过周期触发或事件触发的方式进行数据更新。行存的每个属性的类型可能是不一致的,需要为不同的属性分配不同的列宽(即,列大小)。由于属性类型不一致的存在,需要保证行对齐。

可选地,可以通过数据的状态属性来标识数据的生命周期轨迹。可以将数据的生命周期分为三个阶段,每个阶段刻画数据的不同状态属性,以标识数据的生命周期轨迹中所处的状态,三个阶段对应的状态属性包括:

(1)当前态(currentstate):处于当前阶段的数据的状态,称为当前态,该数据为数据项的最新版本的数据。

(2)历史态(historicalstate):处于历史阶段的数据的状态,称为历史态。历史态数据的值是旧值,不是当前值。一个数据项的历史态,可以有多个,反映了数据的状态变迁的过程。处于历史态的数据,只能被读取不能再被修改或删除。

(3)过渡态(transitionalstate):处于由当前态向历史态转变的数据的状态,称为过渡态。处于过渡态的数据(称为半衰数据)即不是数据项的最新的版本也不是历史态版本,而是处于从当前态向历史态转变的过程中。

这三个状态涵盖了一个数据项的整个生命周期,合称为数据全态(full-state),具有三个状态的数据项称为全态数据。在mvcc机制下,数据的三种状态均存在,而在非mvcc机制下,数据只存在历史态和当前态。

例如,有一张账户表account(idint,namechar(8),balanceint,notetext)。该账号表包含4属性列,分别为:账号、姓名、余额、备注。该表用于记录用户账号余额的变动。一次的余额变动就会产生一条记录(对应于账户表中的一行)。有一用户现有数据为(10,james,1000,createaccount)。在某一时刻该用户发生了一次余额变动,账户余额减少100,并且在note中注明'consume100'。那么,数据库需要执行一次update(更新)操作,行存数据库存储的最新版本的数据是(10,james,900,consume100),为当前态数据。在最新版本的数据进行更新的过程,(10,james,1000,createaccount)为过渡态数据。而在更新完成之后,(10,james,1000,createaccount)为历史态数据。

可选地,数据可以具有双时态属性:有效时间属性、事务时间属性。有效时间属性表示数据表示的对象在时间属性上的情况。如,kate上中学起止时间是2000-09-01到2003-07-30(有效时间)。事务时间属性表示数据的某个状态的发生时刻。数据具有其时态属性,即,在何时数据库系统进行了什么样的操作。某项操作在数据库系统内被封装为事务,而事务具有原子性。可以采用事务标识来标识一个数据的事务时态属性。从形式上看,有效时间属性和事务时间属性,在数据模型中用普通的用户自定义字段进行表示,只是用特定的关键字加以描述,供数据库引擎进行约束检查和赋值。

可选地,在本实施例中,可以获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行。

可选地,在行存数据库中可以通过设置待清除标识的方式来标识该行存数据库的数据表中待清除的目标行。还可以将通过将待清除的目标行放入特定存储位置来标识该行存数据库的数据表中待清除的目标行。

例如,支持mvcc的数据库在进行数据更新操作时会产生多个版本的旧数据,也就是全时态数据模型中的历史态数据,目前数据库管理系统的做法是定期删除。行存数据库在执行更新/删除(update/delete)操作时并不是直接将现有数据清除,而是做一个待清除标记。postgresql会为每张表设置一个vm文件,用于标识过期元组。mysql使用mvcc的historylist(历史数据列表)来标识过期元组。postgresql的多版本数据存放在数据页面中,mysql的多版本数据存放在undo回滚段中。

可选地,可以采用多种方式清除行存数据库中的历史数据(历史态数据,即,待被清除的多个目标行)。清除操作可以定期(周期)执行,也可以事件触发(接收到清空命令)执行等,目标时间由清除历史数据的方式决定,本实施例对此不作限定。

例如,在执行vacuum操作时,postgresql会为根据vm文件为每张表清除过期元组,mysql的purge线程会扫描mvcc的historylist,对没有其他事务引用且不需要回滚的过期数据进行清除。postgresql的vaccum操作和mysql的purge操作默认定期执行。对于信息变迁的历史数据,例如,涉及账务问题的数据,其与当前数据同样重要,因此,历史数据也希望被保存下来,而不是被清除。

可选地,获取待清除目标行的操作可以是在目标行将被清除时执行的。可以在执行清除待清除目标行的清除操作时,首先执行获取待清除目标行的操作,再执行清除待清除目标行的操作。获取待被清除的多个目标行可以采用定时机制(周期获取),定时启动获取操作。定时的值,可以作为参数进行动态调整,本实施例中对此不作限定。

例如,postgresql可在vacuum操作前执行转储过程,vacuum操作执行的不是清除历史态版本而是转储历史态版本。而mysql可在purge操作前进行转储过程。

可选地,上述行存数据库待转储的数据可以位于目标设备(如,网元节点)的内存中。对于行存数据库的位置,本实施例不做具体限定。

可选地,在本实施例中,可以将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的一个或多个目标页面,其中,多个目标行的多个目标列中相同目标列上记录的目标属性值被记录在列式存储数据库中的多个目标页面中的至少一个目标页面上。

可选地,目标列可以是行存数据库的数据表中的一个属性列,上述多个目标列,可以是数据表的全部属性列,也可以是数据表的全部属性列的子集。多个目标列可以由目标参数指定。不同目标列上记录的属性类型可以相同,也可以不同。不同属性类型的目标列可以分配的列宽可以相同,也可以不同,相同属性类型的目标列可以分配的列宽可以相同,也可以不同。具体的属性列的设置方式,可以根据需要进行设定,本实施例中对此不作具体限定。

例如,对于账户表account(idint,namechar(8),balanceint,notetext),多个目标列可以是该账号表中的全部列,也可以是部分列(如,id、balance、note)。

可选地,在获取到待清除的多个目标行之后,从获取的多个目标行中读取多个目标列上记录的目标属性值。相同目标列上不同目标行所对应的目标属性值可以相同,也可以不同。

可选地,上述列式存储数据库(列存数据库)持久化的数据部分可以位于目标设备的外存(例如,磁盘)中,其他部分数据可以位于目标设备内存。对于列存数据库的位置,本实施例不做具体限定。一般列存数据库都会存储超大规模的数据量,优良的数据存储方式是实现空间高效利用和提升查询速度的基石。列存使用段页式管理结构,可有效利用诸如表空间等概念,在转储时把列存数据连续地在外存进行存储。这样便于在列存上执行针对列的计算。

可选地,目标行可以有多个,在存储至列存数据库的目标页面中时,多个目标行的多个目标列中相同目标列上记录的目标属性值可以被记录在列存数据库中的目标页面中的至少一个页面上。

可选地,可以采用多种方式将多个目标行的多个目标列上记录的目标属性值存储至列存数据库中的目标页面。

作为一种可选的实施方式,可以将多个目标行的多个目标列上记录的目标属性值直接存储至列式存储数据库中的一个或多个页面中。

可选地,可以将多个目标行的多个目标列上记录的目标属性值按照数据表中列的顺序依次写入到目标页面中的一个页面,在该页面写满之后,再写入到另一页面。也可以将多个目标行的多个目标列中不同目标列上记录的目标属性值分别存储到目标页面的不同页面中。

可选地,对于多个目标行的多个目标列中各目标列上记录的目标属性值(第一目标属性值),在第一目标属性值中的部分目标属性值写满目标页面的第一页面的情况下,将第一目标属性值中除了写入第一页面的部分目标属性值以外的其他目标属性值存储至目标页面的第二页面上。

可选地,在将多个目标行的多个目标列上记录的目标属性值直接存储至列存数据库中的目标页面的一个页面中时,该页面可能会未被写满,这样会造成存储空间浪费。

可选地,在列存数据库位于外存的情况下,为充分利用存储空间(如,磁盘空间),保证列存数据库中目标页面的各页面被写满,可以从外存中加载未写满的页面进入内存,保存新数据进入到未写满的页面中。

作为另一种可选的实施例方式,可以将多个目标行的多个目标列上记录的目标属性值存储至转储过渡页,其中,转储过渡页用于将多个目标列上记录的属性值转储至列存数据库中的目标页面;将转储过渡页中记录的属性值存储至目标页面中。

可选地,在列存数据库位于外存时,为避免频繁的外存读写操作,可以在内存中设置转储过渡页来进行多个目标列上记录的属性值由行存数据库至列存数据库的过渡。

可选地,可以采用多种方式实现通过转储过渡页进行转储操作。可以通过同一转储过渡页转储多个目标列上记录的目标属性值的方式进行转储(例如,转储过渡页为如图3所示的页面a的形式),也可以通过不同的转储过渡页转储多个目标列中不同目标列上记录的目标属性值的方式进行转储(例如,转储过渡页为如图4所示的页面b的形式,页面b可认为是页面a的一种变形)。可以将转储过渡页直接转储至目标页面中的方式进行转储,也可以通过预估压缩的方式对多个转储过渡页进行压缩后转储至目标页面中的方式进行转储。

作为一种可选的实施方式,可以将多个目标行的多个目标列上记录的目标属性值按行存储在转储过渡页中(与数据表中存储数据的方式相同)。在将多个目标行的多个目标列上记录的目标属性值按行存储在转储过渡页中之前、过程中或者之后,可以判断预定条件是否满足,并在预定条件满足的情况下执行向目标页面中转属性值的操作。

可选地,可以判断第一条件是否满足,如果满足,则将转储过渡页中满足第一条件的属性值存储至列存数据库的目标页面中的一个页面上,第一条件可以包括但不限于:转储过渡页中记录的前k行属性值的数据量小于或等于目标阈值(例如,目标页面中一个页面的大小),前(k+1)行属性值的数据量大于目标阈值;对转储过渡页中记录的前l行属性值按列分别进行压缩后估计得到的总压缩数据量小于或等于目标阈值,前(l+1)行属性值按列分别进行压缩后估计得到的总压缩数据量大于目标阈值,其中,k和l均为大于或等于1的正整数。

例如,转储过渡页中记录了100行属性值,每行数据具有5个属性值。如果前20行属性值的总数据量小于2kb(目标阈值,外存页面的大小),前21行属性值的总数据量大于2kb,则将前20行的属性值存储至列存数据库的一个页面中。又例如,如果前80行属性值按列分别进行压缩(5列分别进行估计)后估计得到的总压缩数据量小于2kb,前81行属性值按列分别进行压缩后估计得到的总压缩数据量大于2kb,则将前80行的属性值按列进行压缩后存储至列存数据库的一个页面中。

可选地,还可以判断第二条件是否满足,如果满足,则将转储过渡页中满足第一条件的多个目标列的属性值分别存储至列存数据库的目标页面中的一个页面上。第二条件可以包括但不限于:对转储过渡页中记录的前m行属性值按列分别进行压缩后估计得到的各压缩数据量中最大的压缩数据量小于或等于目标阈值,前(m+1)行属性值按列分别行压缩后估计得到的各压缩数据量中最大的压缩数据量大于目标阈值,其中,m为大于或等于1的正整数。

例如,转储过渡页中记录了100行属性值,每行数据具有5个属性值。如果前90行属性值按列分别进行压缩后估计得到的各压缩数据量中最大的压缩数据量小于2kb,前91行属性值按列分别进行压缩后估计得到的各压缩数据量中最大的压缩数据量大于2kb,则将前90行属性值按列分别进行压缩,存储至列存数据库中的5个页面中。

作为另一种可选的实施方式,可以将多个目标行的多个目标列中各目标列上记录的目标属性值分别存储到与该目标列对应的转储过渡页中。每个转储过渡页中记录了一个目标列所记录的属性值,每一目标列对应于一个或多个转储过渡页。

可选地,不同目标列对应的转储过渡页的大小相同,但转储过渡页能容纳数据量与各目标列对应的属性类型有关(例如,各目标列对应的属性类型有数字、字符、字符串等,那么一般情况下,每一转储过渡页能容纳数字的数量多于容纳字符串的数量)。转储过渡页的格式和大小与目标页面的格式和大小相同。

可选地,转储过渡页的格式可以包括用于记录目标列的属性值的页体部分。转储过渡页的格式还可以包括以下至少之一:页头和页尾,页头用于标识转储过渡页中记录的属性值对应的目标标识的标识值范围;页尾用于对转储过渡页进行校验。

下面结合以下示例对转储过渡页进行说明。转储过渡页的格式与列存页面的格式相同。如图3所示,该转储过渡页的格式为列存页面默认的设计格式:一个页面中有多个列的信息,称为页面a。如图4所示,该转储过渡页的格式为列存页面可选的设计格式:一个页面中只有一个列信息,称为页面b。页面b和页面a在结构上没有差别,只是每页只包含单列的信息。页面a的设计更符合行存的习惯,这样在保存待转储数据时更加简单,转储的效率也更好。但是在针对列的查询中可能会频繁跨页,影响查询效率;页面b的设计需要先对待转储的数据进行拆分,转储的效率比较低,但是在针对列的查询中就可以尽可能地避免频繁跨页,查询效率高。在进行转储之前,用户可以先通过参数调整选定转储过渡页的类型,默认可以采用页面a的格式。

一个转储过渡页的格式可以包括三个部分:页头、页体、页尾。

(1)页头(列存页头):页头被设计成自适应的页头。

当用户没有在数据表上自定义索引时,系统默认页头包含:xid_min和xid_max(xid,即,事务id,可以唯一的标识同一目标行的各属性值之间的对应关系,即,唯一的标识属性值所对应的列版本)。前者表示本页中所有列版本的最小的xid,后者表示本页中所有列版本的最大的xid。

而如果用户在数据表上自定义了索引时,则页头上的xid信息被替换成相应的索引信息,如id_max和id_min。

通过上述方式,可以对列存页面(目标页面)构建列存索引,便于快速定位列信息。

(2)页体:包含多个目标列中的一个或多个目标列的列版本(属性值)。默认情况下,每个列版本用一个二元组{xid,value}表示,表示哪个事务操作了此值。如果用户自定义了页头信息,那么二元组信息就会被相应地替换,如,修改为{id,value}。

如图3所示,对于页面a的页体,页体中包含多个列,每个列包含多个列版本。列从页头向页尾依次存储。每个列,包括列id,表示具体的某一列。然后有多个元组列,表示唯一的元组。每个元组列,包括tupleid(元组id),表示唯一的元组列;y表示此元组列有几个版本。tupleid、y和列版本的组合,可以表征数据表中某一元组中的某一列的属性值的历史变迁过程。

如图4所示,对于页面b,页面b的页体中包含一个列的多个列版本,各个列版本从页头向页尾依次存储。对于该列,可以有多个元组列,表示唯一的元组。每个元组列,包括tupleid,表示唯一的元组列;y表示此元组列有几个版本。tupleid、y和列版本的组合,可以表征数据表中某一元组中的某一列的属性值的历史变迁过程。

3)页尾,位于页面的最底部,包括:页面校验信息和列信息。

对于页面a的页尾,列信息为多个列的列信息,如图4所示,对于页面b的页尾,列信息为一个列的列信息。列信息中包含有列的id和本页中此列的偏移。列信息从页尾向页头方向依次存放,形成一个从两头靠向中间的过程(页体的列版本由页头向页尾方向依次存放,列信息从页尾向页头方向依次存放),直至中间的空余空间不再能存放下一条列和一个列信息为止。

可选地,可以在内存中为数据表中的每一个列建立一个转储过渡页,一个转储过渡页对应于数据表中的一个目标列,一个目标列中的不同属性值可以位于不同的转储过渡页。当转储(数据由行存数据库转存到列存数据库中)发生时,先写此转储过渡页。如果未写满,则再次发生转储时继续写如此转储过渡页。可以将属于同一张表的转储过渡页组成的集合称为转储过渡区。

下面结合具体示例对转储过渡区进行说明,如图5所示,对于历史数据(10,james,1000,createaccount),将“james”、“1000”和“createaccount”与id“10”分别写入到转储过渡页,与同一数据表对应的多个转储过渡页组成的集合为一个转储过渡区。

可选地,在将多个目标行的多个目标列中各目标列上记录的目标属性值分别存储到与该目标列对应的转储过渡页中之前、过程中或者之后,可以判断目标条件是否满足,并在预定条件满足的情况下执行向目标页面中转属性值的操作。

可选地,可以在多个目标行的多个目标列中相同目标列上记录的目标属性值的全部或者部分目标属性值写满转储过渡页(目标条件)的情况下,可以将转储过渡页中记录的属性值存储至目标页面中的第三页面中,其中,转储过渡页中记录的属性值包括多个目标行的多个目标列中相同目标列上记录的目标属性值中写入到转储过渡页中的目标属性值。

可选地,转储过渡页和列存数据库的页面可以具有相同的格式,此时,写满转储过渡页的属性值可以写满列存数据库的一个页面。

可选地,将转储过渡页中记录的属性值存储至目标页面中的第三页面中包括:确定转储过渡页的页头信息,其中,页头信息用于标识与转储过渡页中记录的属性值对应的目标标识的标识值范围;将页头信息和转储过渡页中记录的属性值存储至目标页面中的第三页面中。通过页头信息,可以快速确定第三页面中存储的多个目标列的属性值所对应的目标标识的范围,便于后续查询时的快速定位。

可选地,目标标识可以有多种形式,可以包括但不限于:版本标识、约束列,其中,版本标识用于唯一标识多个目标列的列版本,约束列为多个目标列中的预定列。

作为一种可选的实施方式,在目标标识为版本标识的情况下,如图3或图4所示,页头信息可以包含:与转储过渡页中记录的属性值所对应的版本标识的最大值和最小值。版本标识可以包括但不限于:事务id,用户自定义的索引标识。在内存中的转储过渡页和诸多的位于内存中的列存页,因xid唯一,可以使用hash进行管理。

可选地,针对时态相关的数据不需要对转储过渡页做出特别的限定,只要保证历史态数据依次写入转储过渡页即可。以银行业务为例,查询某一年某个网点所有交易记录。这种情况是和时态相关的,为了查询方便,要求相近记录按时间连续存放。

作为另一种可选的实施方式,在目标标识为约束列的属性(例如,“位置”、“温度”等)的情况下,转储过渡页的页头信息中的目标标识为约束列信息。页头信息可以包含:一个或多个键值对,键值对包括约束列(作用同第一目标列)的属性值以及与约束列的属性值对应的页内偏移量,其中,约束列的属性值与转储过渡页中存储的目标列(作用同第二目标列)的属性值的列版本对应,与约束列的同一属性值对应的转储过渡页中记录目标列的属性值在转储过渡页中连续存储,页内偏移量为与约束列的属性值对应的转储过渡页中记录的目标列的属性值的存储位置在转储过渡页中的偏移量。

上述转储过渡页可适用于分布聚集程度高的数据,简单来说就是约束列信息(如,id)等都是批量分布的,只要找到了一个id,与其一致的id均连续分布在其后,而一页中可能只包含少数的几个id。

以气象监测数据为例,某气象站每5分钟更新一次气温信息,并汇总到气象中心,现需要查询一天中某气象站监测的气温变化。这种情况是和数据分布区域相关的,存储就不应该按照时间顺序,而应该按照数据分布存储。

可选地,可以将一页中不同的约束元素(约束列的属性值)称为一个item,那么,页头中只存<item,页内偏移量>这样的键值对。将数据名称(约束元素)及其页内偏移地址组成的数据结构称为itemmap。itemmap将会写在外存的页头中。

可选地,转储数据写入转储过渡页可以进行“间隔写”。所谓间隔写是指:转储过渡页写入一条历史态数据后,空出若干行的位置,供同一约束(如主键)的历史态数据(与同一约束值对应的历史态数据)在稍后插入,而不同约束的记录将会在若干空行之后插入。行空间的值由每个间隔段的第一个值所占空间的大小决定。间隔设为一个参数值k,即,容忍k行间隔,k值根据应用的修改频度进行设置,默认值为10。

例如,某市气象局有n个气象观测站,其中有一张气温表temp(idint,locationchar(8),temperatureint)用于记录实时气温,记录的属性包括:观测站标识、位置和温度。此表中,id和location都可以作为约束列。那么,其内存过渡页的写入顺序如图6所示(示出了与“id”、“location”和“temperature”的转储过渡页),在id为1的观测站写入数据后,id为2的观测站数据在间隔n行之后再写,n的值由参数设定。这样,属于同一约束元素的数据聚合在一起,在查询时可以顺序读,提高查询效率。

可选地,从转储过渡页到普通的列存页(列存数据库中的目标页面)的页面拷贝操作时,可以将转储过渡页中记录的属性值直接拷贝到普通的列存页的页面,也可以以页面为单位,对与同一列对应的一个或多个转储过渡页中记录的属性值进行压缩后,再拷贝到普通的列存页的页面,以节约存储空间。

可选地,在同一转储过渡页中存储有多个目标列的信息的情况下(如,页面a),可以先预估转储过渡页中每目标列的压缩率,对预估的各目标列的压缩数据量进行求和之后,根据总的压缩数据量确定是否进行转储。在一个转储过渡页中存储有一个目标列的信息的情况下(如,页面b),可以分别预估各目标列对应的转储过渡页的压缩率,并分别根据各压缩率进行转储。列存页面(转储过渡页的格式)的选择可以在转储开始前确定。

可选地,可以确定使用目标压缩方式对多个转储过渡页中的各转储过渡页的数据进行压缩之后预计得到的总压缩数据量,其中,多个转储过渡页中的各转储过渡页存储有与目标列对应的属性值,多个转储过渡页包含转储过渡页;在总压缩数据量满足目标条件的情况下,使用目标压缩方式对多个转储过渡页进行压缩,得到总压缩数据,其中,目标条件为:总压缩数据量小于等于目标阈值,并且总压缩数据量加上一个转储过渡页的压缩数据量大于目标阈值;将总压缩数据存储至目标页面中的第三页面中。

可选地,可以基于压缩预估技术监控内存过渡页的状态,如计算得压缩后的预估值不能写满一个外存页面,则将相应的转储过渡页扩展为一个extend。内存中对于与同一目标列对应的多个转储过渡页,可以扩展为一个extend(扩展页,如一个extend为8个转储过渡页面大小),即对同一个列连续有n个这样的页面,则写满一个extend。然后再对extend进行压缩持久化(即,将压缩的数据写入外存中的页面)存储为普通的列存页面。在extend被压缩存储之前会记录该extend中包含的页头信息。可以提高压缩效率,节约存储空间。

可选地,数据压缩率的大小跟转储过渡页中的数据分布直接相关,因此不能以一个统一的标准来确定何时将对转储过渡页中的数据进行压缩并持久化到外存,因此需要先进行压缩预估,以尽量确保可以写满外存页面,减少查询时的跨页面读。

可选地,可利用信息熵理论,根据转储过渡页中数据分布情况进行较准确的预估。

例如,account表的name列,如果存储name数据的某extend中只含有james、alex两种数据,那么只需一个二进制位,1表示james,0表示alex。如果存储name数据的转储过渡页中含有james、alex和bob三种数据,那么就需要两个二进制位来表示。以此类推,在均匀分布的情况下,假定一个字符(或字符串)在转储过渡页中出现的概率是p,则需要log2(1/p)个二进制位表示替代该字符(或字符串)的替代符号。

对于一般情况,假设转储过渡页由n种数据组成,每种数据出现的概率分别为p1,p2...pn,替代符号占据的二进制最少为:

其中,p是根据频率统计得到的,因此,转储过渡页中每种数据占据二进制的数学期望如公式(1)所示(根据公式(1),可以预估数据的压缩率):

以account表的name列为例进行说明。假设某转储过渡页中有james,alex,bob三种数据,数据项总数是1024项,大小为4kb,三种数据所占比例为50%,30%,20%,那么每种数据占据的二进制位数为0.5*log2(1/0.5)+0.3*log2(1/0.3)+0.2*log2(1/0.2)=1.49。理论上每种数据要占据1.49个二进制位,那么压缩1024项数据理论上需要1526个二进制位,即,0.19kb。压缩比例大概为20:1。那么,写满1个外存页大约需要对内存的20个转储过渡页进行压缩。

可选地,可以在内存中为待转储的数据表维护一张信息表,实时监控各转储过渡页的数据分布情况,预估各转储过渡页的压缩率,扩展成扩展页(extend),扩展页可以是实际的页面(将各转储过渡页的页头信息、页体信息和页尾信息分别扩展页的对应的位置),也可以是虚拟的页面(根据信息表标识同一扩展页对应的转储过渡页),当某扩展页中的理论压缩后数据量可以写满一个外存页时,压缩扩展页,进行持久化。之后该扩展页所占的内存空间也即被释放。而不能写满一个外存页(外存页面,即,列存数据库中的一个页面)的扩展页继续驻留内存,等待下次转储。

可选地,对于预估可能出现不准确的情况,还可以维护一个map结构,其在当前正在进行转储的表(列)和与之对应的页面之间建立联系。记录进行此次转储之后,对应的页面还剩余多少空间,如,map中某信息<t,2k>,则说明在进行此次转储之后,表t对应的页面(转储过渡页)还剩余2k的空间没有被使用。那么,转储线程在进行压缩预估之前先查此map。查找可能有两种结果。若map中没有表(列)的信息,则表明该表(列)是第一次进行转储,或,上次转储之后页面没有空间剩余,可以直接为该次转储预估默认的页面大小,同时将转储之后的剩余空间信息写入此map。若map中有表(列)信息,说明该表(列)上次进行转储之后有页面空余,可以根据读出的页面空闲值进行压缩预估。需要说明的是,这里的写满页面不是绝对写满,而是设定一个阈值(如,99%),当前页面已占用空间与总页面的比例大于等于该阈值(如,已占用空间大于等于总页面的99%)时,即认定该页已满,表信息从map中删除。

可选地,对于一个转储过渡页中存储有一个目标列的信息的场景(如,页面b),那么,对应的map信息就是列与对应页面空闲空间的对应关系,如<column1,2k>等,相关操作与前述类似,在此不做赘述。

作为一种可选的实施方式,对于多个目标列中的各列,可以以目标列中压缩后得到的总压缩数据量最大的目标列为准,在最大的总压缩数据量满足目标条件时,分别对各目标列对应的转储过渡页(extend)进行压缩,分别存储在目标页面中的一个页面中。

例如,如图7所示,在extend被压缩前,需要根据页头提供的xid_min/xid_max(版本标识,或id_min/id_max等自定义信息)确定extend的xid范围,并存储在压缩后外存中的页头信息中,称之为xrange。xrange可以减少查询过程中不必要的解压缩操作。图7中所示的extend为被压缩持久化之后的extend,即外存压缩页。

针对时态相关的查询不需要对内存过渡页做出特别的限定,只要保证历史态数据依次写入内存中的转储过渡页即可。在内存中的转储过渡页和诸多的位于内存中的列存页,因xid唯一,可以使用hash进行管理。

再例如,如图8所示,在一个extend被压缩之前,需要根据页头提供的键值对<约束列的属性值,页内偏移地址>确定每个extend的键值对,并存储在压缩后外存中的页头信息中,将数据名称及其页内偏移地址组成的数据结构称为itemmap。

可选地,外存页头的地址信息和itemmap的key值会在列存系统启动时加载到内存,建立起列存索引,加速查询过程。

作为另一种可选的实施方式,对于多个目标列中的各目标列,可以分别进行扩展成扩展页、预估压缩数据量、压缩以及持久化操作,各目标列对应的转储过渡页之间互不影响。与此对应的列存数据库中的页面存储数据的方式与图7和图8类似,只是每个页面中页头的列存索引的范围或者键值对中每个键值所应的页面偏移量可能不同。

可选地,在本实施例中,在达到目标时间之后,可以清除目标行。在清除目标行之后,还可以接收用于对数据表进行数据查询的查询信息。数据表中的数据至少存储在:行存数据库的数据表和列存数据库的目标页面中,还可以存储在数据页面(例如,postgresql)或回滚段(mysql)中。

可选地,在接收到查询信息之后,可以使用查询信息,依次查询列存数据库中的目标页面和行存数据库的数据表(或,以及数据页面或回滚段),获取与查询信息对应的查询结果,并将获取的查询结果进行输出。行存数据库和列存数据库可以均位于内存中,也可以行存数据库位于内存中,而列存数据库位于外存中。

在使用转储过渡页进行数据转储的情况下,数据表中的数据至少存储在:行存数据库的数据表、转储过渡页和列存数据库的目标页面中。还可以存储在数据页面(例如,postgresql)或回滚段(mysql)中。

可选地,在接收到查询信息之后,可以使用查询信息,依次查询列存数据库中的目标页面、行存数据库的数据表和转储过渡页(或,以及数据页面或回滚段),获取与查询信息对应的查询结果,并将获取的查询结果进行输出。行存数据库和转储过渡页可以位于内存中,列存数据库可以位于外存中。

可选地,在接收到查询信息之后,在接收到的查询信息包括目标标识的查询值(具体值,或范围值)的情况下,获取数据表的行存索引、列存索引和转储过渡页,其中,行存索引为数据表在行存数据库中存储的行存数据的索引,列存索引为目标页面的各页面中存储的多个目标列的属性值对应的目标标识的标识值的索引;使用查询值依次对列存索引、行存索引和转储过渡页进行查询,确定与查询信息对应的目标数据所在的目标位置;使用确定的目标位置,获取与查询信息对应的查询结果;将获取的查询结果进行输出。

可选地,可以通过以下步骤获取数据表的行存索引、列存索引和转储过渡页:可以获取该数据表的存储地址(例如,可以从数据字典中该数据表的元数据中获取数据的存储地址);加载该数据表(行存数据库中的数据表)进入数据缓存区,并获取该数据表的行存索引;获取转储过渡页和列存索引(转储过渡页和列存索引可以在内存中常驻)。列存索引可以包括但不限于:版本标识的索引、键值对。

可选地,可以使用查询值在列存索引和行存索引进行查找,如果在列存索引上找到,则根据列存索引找到对应的列存页面,在该页面中读出数据;如果在行存索引上存在,则根据行存索引指向的位置,遍历行存格式的页面,读出数据;遍历转储过渡页,如果存在,则读出数据。

可选地,可以根据xrange的指示查询相应的压缩页,对相应的压缩页执行解压缩操作,读出数据,也可以根据itemmap的指示查询相应的压缩页,对相应的压缩页执行解压缩操作,读出数据。

可选地,可以优先在列存索引上查找,再在行存索引中进行查找,sql语句可以给定hint指示优先在哪个索引上查找。对于版本标识相关的查询,可以通过依次查询列存索引(如,xrange)、行存索引和转储过渡页,直到查找到对应的查询结果为止。对于约束列的属性值有关的查询,可以依次查询列存索引(如,itemmap)、行存索引和转储过渡页,查找出所有对应的查询结果。

例如,如图7所示,执行sql查询语句selectnamefromaccountwherexid<20andxid>10,在查询列存的过程中,根据一般的查询过程,首先要解压name的每一个extend,找出符合条件的xid之后再求出name值。解压需要耗费大量的资源,且影响查询速度。而基于xrange来执行上述sql,可以预先知道只有extend1中存在符合条件的name值,因此只需要解压extend1即可。同时,可以不必再查询行存索引以及转储过渡页。大大节约了解压和查询的时间。

基于约束列的数据查询对于规律生成的数据,如气象信息,物联网节点定时采集更新的信息有很好的支持度,但是对于无规律的数据更新支持度较差。

例如,执行sql语句selecttemperaturefromtempwhereid=1;按照基于xrange查询,id=1的temperature值可能横跨若干个压缩页,查询时进行大量解压。而基于itemmap的查询只需要查询页头信息中的itemmap的key值,得到id=1的页内偏移值,计算id=1的数据范围,再据此找到temperature列的对应范围的数据即可。

为方便管理,外存中属于同一列的所有页面组成一个segment。需要说明的是,segment只是逻辑上的划分,至于其物理上的实现不在本发明的讨论范围。采用何种转储策略在转储开始前由用户根据具体的查询分析场景通过设置存储参数决定。默认是基于版本标识的转储策略。

下面结合以下示例对数据处理方法进行说明。一个完整的数据处理方法如图9所示,主要分成3个大步骤:

步骤1(标示为1的箭头所示):基于用户选择的策略定时将数据写入转储过渡页。

步骤2(标示为2的箭头所示):利用压缩预估机制实现内存过渡页或extend向外存进行持久化。并建立xrange或itemmap索引。

步骤3(标示为3的箭头所示):当查询请求到来时,根据sqlhint在行存或内存过渡页及列存进行查询,默认在列存过渡页及列存进行查询。

通过本示例,利用列存中各个元组的xid(或其他索引)范围管理转储过渡页可以有效提高寻址速度,同时针对不同的数据场景采用基于压缩预估机制的xrange和itemmap的方式,确保查询列存过程不解压无关压缩页,提高了查询性能。同时,上层应用系统可以读取行存数据库中的最新数据,分析系统可以基于列存进行数据分析,得出有价值的信息。应用系统与分析系统互不影响,充分利用了数据的价值。

通过本实施例,通过获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行;将多个目标行的目标列上记录的目标属性值存储至列式存储数据库中的目标页面,其中,多个目标行的目标列中相同一列上记录的目标属性值被记录在列式存储数据库中的目标页面中的至少一个页面上;在达到目标时间之后,清除目标行,达到了对数据库中的历史数据进行保存的目的,保证了数据变迁历史完整。

作为一种可选的实施方案,将多个目标行的目标列上记录的目标属性值存储至列式存储数据库中的目标页面包括:

s1,将多个目标行的多个目标列中不同目标列上记录的目标属性值存储至目标页面中的不同页面上,其中,在多个目标行的多个目标列中相同目标列上记录的目标属性值中的部分目标属性值写满目标页面中的第一页面的情况下,将多个目标行的多个目标列中相同目标列上记录的目标属性值中除部分目标属性值以外的其他目标属性值存储至目标页面中的第二页面上。

通过本实施例,通过将目标列中不同列上记录的目标属性值存储至目标页面中的不同页面上,并且同一目标列上记录的属性值可以存储在不同的页面上,从而可以合理规划目标列属性值的存储方式,方便对目标页面进行管理。

作为一种可选的实施方案,将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的目标页面包括:

s1,将多个目标行的多个目标列中相同目标列上记录的目标属性值存储至转储过渡页,其中,转储过渡页用于将多个目标列上记录的属性值转储至列式存储数据库的目标页面;

s2,在多个目标行的多个目标列中相同目标列上记录的目标属性值的全部或者部分目标属性值写满转储过渡页的情况下,将转储过渡页中记录的属性值存储至目标页面中的第三页面中,其中,转储过渡页中记录的属性值包括多个目标行的多个目标列中相同一列上记录的目标属性值中写入到转储过渡页中的目标属性值。

通过本实施例,通过转储过渡页对目标列上记录的目标属性值,在转储过渡页存满时才进行转储,可以保证目标页面中的页面被写满,避免了存储空间的浪费。

作为一种可选的实施方案,将多个目标行的多个目标列中相同目标列上记录的目标属性值存储至转储过渡页包括:

s1,确定转储过渡页的页头信息,其中,页头信息用于标识与转储过渡页中记录的属性值对应的目标标识的标识值范围;

s2,将页头信息和转储过渡页中记录的属性值存储至目标页面中的第三页面中。

可选地,页头信息包括:与转储过渡页中记录的属性值所对应的版本标识的最大值和最小值,其中,目标标识为版本标识,版本标识用于唯一标识多个目标列的列版本;或者,页头信息包括:一个或多个键值对,键值对包括多个目标列中第一列的属性值以及与第一列的属性值对应的页内偏移量,其中,第一列的属性值与转储过渡页中存储的第二列的属性值的列版本对应,与第一列的同一属性值对应的转储过渡页中记录的第二列的属性值在转储过渡页中连续存储,页内偏移量为与第一列的属性值对应的转储过渡页中记录的第二列的属性值的存储位置在转储过渡页中的偏移量。

通过本实施例,通过设置页头信息,从而形成对列式存储数据库中的页面中存储的属性值的索引,方便对目标页面的管理。

作为一种可选的实施方案,将转储过渡页中记录的属性值存储至目标页面中的第三页面中包括:

s1,确定使用目标压缩方式对多个转储过渡页中的各转储过渡页的数据进行压缩之后预计得到的总压缩数据量,其中,多个转储过渡页中的各转储过渡页存储有与多个目标列中相同目标列对应的属性值,多个转储过渡页包含转储过渡页;

s2,在总压缩数据量满足目标条件的情况下,使用目标压缩方式对多个转储过渡页中的各转储过渡页分别进行压缩,得到总压缩数据,其中,目标条件为:总压缩数据量小于或等于目标阈值,且总压缩数据量加上一个转储过渡页的压缩数据量大于目标阈值;

s3,将总压缩数据存储至目标页面中的第三页面中。

通过本实施例,通过预估多与目标列中的同一列对应的多个转储过渡页中的属性值进行压缩后的总的压缩数据量,在压缩后的总数据量大于目标阈值时,对多个转储过渡页中的属性值进行压缩后存储至目标页面中的一个页面,节省了存储空间。

作为一种可选的实施方案,在清除多个目标行之后,上述方法还包括:

s1,接收用于对数据表进行数据查询的查询信息;

s2,使用查询信息,依次查询列式存储数据库中的目标页面和行式存储数据库的数据表,获取与查询信息对应的查询结果;

s3,将获取的查询结果进行输出。

通过本实施例,通过根据查询信息分别对行式存储数据库中的数据表和列式存储数据库中的目标页面进行查询,保证了查询结果的全面性。

作为一种可选的实施方案,在清除多个目标行之后,上述方法还包括:

s1,接收用于对数据表进行数据查询的查询信息;

s2,使用查询信息,依次查询列式存储数据库中的目标页面、行式存储数据库的数据表以及转储过渡页,获取与查询信息对应的查询结果;

s3,将获取的查询结果进行输出。

通过本实施例,根据查询信息分别对行式存储数据库中的数据表、列式存储数据库中的目标页面以及转储过渡页进行查询,保证了查询结果的全面性。

作为一种可选的实施方案,在清除多个目标行之后,上述方法还包括:

s1,接收用于对数据表进行数据查询的查询信息,其中,查询信息包括与目标标识对应的查询值;

s2,获取行存索引、列存索引和转储过渡页,其中,行存索引为行式存储数据库中的数据表中存储的行存数据的索引,列存索引为与目标页面中各目标页面存储的多个目标列的属性值所对应的目标标识的标识值的索引;

s3,使用查询值依次对列存索引、行存索引和转储过渡页进行查询,确定与查询信息对应的查询结果所存储在的目标位置;

s4,使用确定的目标位置,获取与查询信息对应的查询结果;

s5,将获取的查询结果进行输出。

通过本实施例,根据查询信息分别对列存索引、行存索引以及转储过渡页进行查询,保证了查询的效率以及查询结果的全面性。

以下结合图10,对上述数据处理方法进行说明。如图10所示,网元节点的处理器通过步骤s1002,将行存数据库中的数据表的历史数据转储至转储过渡页。通过步骤s1004,将转储过渡页中的数据存储至列存页面,通过步骤s1006,接收查询信息,通过步骤s1008,使用查询信息,对列存索引、行存索引以及转储过渡页进行查询,得到查询结果,通过步骤s1010将得到的查询结果进行输出。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或网络设备等)执行本发明各个实施例的方法。

根据本发明实施例的另一个方面,还提供了一种用于实施数据处理方法的数据处理装置,如图11所示,该装置包括:

(1)第一获取单元1102,用于获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行;

(2)存储单元1104,用于将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的一个或多个目标页面,其中,多个目标行的多个目标列中相同目标列上记录的目标属性值被记录在列式存储数据库中的多个目标页面中的至少一个目标页面上;

(3)清除单元1106,用于在达到目标时间之后,清除多个目标行。

需要说明的是,在相关技术中,对于数据库中的历史数据,通过采用清除操作将其清除。采用前述方法,会使得数据库中的历史数据缺失,从而难以追溯历史数据。而在本申请中,通过获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行;将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的目标页面,其中,多个目标行的多个目标列中相同目标列上记录的目标属性值被记录在列式存储数据库中的多个目标页面中的至少一个页面上;在达到目标时间之后,清除多个目标行,以对数据库中的历史数据进行保存,保证数据变迁历史数据的完整,进而解决了相关技术中的数据处理方式会导致难以追溯历史数据的技术问题。

可选地,第一获取单元1102可用于执行步骤s202,存储单元1104可用于执行前述步骤s204,清除单元1106可用于执行步骤s206。可选的执行方式在此不做赘述。

作为一种可选的实施方案,存储单元1104包括:

(1)第一存储模块,用于将多个目标行的多个目标列中相同目标列上记录的目标属性值存储至转储过渡页,其中,转储过渡页用于将多个目标列上记录的属性值转储至列式存储数据库的目标页面;

(2)第二存储模块,用于在多个目标行的多个目标列中相同目标列上记录的目标属性值的全部或者部分目标属性值写满转储过渡页的情况下,将转储过渡页中记录的属性值存储至目标页面中的第三页面中,其中,转储过渡页中记录的属性值包括多个目标行的多个目标列中相同一列上记录的目标属性值中写入到转储过渡页中的目标属性值。

通过本实施例,通过转储过渡页对目标列上记录的目标属性值,可以在转储过渡页存满时才进行转存储,从而可以保证目标页面中的页面被写满,避免了存储空间的浪费。

作为一种可选的实施方案,第二存储模块包括:

(1)第一确定子模块,用于确定转储过渡页的页头信息,其中,页头信息用于标识与转储过渡页中记录的属性值对应的目标标识的标识值范围;

(2)第一存储子模块,用于将页头信息和转储过渡页中记录的属性值存储至目标页面中的第三页面中。

可选地,页头信息包括:与转储过渡页中记录的属性值所对应的版本标识的最大值和最小值,其中,目标标识为版本标识,版本标识用于唯一标识多个目标列的列版本;或者,页头信息包括:一个或多个键值对,键值对包括多个目标列中第一列的属性值以及与第一列的属性值对应的页内偏移量,其中,第一列的属性值与转储过渡页中存储的第二列的属性值的列版本对应,与第一列的同一属性值对应的转储过渡页中记录的第二列的属性值在转储过渡页中连续存储,页内偏移量为与第一列的属性值对应的转储过渡页中记录的第二列的属性值的存储位置在转储过渡页中的偏移量。

通过本实施例,通过设置页头信息,从而形成对列式存储数据库中的页面中存储的属性值的索引,方便对目标页面的管理。

作为一种可选的实施方案,第二存储模块包括:

(1)第二确定子模块,用于确定使用目标压缩方式对多个转储过渡页中的各转储过渡页的数据进行压缩之后预计得到的总压缩数据量,其中,多个转储过渡页中的各转储过渡页存储有与多个目标列中相同目标列对应的属性值,多个转储过渡页包含转储过渡页;

(2)压缩子模块,用于在总压缩数据量满足目标条件的情况下,使用目标压缩方式对多个转储过渡页中的各转储过渡页分别进行压缩,得到总压缩数据,其中,目标条件为:总压缩数据量小于或等于目标阈值,且总压缩数据量加上一个转储过渡页的压缩数据量大于目标阈值;

(3)第二存储子模块,用于将总压缩数据存储至目标页面中的第三页面中。

通过本实施例,通过预估多与目标列中的同一列对应的多个转储过渡页中的属性值进行压缩后的总的压缩数据量,在压缩后的总数据量大于目标阈值时,对多个转储过渡页中的属性值进行压缩后存储至目标页面中的一个页面,节省了存储空间。

作为一种可选的实施方案,存储单元1104包括:

第三存储模块,用于将多个目标行的多个目标列中不同目标列上记录的目标属性值存储至目标页面中的不同页面上,其中,在多个目标行的多个目标列中相同目标列上记录的目标属性值中的部分目标属性值写满目标页面中的第一页面的情况下,将多个目标行的多个目标列中相同目标列上记录的目标属性值中除部分目标属性值以外的其他目标属性值存储至目标页面中的第二页面上。

通过本实施例,通过将目标列中不同列上记录的目标属性值存储至目标页面中的不同页面上,并且同一目标列上记录的属性值可以存储在不同的页面上,从而可以合理规划目标列属性值的存储方式,方便对目标页面进行管理。

作为一种可选的实施方案,上述装置还包括:

(1)接收单元,用于在清除多个目标行之后,接收用于对数据表进行数据查询的查询信息;

(2)第二获取单元,用于使用查询信息,依次查询列式存储数据库中的目标页面和行式存储数据库的数据表,获取与查询信息对应的查询结果;

(3)输出单元,用于将获取的查询结果进行输出。

通过本实施例,通过根据查询信息分别对行式存储数据库中的数据表和列式存储数据库中的目标页面进行查询,保证了查询结果的全面性。

作为一种可选的实施方案,上述装置还包括:

(1)第一接收单元,用于在清除多个目标行之后,接收用于对数据表进行数据查询的查询信息;

(2)第一查询单元,用于使用查询信息,依次查询列式存储数据库中的目标页面、行式存储数据库的数据表以及转储过渡页,获取与查询信息对应的查询结果;

(3)第一输出单元,用于将获取的查询结果进行输出。

通过本实施例,根据查询信息分别对行式存储数据库中的数据表、列式存储数据库中的目标页面以及转储过渡页进行查询,保证了查询结果的全面性。

作为一种可选的实施方案,在清除多个目标行之后,上述装置还包括:

(1)第二接收单元,用于在清除多个目标行之后,接收用于对数据表进行数据查询的查询信息,其中,查询信息包括与目标标识对应的查询值;

(2)第三获取单元,用于获取行存索引、列存索引和转储过渡页,其中,行存索引为行式存储数据库中的数据表中存储的行存数据的索引,列存索引为与目标页面中各目标页面存储的多个目标列的属性值所对应的目标标识的标识值的索引;

(3)第二查询单元,用于使用查询值依次对列存索引、行存索引和转储过渡页进行查询,确定与查询信息对应的查询结果所存储在的目标位置;

(4)第四获取单元,用于使用确定的目标位置,获取与查询信息对应的查询结果;

(5)第二输出单元,用于将获取的查询结果进行输出。

通过本实施例,根据查询信息分别对列存索引、行存索引以及转储过渡页进行查询,保证了查询的效率以及查询结果的全面性。

可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

根据本发明的实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

s1,获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行;

s2,将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的目标页面,其中,多个目标行的多个目标列中相同目标列上记录的目标属性值被记录在列式存储数据库中的多个目标页面中的至少一个页面上;

s3,在达到目标时间之后,清除多个目标行。

可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。

根据本发明实施例的又一个方面,还提供了一种用于实施上述数据处理方法的电子装置,如图12所示,该电子装置包括:处理器1202、存储器1204和传输装置1206等。该存储器中存储有计算机程序,该处理器被设置为通过计算机程序执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

s1,获取行式存储数据库的数据表中在目标时间上待被清除的多个目标行;

s2,将多个目标行的多个目标列上记录的目标属性值存储至列式存储数据库中的目标页面,其中,多个目标行的多个目标列中相同目标列上记录的目标属性值被记录在列式存储数据库中的多个目标页面中的至少一个页面上;

s3,在达到目标时间之后,清除多个目标行。

可选地,本领域普通技术人员可以理解,图12所示的结构仅为示意,电子装置也可以是提供查询服务的服务器。图12其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图12中所示更多或者更少的组件(如网络接口等),或者具有与图12所示不同的配置。

其中,存储器1204可用于存储软件程序以及模块,如本发明实施例中的数据处理方法和装置对应的程序指令/模块,处理器1202通过运行存储在存储器1204内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述数据处理方法。存储器1204可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或其他非易失性固态存储器。在一些实例中,存储器1204可进一步包括相对于处理器1202远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

上述的传输装置1206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1206包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1206为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1