具体实施方式
本文所提及的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
在本文提及的“模块”通常是指存储在存储器中的能够实现某些功能的程序或指令;在本文中提及的“单元”通常是指按照逻辑划分的功能性结构,该“单元”可以由纯硬件实现,或者,软硬件的结合实现。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
下述各个实施例提供的数据清理方法用于清理分布式数据库中的数据,分布式数据库是指在多个文件中分布式存储数据的数据库。该分布式数据库可以为Hbase(HadoopDatabase,Hadoop数据库)、Mongo数据库(Mongo Database,MongoDB)、Volt数据库(VoltDatabase,VoltDB)、和ScaleBase等,以下除特殊说明外,均以分布式数据库为Hbase数据库来举例说明。
通常情况下,在分布式数据库中,数据均采用KeyValue(键值)的存储方式进行存储,也即将所要存储的数据存储在Value部分,然后构建Key用于查询对应的Value。比如,在网上交易系统中使用分布式存储系统来存储数据,则Key和Value可以为:
Key:用户编码+交易时间
Value:交易的详细信息。
实际实现时,数据以KeyValue的存储方式存储时,通常按照Key的字典顺序排序进而保证同一用户的数据相邻存储。比如,Key为“abc”,“a”,“bdf”,“cdf”,“defg”的各个元素字典排序后的结果为:“a”,“abc”,“bdf”,“cdf”,“defg”。
通常情况下,一个KeyValue代表一个独立的列,KeyValue中包含Key、ColumnFamily、Qualifier、Value、Type、Timestamp等关键信息:
Key:用户数据RowKey,被用来识别和查找对应的数据记录。Key值相同的多个KeyValue可以认为是属于同一行的记录。
ColumnFamily:一个ColumnFamily包含一个或多个列(KeyValue),每一个ColumnFamily在底层存储上,都是独立的路径。可以理解成不同的ColumnFamily在物理存储上是隔离的。
Qualifier:一个Qualifier代表着某一个ColumnFamily下的某个KeyValue的列名。
Value:存放列中对应的数据。
Type(类型):表示这条记录是一个新增操作还是删除操作。
Timestamp(时间戳):这条记录产生的时间戳。
比如,请参考表1,其示出了存储的一种可能的表。
表1
其中,表1中ID(Identity,身份)的列在KeyValue中并不存在,本实施例仅以描述方便增加了该列。
基于表1,假设1498203273这一时间点,删除了R001的I:NAME一列,则会在表中将会增加一条记录,增加记录之后的表格更新为表2。
Key |
ColumnFamily |
Qualifier |
Value |
Type |
Timestamp |
ID |
R001 |
I |
NAME |
Wang |
ADD |
1498201273 |
1 |
ROO1 |
I |
NAME |
|
DELETE |
1498203273 |
7 |
R001 |
I |
AGE |
20 |
ADD |
1498201273 |
2 |
R001 |
Z |
ADDR |
GuangDong |
ADD |
1498201273 |
3 |
R002 |
I |
NAME |
Li |
ADD |
1498201393 |
4 |
R002 |
I |
AGE |
30 |
ADD |
1498201393 |
5 |
R002 |
Z |
ADDR |
ShanDong |
ADD |
1498201393 |
6 |
表2
正常的数据读取流程中,同一行中,对于相同的列(相同的ColumnFamily以及相同的Qualifier),只有时间戳最新的数据才会被读取出来。比如,结合表2,由于ID为7的KeyValue的Timestamp比起ID为1的KeyValue的Timestamp更新,因此,ID为1的这个KeyValue将会被覆盖,正常的读取流程中将不会被读取到,相当于ID为1的KeyValue已经被删除掉。
假设,在1498215273这一时间点,又被写入了一条新的KeyValue,写入之后的表格为表3。
表3
结合表3,新写入的这个KeyValue(ID为8对应的KeyValue)在读取时将会被读取到。
并且,为了便于理解,下述先对Hbase数据库中所涉及的相关概念做简单介绍。
Table(表):一个Table用来存放一类用户数据,例如,使用一个名为UserInfo的Table来存储用户基础信息;使用一个名为Transactions的Table来存储用户的交易记录明细信息。
一个Table中可能包含海量的数据,为了实现分布存储,当前一种比较常见的方式是将一个Table按照记录的Key值的字典顺序切割生成多个子表来进行管理和维护,这个子表就是Region。我们可以这样定义Region(子表):一个Region是指一些连续行的集合(也即子表是一个具有起始Key和结束Key的Key值区间)。通常情况下,一个Table由一个或多个Region构成。比如,请参考图1,其示出了一个Table中的M个Region。其中,图1中Region-1中的Key-A代表着在字典顺序上一个无穷小的值,而Region-M中的Key-Y则代表着在字典顺序上一个无穷大的值。
可选地,Region是分布式存储以及负载均衡的最小单元,Region在增大到一定程度后,会自动分裂成多个Region。
Flush(冲刷):分布式数据库在写数据时,数据会同时写入WAL(Write-AheadLoggin,预写日志系统)和Region的内存中。WAL固化到磁盘用来保证数据的可靠性,Region内存中的数据的数据量在达到预设数据量或者在接收到触发请求时,Region内存中的数据会Flush到磁盘上,形成HFile,同时在其元数据中记录了包含的数据的时间戳范围。
Compaction(合并):分布式数据库持续写数据时,由于Flush的原因,磁盘上会存在大量的HFile,影响到读数据的性能。所以在HFile的个数达到预设个数或者接收到触发请求时会执行Compaction流程,将多个HFile合并成一个HFile。实际实现时,Compaction分为两种类型,一种为Minor Compaction,一种为Major Compaction。Minor Compaction的合并范围较小,合并时不会执行清理数据的操作,而Major Compaction往往是针对所有文件的合并,合并时会清理已经过期的数据或者超出预设版本数的数据,下述实施例中均以采用Major Compaction进行合并来举例说明。
请参考图2,其示出了本申请一个实施例提供的数据清理方法的方法流程图,如图2所述,该数据清理方法可以包括如下步骤:
步骤201,获取数据清理时间,数据清理时间为历史接收到数据清理请求时记录的时间,数据清理请求用于清理分布式数据库中满足清理条件的数据。
步骤202,获取分布式数据库中不满足清理条件的数据,以及满足清理条件但数据存储时间晚于数据清理时间的数据。
步骤203,在分布式数据库中合并获取到的数据。
综上所述,本实施例提供的数据清理方法,通过获取数据清理时间,数据清理时间为历史接收到数据清理请求时记录的时间,数据清理请求用于清理分布式数据库中满足清理条件的数据;进而仅获取不满足清理条件的数据,以及满足清理条件但数据存储时间晚于数据清理时间的数据,合并获取到的数据;解决了现有技术中数据清理的性能低下以及可能会影响服务性能的问题,达到了可以提高数据清理的性能的效果。
在上述实施例中,清理条件可以包括清理全表中的数据,或者,清理预设标签的数据,且基于清理条件的不同,上述步骤202的具体实现也会有所不同,因此,下述将在不同实施例中分别对上述两种情况做详细说明。
请参考图3,其示出了本申请一个实施例提供的数据清理方法的方法流程图,本实施例以清理条件包括清理全表中的数据来举例说明。如图3所述,该数据清理方法可以包括如下步骤:
步骤301,接收数据清理请求,该数据清理请求用于请求清理全表中的数据。
全表包括当前已经存储的KeyValue的全部内容。
比如,请参考表4,其示出了已经存储的一种可能的数据。
表4
结合表4,在接收到数据清理请求时,即为清理表4的全部内容。并且,假设上述数据均存储在HFile1中,则结合表4可知,HFile1中数据的最小时间戳为1498200000,最大时间戳为1498200100。
步骤302,记录接收到该数据清理请求的时间为数据清理时间。
在接收到数据清理请求时,服务器可以记录当前的时间,比如,记录的时间戳为1498211111,将记录的时间作为数据清理时间。
可选地,该数据清理时间可以记录在全表的属性描述文件中,该属性描述文件存储在HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)目录中。实际实现时,每个表设置有一个独立的属性描述文件。当然,属性描述文件中除了数据清理时间之外还可以包括其他内容,在此不再赘述。
可选地,属性描述文件中通常以KeyValue的形式存在,比如,通常以如下形式存在:
Property Key:explicitExpirationTs
Property Value:1498211111
上述仅以在属性描述文件中存储数据清理时间为例,可选地,服务器还可以在其他文件只能怪存储该数据清理时间,对此并不做限定。
步骤303,获取数据清理时间。
可选地,若步骤302中在属性描述文件中存储有该数据清理时间,则服务器可以从该属性描述文件中读取存储的数据清理时间。
可选地,服务器可以在接收到获取已经存储的文件的获取请求时,获取该数据清理时间;或者,在预定时间到达时获取该数据清理时间。其中,预定时间可以为预先设置的某一时刻,如每天24:00;也可以为每隔预定时间间隔的时间,如为每隔12小时的时间。
步骤304,获取分布式数据库中不满足清理条件的数据,以及满足清理条件但数据存储时间晚于数据清理时间的数据。
通常情况下,在步骤302和步骤303之间会间隔一定时间段,在该时间段内服务器还可能会生成其他文件,比如,在1498219999时刻又新产生了如下文件HFile2,并包含了表5所示的数据:
表5
结合表5可知,HFile2中的最小时间戳MinTS为1498210000,最大时间戳MaxTS为1498219900。
可选地,服务器在时间点1498229999又新产生了如下文件HFile3,并包含了表6所示的数据:
Key |
ColumnFamily |
Qualifier |
Value |
Type |
Timestamp |
R201 |
I |
NAME |
Wang1 |
ADD |
1498220000 |
R201 |
I |
AGE |
20 |
ADD |
1498220000 |
R201 |
Z |
ADDR |
GuangDong |
ADD |
1498220000 |
R202 |
I |
NAME |
Li2 |
ADD |
1498220001 |
R202 |
I |
AGE |
32 |
ADD |
1498220001 |
R202 |
Z |
ADDR |
ShanDong |
ADD |
1498220001 |
.... |
... |
... |
... |
... |
..... |
R299 |
I |
NAME |
Zhong |
ADD |
1498220299 |
R299 |
I |
AGE |
30 |
ADD |
1498220299 |
R299 |
Z |
ADDR |
GuangDong |
ADD |
1498220299 |
表6
HFile3中的最小时间戳MinTS为1498220000,最大时间戳MaxTS为1498220299。
因此,本步骤可以包括:
(1)、对于n个文件中的每个文件,获取文件中的各条数据所对应的最大时间戳以及最小时间戳。
对于每个HFile文件,服务器获取该文件的最大时间戳和最小时间戳。比如,结合上述举例,对于HFile1,服务器获取得到的最大时间戳为1498200100,最小时间戳为1498200000;对于HFile2,服务器获取得到的最大时间戳为1498200100,最小时间戳为1498200000;对于HFile2,服务器获取得到的最大时间戳为1498200100,最小时间戳为1498200000。
此后,服务器可以比较数据清理时间和获取到的每个HFile文件的最大时间戳和最小时间戳之间的大小关系,根据比较结果适应性的执行下述对应的步骤。
(2)、若最大时间戳早于数据清理时间,则跳过文件。
若文件的最大时间戳早于数据清理时间,则由于数据清理请求清理全表数据,因此,在接收到数据清理请求时会清理该文件中的全部数据,也即该文件中的数据已经失效,此时,服务器可以跳过该文件。
比如,仍然以上述所说的3个HFile为例,由于HFile1的最大时间戳1498200100早于数据清理时间1498211111,因此服务器跳过该HFile1。
(3)、若最大时间戳晚于数据清理时间且最小时间戳早于数据清理时间,则遍历文件中的各条数据,读取时间戳晚于数据清理时间的数据。
若最大时间戳晚于数据清理时间且最小时间戳早于数据清理时间,则说明该文件中的部分数据已经失效,而部分数据仍然有效,此时服务器可以遍历该文件中的各条数据,比较每条数据的时间戳是否晚于数据清理时间,若是则读取该条数据,反之,跳过该条数据并继续遍历下一条数据。
比如,仍然以上述所说的3个HFile为例,由于HFile2的最大时间戳1498219900晚于数据清理时间1498211111,而最小时间戳1498210000早于数据清理时间1498211111,因此,服务器可以遍历HFile2中的各条KeyValue,并读取时间戳晚于1498211111的KeyValue。
(4)、若最小时间戳晚于数据清理时间,则读取文件中的各条数据。
若最小时间戳晚于数据清理时间,则说明该HFile中的数据均是在数据清理之后存储的,也即该HFile中没有过期的数据,因此,服务器可以读取文件中的各条数据。
步骤305,在分布式数据库中合并获取到的数据。
可选地,服务器在获取到数据之后,可以自动合并获取到的数据。然而,为了降低处理复杂度,服务器可以在满足数据合并条件时,在分布式数据库中合并获取到的数据。其中,数据合并条件包括:获取到的数据所属的文件的总个数达到预设个数,或者,接收到数据合并请求。
以数据合并条件包括获取到的数据所属的文件的总个数达到预设个数为例,在获取到数据之后,服务器可以统计数据所属的文件的总个数,然后在总个数达到预设个数时执行Major Compaction。
以HBase中的HFile包括上述所说的HFile1、HFile2和HFile3为例,则请参考图4,其示出了一种可能的合并示意图。其中,图4仅以合并后为一个HFile来示意性说明,实际实现时,还可以合并为多个HFile文件,只是说合并后的HFile中仅包括步骤304中读取到的数据,对其合并后的HFile的个数并不做限定。
综上所述,本实施例提供的数据清理方法,通过获取数据清理时间,数据清理时间为历史接收到数据清理请求时记录的时间,数据清理请求用于清理分布式数据库中满足清理条件的数据;进而仅获取不满足清理条件的数据,以及满足清理条件但数据存储时间晚于数据清理时间的数据,合并获取到的数据;解决了现有技术中数据清理的性能低下以及可能会影响服务性能的问题,达到了可以提高数据清理的性能的效果。
请参考图5,其示出了本申请一个实施例提供的数据清理方法的方法流程图,本实施例以清理条件包括清理预设标签的数据来举例说明。如图3所述,该数据清理方法可以包括如下步骤:
步骤501,接收数据清理请求,数据清理请求用于请求清理预设标签的数据。
其中,该预设标签可以为一个,也可以为至少两个。
在接收到数据清理请求时,已经存储有数据。比如,请参考表7,其示出了已经存储的一种可能的数据。
表7
结合表7,若需要清理NAME列的数据,则该数据清理请求中携带有“NAME”;若需要清理NAME列和AGE列的数据,则该数据清理请求中携带有“NAME&AGE”。
步骤502,记录接收到该数据清理请求的时间为数据清理时间。
步骤302中在全表的属性描述文件中存储该数据清理时间,而在本步骤中,由于只删除部分标签所对应的数据,因此,服务器可以在预设标签所对应的属性描述文件中存储该数据清理时间。与全表的属性描述文件类似的是,预设标签所对应的属性描述文件可以以KeyValue的形式存储,比如,通常以如下形式存储:
Property Key:explicitExpirationColumnAndTS
Property Value:{COLUMNS:[I:NAME],TS:1498211111}
可选地,上述仅以预设标签为一个来举例,实际实现时,在预设标签为至少两个时,上述举例中的COLUMNS中可以相应的包括至少两个预设标签。并且,如上述举例所述,在表示所需删除的预设标签时通过列所属的ColumnFamily以及列名同时表示,进而明确限定得到所需删除的数据,在此不再赘述。
步骤503,获取数据清理时间。
步骤502和步骤503与上述实施例中的步骤302和步骤303类似,在此不再赘述。
步骤504,获取分布式数据库中不满足清理条件的数据,以及满足清理条件但数据存储时间晚于数据清理时间的数据。
与上述实施例类似,在步骤502和步骤503之间会间隔一定时间段,在该时间段内服务器还可能会生成其他文件,比如,在1498219999时刻又新产生了如下文件HFile2,并包含了表8所示的数据:
Key |
ColumnFamily |
Qualifier |
Value |
Type |
Timestamp |
R101 |
I |
NAME |
Wang1 |
ADD |
1498210000 |
R101 |
I |
AGE |
20 |
ADD |
1498210000 |
R101 |
Z |
ADDR |
GuangDong |
ADD |
1498210000 |
R102 |
I |
NAME |
Li2 |
ADD |
1498220000 |
R102 |
I |
AGE |
32 |
ADD |
1498220000 |
R102 |
Z |
ADDR |
ShanDong |
ADD |
1498220000 |
.... |
... |
... |
... |
... |
..... |
R199 |
I |
NAME |
Zhong |
ADD |
1498219900 |
R199 |
I |
AGE |
30 |
ADD |
1498219900 |
R199 |
Z |
ADDR |
GuangDong |
ADD |
1498219900 |
表8
结合表8可知,HFile2中的最小时间戳MinTS为1498210000,最大时间戳MaxTS为149821990。
可选地,服务器在时间点1498229999又新产生了如下文件HFile3,并包含了表9所示的数据:
Key |
ColumnFamily |
Qualifier |
Value |
Type |
Timestamp |
R201 |
I |
NAME |
Wang1 |
ADD |
1498220000 |
R201 |
I |
AGE |
20 |
ADD |
1498220000 |
R201 |
Z |
ADDR |
GuangDong |
ADD |
1498220000 |
R202 |
I |
NAME |
Li2 |
ADD |
1498220001 |
R202 |
I |
AGE |
32 |
ADD |
1498220001 |
R202 |
Z |
ADDR |
ShanDong |
ADD |
1498220001 |
.... |
... |
... |
... |
... |
..... |
R299 |
I |
NAME |
Zhong |
ADD |
1498220299 |
R299 |
I |
AGE |
30 |
ADD |
1498220299 |
R299 |
Z |
ADDR |
GuangDong |
ADD |
1498220299 |
表9
HFile3中的最小时间戳MinTS为1498220000,最大时间戳MaxTS为1498220299。
因此,本步骤可以包括:
(1)、对于n个文件中的每个文件,获取文件中的各条数据所对应的最大时间戳以及最小时间戳。
本步骤与上述实施例中的实现类似,在此不再赘述。
(2)、若最大时间戳早于数据清理时间,则读取文件中除预设标签之外的其他标签的数据。
若最大时间戳在于数据清理时间,则说明该文件中的预设标签的数据已经在数据清理时间所对应的时刻清理,也即文件中预设标签的数据已经失效,因此此时,服务器可以读取该文件中除预设标签之外的其他标签的数据。
(3)、若最大时间戳晚于数据清理时间且最小时间戳早于数据清理时间,则遍历文件中的各条数据,读取时间戳早于数据清理时间的各条数据中除预设标签之外的其他标签的数据,且读取时间戳晚于数据清理时间的数据。
若最大时间戳晚于数据清理时间且最小时间戳早于数据清理时间,则说明该文件中部分数据中的预设标签的数据已经失效,因此服务器可以遍历文件中的各条数据,读取时间戳晚于数据清理时间的各条数据,并且仅读取时间戳早于数据清理时间的各条数据中除预设标签之外的其他标签的数据。可选地,实际读取过程中,服务器可以仅判断每个预设标签的列的数据的时间戳与数据清理时间的大小关系,若早于则丢弃,而若晚于则读取,并且对于除预设标签之外的其他标签的数据,服务器可以直接读取。
(4)、若最小时间戳晚于数据清理时间,则读取文件中的各条数据。
若文件的最小时间戳晚于数据清理时间,则说明该文件中的数据均未失效,此时服务器可以读取文件中的各条数据。
步骤505,在分布式数据库中合并获取到的数据。
可选地,本步骤与上述实施例中的步骤305的实现类似,在此不再赘述。
综上所述,本实施例提供的数据清理方法,通过获取数据清理时间,数据清理时间为历史接收到数据清理请求时记录的时间,数据清理请求用于清理分布式数据库中满足清理条件的数据;进而仅获取不满足清理条件的数据,以及满足清理条件但数据存储时间晚于数据清理时间的数据,合并获取到的数据;解决了现有技术中数据清理的性能低下以及可能会影响服务性能的问题,达到了可以提高数据清理的性能的效果。
图6所示为本发明实施例提供的数据清理装置的示意图。数据清理装置600可以是计算机设备,该计算机设备可以是上述的服务器(例如图2所示的服务器220),数据清理装置600包括至少一个处理器601,通信总线602,存储器603以及至少一个通信接口604。
处理器601可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。
通信总线602可包括一通路,在上述组件之间传送信息。所述通信接口604,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
存储器603可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,所述存储器603用于存储执行本发明方案的程序代码,并由处理器601来控制执行。所述处理器601用于执行所述存储器603中存储的程序代码。
在具体实现中,作为一种实施例,处理器601可以包括一个或多个CPU,例如图6中的CPU0和CPU1。
在具体实现中,作为一种实施例,数据清理装置600可以包括多个处理器,例如图6中的处理器601和处理器608。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,数据清理装置600还可以包括输出设备605和输入设备606。输出设备605和处理器601通信,可以以多种方式来显示信息。例如,输出设备605可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emittingdiode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备606和处理器601通信,可以以多种方式接受用户的输入。例如,输入设备606可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的数据清理装置600可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,数据清理装置600可以是台式机、便携式电脑、网络服务器、掌上电脑(Personal Digital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图6中类似结构的设备。本发明实施例不限定数据清理装置600的类型。
数据清理装置的存储器中存储了一个或多个软件模块。数据清理装置可以通过处理器以及存储器中的程序代码来实现软件模块,实现上述实施例所说的数据清理方法。
请惨图7,其示出了本申请一个实施例提供的数据清理装置的示意图,如图7所示,该数据清理装置可以包括:获取单元710和合并单元720。
获取单元710,用于获取数据清理时间,所述数据清理时间为历史接收到数据清理请求时记录的时间,所述数据清理请求用于清理所述分布式数据库中满足清理条件的数据;
所述获取单元710,还用于获取所述分布式数据库中不满足所述清理条件的数据,以及满足所述清理条件但数据存储时间晚于所述数据清理时间的数据;
合并单元720,用于在所述分布式数据库中合并获取到的所述数据。
综上所述,本实施例提供的数据清理装置,通过获取数据清理时间,数据清理时间为历史接收到数据清理请求时记录的时间,数据清理请求用于清理分布式数据库中满足清理条件的数据;进而仅获取不满足清理条件的数据,以及满足清理条件但数据存储时间晚于数据清理时间的数据,合并获取到的数据;解决了现有技术中数据清理的性能低下以及可能会影响服务性能的问题,达到了可以提高数据清理的性能的效果。
可选地,所述分布式数据库包括n个数据文件,n为大于等于2的整数,所述清理条件包括清理全表的数据;
所述获取单元710,还用于:
对于所述n个文件中的每个文件,获取所述文件中的各条数据所对应的最大时间戳以及最小时间戳;
若所述最大时间戳早于所述数据清理时间,则跳过所述文件;
若所述最大时间戳晚于所述数据清理时间且所述最小时间戳早于所述数据清理时间,则遍历所述文件中的各条数据,读取时间戳晚于所述数据清理时间的数据;
若所述最小时间戳晚于所述数据清理时间,则读取所述文件中的各条数据。
可选地,所述装置还包括:
接收单元,用于在所述获取单元获取数据清理时间之前,接收所述数据清理请求;
记录单元,用于在所述全表所对应的属性描述文件中,将接收到所述数据清理请求的时间记录为所述数据清理时间;
所述获取单元710,还用于:
从所述属性描述文件中读取所述数据清理时间。
可选地,所述分布式数据库包括n个数据文件,n为大于等于2的整数,所述清理条件包括清理全表中预设标签的数据;
所述获取单元710,还用于:
对于所述n个文件中的每个文件,获取所述文件中的各条数据所对应的最大时间戳以及最小时间戳;
若所述最大时间戳早于所述数据清理时间,则读取所述文件中除所述预设标签之外的其他标签的数据;
若所述最大时间戳晚于所述数据清理时间且所述最小时间戳早于所述数据清理时间,则遍历所述文件中的各条数据,读取时间戳早于所述数据清理时间的各条数据中除所述预设标签之外的其他标签的数据,且读取时间戳晚于所述数据清理时间的数据;
若所述最小时间戳晚于所述数据清理时间,则读取所述文件中的各条数据。
可选地,所述装置还包括:
接收单元,用于在所述获取单元获取所述数据清理时间之前,接收所述数据清理请求,所述数据清理请求用于请求清理预设标签的数据;
记录单元,用于在所述预设标签所对应的属性描述文件中,将接收到所述数据清理请求的时间记录为所述数据清理时间;
所述获取单元710,还用于从所述属性描述文件中读取所述数据清理时间。
可选地,所述获取单元710,还用于:
接收数据获取请求;
在接收到所述数据获取请求之后,获取所述数据清理时间。
可选地,所述合并单元720,还用于:
在满足数据合并条件时,在所述分布式数据库中合并获取到的所述数据;所述数据合并条件包括:获取到的所述数据所属的文件的总个数达到预设个数,或者,接收到数据合并请求。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
本领域普通技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。