一种数据处理方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种数据处理方法及装置。
背景技术
日志结构合并树(LSM Tree,Log-structured merge-tree)是一种广泛应用于数据存储领域的结构。LSM Tree针对随机I/O对持久化存储的性能影响问题,做了如下设计:
1.数据分层放置:数据在最初时写入的是存储系统(以LSM Tree结构存储数据的系统)中的内存空间,再从上到下逐渐写入其他层次的硬盘驱动器(HDD,Hard Disk Drive)或固态硬盘(SSD,Solid State Drive)等持久化存储空间中。
2.数据异地更新,将key-value结构的数据以log的方式写入。
3.系统的后台进程不断地将数据从高层到低层(即从level0到level N)合并(merge),将键(key)值相同的数据中的较旧的版本删除,保留排序的新版本。数据随着merge的进行,数据不断由高层存储空间向低层存储空间移动。
在现有LSM Tree的存储系统中,为了给新写入的数据腾出存储空间,会经常执行compact(即数据合并)机制,比较不同层次的存储空间,将key值相同的数据中的旧数据删除,并将key值相同的新数据移至下一层的存储空间(如,若新数据原本在level 1,compact过后转移至level 2)。
但在实际应用中,存在一些会被经常使用到的数据(称为热数据),这些热数据在进行compact时可能会被移动到较低层的存储空间中,从而导致这些热数据的读取变得较为缓慢,进而影响到系统的整体性能。
发明内容
本发明实施例提供了一种数据处理方法及装置,用于对热数据进行热度统计,并根据热度统计的接管对数据进行重分布。
本发明实施例第一方面提供的数据处理方法,应用于按照日志结构合并树LSMTree结构存储数据的存储系统中,所述方法包括:
在与所述LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据,所述第一数据的键key值为第一key值;
在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据,其中,在所述LSM Tree结构中,所述第二目标层的层级低于所述第一目标层的层级,所述第一目标层对应的存储空间的访问速度不低于所述第二目标层对应的存储空间的访问速度;
确定所述第一数据为最近接收的热数据;
从所述第二目标层对应的存储空间中删除所述第二数据;
将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中;
将所述第一数据重新写入所述存储系统的内存空间。
结合第一方面,在第一种可能的实现方式中,所述确定所述第一数据为最近接收的热数据包括:
在哈希链表查找所述第一key值,所述哈希链表用于根据接收的目标数据记录并维护所述第一key值的热度值,所述目标数据包括key值为所述第一key值的数据;
若在所述哈希链表中所述第一key值对应的序列号与所述第一数据的序列号相等,则确定所述第一数据最近接收的热数据,其中,所述哈希链表中所述第一key值对应的序列号为最近接收的具有第一key值的数据的序列号。
结合第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述确定所述第一数据为最近接收的热数据之前,还包括:
通过为所述存储系统建立的数据过滤器确定所述目标数据为热数据,其中,所述目标数据的访问热度达到预设的热度阈值;将所述第一key值记录在所述哈希链表中,所述哈希链表中包括第一key值、序列号以及热度值,所述热度值用于记录所述第一key值的访问热度;
根据所述目标数据的访问记录维护所述哈希链表中第一key值的热度值以及序列号。
结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,
所述访问记录包括:读取记录或写入记录;
所述根据所述目标数据的访问记录维护所述哈希链表中第一key值的热度值及序列号,包括:
若所述存储系统中产生一次所述目标数据的访问记录,则将所述哈希链表中第一key值的热度值加一;
若所述存储系统中产生一次所述目标数据的写入记录,则更新所述哈希链表中第一key值的序列号。
结合第一方面第三种可能的实现方式,在第四种可能的实现方式中,所述根据所述目标数据的访问记录维护哈希链表中第一key值的热度值还包括:
每隔单位时间,将所述目标数据的热度值减一;
当所述目标数据的热度值小于预设阈值时,在所述哈希链表中删除与所述第一key值相关的信息。
结合第一方面或第一方面得第一至四任一种可能的实现方式,在第五种可能的实现方式中,所述将所述第一数据重新写入所述存储系统的内存空间包括:
当所述第一目标层的层级低于level N时,将所述第一数据重新写入所述存储系统的内存空间,所述N为不小于4的整数。
本发明实施例第二方面提供的数据处理装置,应用于按照日志结构合并树LSMTree结构存储数据的存储系统中,所述方法包括:
键值确定单元,用于在与所述LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据,所述第一数据的键key值为第一key值;
查找单元,用于在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据,其中,在所述LSM Tree结构中,所述第二目标层的层级低于所述第一目标层的层级,所述第一目标层对应的存储空间的访问速度不低于所述第二目标层对应的存储空间的访问速度;
热数据确定单元,用于确定所述第一数据为最近接收的热数据;
删除单元,用于从所述第二目标层对应的存储空间中删除所述第二数据;
迁移单元,用于将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中;
重分布单元,用于将所述第一数据重新写入所述存储系统的内存空间。
结合第二方面,在第一种可能的实现方式中,所述热数据确定单元具体用于:
在哈希链表查找所述第一key值,所述哈希链表用于根据接收的目标数据记录并维护所述第一key值的热度值,所述目标数据包括key值为所述第一key值的数据;
若在所述哈希链表中所述第一key值对应的序列号与所述第一数据的序列号相等,则确定所述第一数据最近接收的热数据,其中,所述哈希链表中所述第一key值对应的序列号为最近接收的具有第一key值的数据的序列号。
结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括:
热数据筛选单元,用于通过为所述存储系统建立的数据过滤器确定所述目标数据为热数据,其中,所述目标数据的访问热度达到预设的热度阈值;将所述第一key值记录在所述哈希链表中,所述哈希链表中包括第一key值、序列号以及热度值,所述热度值用于记录所述第一key值的访问热度;
维护单元,用于根据所述目标数据的访问记录维护所述哈希链表中所述第一key值的热度值以及序列号。
结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,
所述维护单元具体用于:
若所述存储系统中产生一次所述目标数据的访问记录,则将所述哈希链表中第一key值的热度值加一;所述访问记录包括:读取记录或写入记录;
若所述存储系统中产生一次所述目标数据的写入记录,则更新所述哈希链表中第一key值的序列号。
结合第二方面第三种可能的实现方式,在第四种可能的实现方式中,所述根据所述目标数据的访问记录维护哈希链表中第一key值的热度值还包括:
每隔单位时间,将所述目标数据的热度值减一;
当所述目标数据的热度值小于预设阈值时,在所述哈希链表中删除与所述第一key值相关的信息。
结合第二方面或第一方面得第一至四任一种可能的实现方式,在第五种可能的实现方式中,所述重分布单元具体用于:
当所述第一目标层的层级低于level N时,将所述第一数据重新写入所述存储系统的内存空间,所述N为不小于4的整数。
从以上技术方案可以看出,本发明实施例具有以下优点:
在本发明实施例中,提供了热数据的确定方法,当在LSM Tree的存储空间中进行第一数据的数据合并时,若确定所述第一数据为最近接收的热数据,则将所述第一数据重新写入所述存储系统的内存空间,使得使用频率高的热数据的访问速度加快,从而提升了系统性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中存储系统的一个架构示意图;
图2是本发明实施例中数据处理方法的一个流程示意图;
图3是本发明实施例中数据处理方法的另一个流程示意图;
图4是本发明实施例中数据处理方法的另一个流程示意图;
图5是本发明实施例中数据维护方法的一个处理示意图;
图6是本发明实施例中数据处理装置的一个结构示意图;
图7是本发明实施例中基于数据处理方法的计算机的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例中的数据处理方法都是应用于按照LSM Tree结构存储数据的存储系统中。
在LSM Tree的存储系统中,数据的存储格式为key-value结构,即LSM Tree中存储的数据都包含有key值和value两种参数,value为数据的数据值,key值为数据的索引参数。
LSM Tree的存储结构如图1所示,当key-value数据写入时,都是先写入内存空间,再写入最高层(即,level 0)的持久化存储空间(如,HDD或SSD),再逐渐往较低层次(例如,level 1)的持久化存储空间写入,故存储空间的层次越高,数据就越新;在数据读取时,也是高层次的存储空间往低层次的存储空间找,一层找不到再依次到下一层逐层查找,因此,存储在越高层次的存储空间越快能被读取到。并且,LSM Tree中的数据采用分层存储的方式处理,key值相同的数据可以存储在不同层的存储空间中,在key值相同的数据中,存储在较高层的数据相对于较低层的数据为新数据,存储在较低层的数据相对于较高层的数据为旧数据。
为了给新写入的数据腾出存储空间,当内存空间或高层存储空间中的数据超过一定阈值时,就会触发LSM Tree中的compact机制,compact的流程为:比较不同层次的存储空间,将key值相同的数据中的旧数据删除,并将key值相同的新数据移至低一层的存储空间(如,若新数据原本在level 1,compact过后转移至level 2)。
在实际应用中,存在一些会被经常使用到的数据(称为热数据),这些热数据在进行compact时可能会被移动到较低层的存储空间中,从而导致这些热数据的读取变得较为缓慢,本发明实施例中的数据处理方法为解决上述问题提供了相应的方案,请参阅图2,本发明实施例中数据处理方法的一个实施例包括:
201、在LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据;
数据处理装置在LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据,所述第一数据的key值为第一key值,具体的,所述第一目标层为LSM Tree中当前正在进行数据合并的目标层,所述第一数据为所述第一目标层中待合并数据。
当内存空间或上层存储空间中的数据超过一定阈值时,就会触发LSM Tree中的数据合并机制,在进行数据合并时,数据处理装置会先确定当前待合并的数据(即在第一目标层对应的存储空间中确定待合并的第一数据),然后再自上往下逐层的对各层的各个数据进行遍历,查找与当待合并的第一数据,有相同key值的第二数据进行合并。
在本发明实施例中,所述数据处理装置为具备本发明实施例中数据处理功能的设备;具体可以为独单的物理设备,包括多个物理模块;也可以为加载在计算机上的软件程序,或一个软件中的功能模块,或单独软件的形式或以插件的形式存在。
202、在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据;
数据处理装置在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据,其中在所述LSM Tree结构中,所述第二目标层的层级低于所述第一目标层的层级,所述第一目标层对应的存储空间的访问速度不低于所述第二目标层对应的存储空间的访问速度。例如,第一目标层可以是Level 3,第二目标层可以是Level 4。需要说明的是,在本发明实施例的LSM Tree结构中,层级越高,该层级对应的存储空间的访问速度越快。例如,Level 0的层级高于Level 1,Level 0对应的存储空间的访问速度比Level1对应的存储空间的访问速度快。
所述第二数据为所述第二目标层中的数据;需要说明的是,所述“第一”和“第二”仅是用于区分两个不同层次的存储空间,或两个具有不同value的数据,不代表具体实现中的名称或物理层次。
203、确定所述第一数据为最近接收的热数据;
数据处理装置确定所述第一数据为最近接收的热数据。具体的,在本发明实施例中,可以使用数据过滤器根据热度对所述存储系统中各个数据进行筛选,得到热度值达到相应热度阈值的数据。
具体的,所述热度可以表现为数据的访问次数,所述热度值为根据所述数据的访问次数而统计得到的数值;所述热度阈值可以为技术人员根据经验和实际需求确定的一个数值。
具体的,所述数据的访问次数可以为数据的写入次数,也可以为数据的读取次数;进一步的,所述数据的访问次数还可以同时包括数据的写入次数和读取次数。
示例性的,所述数据过滤器具体可以为:多组布隆过滤器(Multi Bloom Filter)。
204、从所述第二目标层对应的存储空间中删除所述第二数据;
数据处理装置从所述第二目标层对应的存储空间中删除所述第二数据,节省存储系统中的存储空间。
205、将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中;
数据处理装置将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中,为新写入所述存储系统中的数据腾出上层的存储空间。
在本发明实施例中步骤204和步骤205为LSM Tree的compact流程中,将具有相同key值的两个数据进行合并的步骤。
206、将所述第一数据重新写入所述存储系统的内存空间。
数据处理装置将所述第一数据重新写入所述存储系统的内存空间。
当确认所述第一数据确定为热数据之后,说明所述第一数据会被经常使用到,若被LSM Tree的数据合并机制写入到较低层次的存储空间中,读取速度将受到很大影响,因此,在本发明实施例中,将所述第一数据重新写入所述存储系统的内存空间,以便于热数据能被快速读取到。
在本发明实施例中,提供了热数据的确定方法,当在LSM Tree的存储空间中进行第一数据的数据合并时,若确定所述第一数据为最近接收的热数据,则将所述第一数据重新写入所述存储系统的内存空间,使得使用频率高的热数据访问速度加快,从而提升了系统性能。
下面对本发明实施例中数据处理方法进行详细描述,请参阅图3,本发明实施例中数据处理方法的另一个实施例包括:
301、在LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据;
数据处理装置在LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据,具体的,所述第一目标层为LSM Tree中当前正在进行数据合并的目标层,所述第一数据为所述第一目标层中待合并数据。
302、在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据;
数据处理装置在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据,其中在所述LSM Tree结构中,所述第二目标层的层级低于所述第一目标层的层级,所述第一目标层对应的存储空间的访问速度不低于所述第二目标层对应的存储空间的访问速度。
所述第二数据为所述第二目标层中的数据;需要说明的是,所述“第一”和“第二”仅是用于区分两个不同层次的存储空间,或两个具有不同value的数据,不代表具体实现中的名称或物理层次。
303、在哈希链表查找所述第一key值;
数据处理装置在哈希链表查找所述第一key值,所述哈希链表用于根据接收的目标数据记录并维护所述第一key值的热度值,所述目标数据包括key值为所述第一key值的数据。
具体的,若在哈希链表查找所述第一key值,则确定key值为所述第一key值的数据为热数据,继续执行步骤304对所述第一数据的写入所述存储系统的次序进行判断。
示例性的,在实际应用中,数据处理装置会建立数据过滤器,用于对key值相同的数据进行热度统计并筛选,当key值相同的数据的热度值达到预设的热度阈值时,就在所述哈希链表中记录该数据对应的key值、序列号以及热度值。示例性的,所述数据过滤器具体可以为:多组布隆过滤器。在本发明实施例中,所述第一key值对应的序列号为最近接收的具有第一key值的数据的序列号。
在本发明实施例中,第一数据的key值为第一key值,包括key值为所述第一key值的数据为目标数据;在所述数据过滤器筛选出所述目标数据时,所述哈希链表则接收所述数据过滤器选出的所述目标数据的记录,并维护所述第一key值的热度值。
具体的,所述热度值为根据所述数据的访问次数而统计得到的数值;所述热度阈值可以为技术人员根据经验和实际需求确定的一个数值。所述数据的访问次数可以为数据的写入次数,也可以为数据的读取次数;进一步的,所述数据的访问次数还可以同时包括数据的写入次数和读取次数。
示例性的,如图5所示,所述哈希链表中可以包括有多组元素,其中,每组元素中记录有一个key值,该key值对应的序列号,以及该key值对应的热度值计数器。所述序列号用于表示一个key值对应的数据在所述存储系统的写入顺序。
304、判断序列号是否相同;
数据处理装置在所述哈希链表中所述第一key值对应的序列号与所述第一数据的序列号是否相等,若是,则确定所述第一数据最近接收的热数据,执行步骤305;若否,则执行步骤308,确定所述第一数据不是最近接收的热数据。其中,所述哈希链表中所述第一key值对应的序列号为最近接收的具有第一key值的数据的序列号。
在本发明实施例中,由于哈希链表维护的都是最新写入的热数据,因此,若第一数据的序列号与哈希链表热数据对应的序列号不相同,则说明所述第一数据为旧数据,可以不执行重新写入内存空间的步骤。
305、从所述第二目标层对应的存储空间中删除所述第二数据;
数据处理装置从所述第二目标层对应的存储空间中删除所述第二数据,节省存储系统中的存储空间。
306、将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中;
数据处理装置将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中,为新写入所述存储系统中的数据腾出上层的存储空间。
在本发明实施例中步骤305和步骤306为LSM Tree的compact流程中,将具有相同key值的两个数据进行合并的步骤。
307、将所述第一数据重新写入所述存储系统的内存空间;
数据处理装置将所述第一数据重新写入所述存储系统的内存空间。
当确认所述第一数据确定为热数据之后,说明所述第一数据会被经常使用到,若被LSM Tree的数据合并机制写入到较低层次的存储空间中,读取速度将受到很大影响,因此,在本发明实施例中,将所述第一数据重新写入所述存储系统的内存空间,以便于热数据能被快速读取到。
可选的,在实际应用中,在由于数据在较高层次的读取速度并不慢,因此,可以当所述第一目标层的层级低于level N时,才执行将所述第一数据重新写入所述存储系统的内存空间的步骤,所述N为不小于4的整数。当所述第一目标层的层级高于level N时,则不执行将所述第一数据重新写入所述存储系统的内存空间的步骤。具体的,所述N可以由技术人员根据实际需求设定。
308、确定所述第一数据不是最近接收的热数据。
数据处理装置确定所述第一数据不是最近接收的热数据,可以不执行第一数据重新写入内存空间的步骤。
在本发明实施例中,设置了第一数据是否热数据的具体判定方法,当确定第一数据不是最近接收的热数据时,则不执行将第一数据重新写入内存空间的步骤,在考虑到热数据重新写入的同时,也兼顾了效率原则,不对非最新数据进行处理。
在实际应用中,由于数据过滤器受到内存大小的限制,只能筛选出热度大于某阈值的key,在最近访问次数超过上限后,无法继续累积统计其访问次数,因此,本发明实施例提出了使用哈希链表继续进行热度统计的方案,下面对本发明实施例中热度维护的具体方法进行描述,请参阅图4,本发明实施例中数据处理方法的另一个实施例包括:
401、通过所述数据过滤器筛选出热度达到热度阈值的热数据;
数据处理装置建立数据过滤器,并通过所述数据过滤器筛选出热度达到热度阈值的数据。具体的,所述热度值为根据所述数据的访问次数而统计得到的数值;所述热度阈值可以为技术人员根据经验和实际需求确定的一个数值。所述数据的访问次数可以为数据的写入次数,也可以为数据的读取次数;进一步的,所述数据的访问次数还可以同时包括数据的写入次数和读取次数。
402、在哈希链表中记录所述数据过滤器筛选出的数据;
在本发明实施例中,第一数据的key值为第一key值,包括key值为所述第一key值的数据为目标数据;数据处理装置通过为所述存储系统建立的数据过滤器确定所述目标数据为热数据,其中,所述目标数据的访问热度达到预设的热度阈值;将所述第一key值记录在所述哈希链表中,所述哈希链表中包括第一key值、序列号以及热度值,所述热度值用于记录所述第一key值的访问热度;
在所述数据过滤器筛选出所述目标数据时,所述哈希链表则接收所述数据过滤器选出的所述目标数据的记录,并维护所述第一key值的热度值。
示例性的,所述哈希链表可以为动态扩展的哈希链表(Internal Key List),用以继续统计由所述数据过滤器筛选出的热数据的热度值。
如图5所示,数据过滤器对数据的访问操作进行统计,当key值相同的数据的热度值达到所述数据过滤器中设置的热度阈值时,就会在所述哈希链表中建立一组元素,其中,每组元素中记录有一个key值,该key值对应的序列号,以及该key值对应的热度值计数器。所述哈希链表中可以包括有多组元素。所述序列号用于表示一个key值对应的数据在所述存储系统的写入顺序,所述热度值计数器用于统计所述key值对应的数据的热度值。
可以理解的是,本发明实施例的仅对第一key值以及目标数据在数据过滤器和哈希链表中的处理进行描述,在实际应用中数据过滤器和哈希链表还可以同时对其它key值及其相应的数据进行处理,此处不再赘述。
403、根据所述目标数据的访问记录维护所述哈希链表中第一key值的热度值以及序列号;
数据处理装置根据所述目标数据的访问记录维护所述哈希链表中第一key值的热度值以及序列号,具体的:
若所述存储系统中产生一次所述目标数据的访问记录,则将所述哈希链表中第一key值的热度值加一;
若所述存储系统中产生一次所述目标数据的写入记录,则更新所述哈希链表中第一key值的序列号。
进一步的,每隔单位时间,将所述目标数据的热度值减一;
当所述目标数据的热度值小于预设阈值时,在所述哈希链表中删除与所述第一key值相关的信息。可选的,停止维护所述热数据的热度值计数器的预设阈值可以设置为零。
可选的,在对哈希链表所述目标数据进行维护的过程中,若在所述存储系统中再产生一次所述目标数据的访问记录,则在一段预置时长内,可以对所述目标数据不执行所述将所述热度值计数器减一的步骤。具体的,对目标数据的维护方法可以根据实际需求而定,此处不作限定。
示例性的,在确定某数据为热数据(即数据过滤器筛选出的热度达到热度阈值的数据)之后,所述目标数据每被被访问到一次,则在热度维护的过程中就会相应的增加一次该热数据的热度值;进一步的,由于热度会随时间的流逝而冷却,因此,在时间的维度上,该目标数据的热度值也会根据单位时间递减;若目标数据的热度值被减为零,则表示所述目标数据长时间没有被访问(即已经不是热数据了),数据处理装置可以停止对所述目标数据的维护(即在热度维护记录中删除所述热数据)。具体的,所述热度维护的方法可以通过特定函数的实现。
具体的,本发明实施例中所指的目标数据为热度达到某一个热度阈值的数据;在实际应用中,可以设置两个热度阈值,第一热度阈值用于数据过滤器筛选热数据,第二热度阈值用于在目标数据进行维护时判断是否仍为热数据。示例性的,若第一热度阈值为3,则在对所述目标数据进行热度维护时,所述目标数据的初始值为3,第二热度阈值若设为1,则当所述热数据的热度值小于1时,则当前的目标数据不再为热数据。
可以理解的是,对热数据的判定,以及热度阈值数量的设定,可以根据实际应用中对热数据的定义而确定,以上例子不应理解为对本发明实施例中热数据以及热度阈值的限定。
404、在LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据;
数据处理装置在LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据,具体的,所述第一目标层为LSM Tree中当前正在进行数据合并的目标层,所述第一数据为所述第一目标层中待合并数据。
405、在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据;
数据处理装置在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据,其中在所述LSM Tree结构中,所述第二目标层的层级低于所述第一目标层的层级,所述第一目标层对应的存储空间的访问速度不低于所述第二目标层对应的存储空间的访问速度。所述第二数据为所述第二目标层中的数据;需要说明的是,所述“第一”和“第二”仅是用于区分两个不同层次的存储空间,或两个具有不同value的数据,不代表具体实现中的名称或物理层次。
由于数据过滤器和哈希链表实时的对数据进行筛选和维护,因此,在本发明实施例中,步骤401至403,与步骤404至步骤405之间没有严格的时序关系,即步骤401至403可以发生在步骤404至步骤405之前,也可以发生在步骤404至步骤405之后,也可以同步执行,对实现本发明实施例中的方法不产生本质影响。
406、在哈希链表查找所述第一key值;
数据处理装置在哈希链表查找所述第一key值,所述哈希链表用于根据接收的目标数据记录并维护所述第一key值的热度值,所述目标数据包括key值为所述第一key值的数据。
407、判断序列号是否相同;
数据处理装置在所述哈希链表中所述第一key值对应的序列号与所述第一数据的序列号是否相等,若是,则确定所述第一数据最近接收的热数据,执行步骤408;若否,则执行步骤411,确定所述第一数据不是最近接收的热数据。其中,所述哈希链表中所述第一key值对应的序列号为最近接收的具有第一key值的数据的序列号。
在本发明实施例中,由于哈希链表维护的都是最新写入的热数据,因此,若第一数据的序列号与哈希链表热数据对应的序列号不相同,则说明所述第一数据为旧数据,可以不执行重新写入内存空间的步骤。
408、从所述第二目标层对应的存储空间中删除所述第二数据;
数据处理装置从所述第二目标层对应的存储空间中删除所述第二数据,节省存储系统中的存储空间。
409、将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中;
数据处理装置将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中,为新写入所述存储系统中的数据腾出上层的存储空间。
410、将所述第一数据重新写入所述存储系统的内存空间;
数据处理装置将所述第一数据重新写入所述存储系统的内存空间。
当确认所述第一数据确定为热数据之后,说明所述第一数据会被经常使用到,若被LSM Tree的数据合并机制写入到较低层次的存储空间中,读取速度将受到很大影响,因此,在本发明实施例中,将所述第一数据重新写入所述存储系统的内存空间,以便于热数据能被快速读取到。
可选的,在实际应用中,在由于数据在较高层次的读取速度并不慢,因此,可以当所述第一目标层的层级低于level N时,才执行将所述第一数据重新写入所述存储系统的内存空间的步骤,所述N为不小于4的整数。当所述第一目标层的层级高于level N时,则不执行将所述第一数据重新写入所述存储系统的内存空间的步骤。具体的,所述N可以由技术人员根据实际需求设定。
411、确定所述第一数据不是最近接收的热数据。
数据处理装置确定所述第一数据不是最近接收的热数据,可以不执行第一数据重新写入内存空间的步骤。
在本发明实施例中,提供了详细的热数据的维护方法,使用哈希链表继续对数据过滤器筛选出来的热数据继续进行热度统计,考虑了时间维度对热数据的影响,使得热数据的确定更加精确。
下面对实现本发明实施例中的数据处理方法的数据处理装置进行描述,请参阅图6,本发明实施例中数据处理装置的一个实施例包括:
键值确定单元601,用于在与所述LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据,所述第一数据的键key值为第一key值;
查找单元602,用于在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据,其中,在所述LSM Tree结构中,所述第二目标层的层级低于所述第一目标层的层级,所述第一目标层对应的存储空间的访问速度不低于所述第二目标层对应的存储空间的访问速度;
热数据确定单元603,用于确定所述第一数据为最近接收的热数据;
删除单元604,用于从所述第二目标层对应的存储空间中删除所述第二数据;
迁移单元605,用于将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中;
重分布单元606,用于将所述第一数据重新写入所述存储系统的内存空间。
具体的,所述热数据确定单元603具体用于:
在哈希链表查找所述第一key值,所述哈希链表用于根据接收的目标数据记录并维护所述第一key值的热度值,所述目标数据包括key值为所述第一key值的数据;
若在所述哈希链表中所述第一key值对应的序列号与所述第一数据的序列号相等,则确定所述第一数据最近接收的热数据,其中,所述哈希链表中所述第一key值对应的序列号为最近接收的具有第一key值的数据的序列号。
进一步的,所述装置还包括:
热数据筛选单元607,用于通过为所述存储系统建立的数据过滤器确定所述目标数据为热数据,其中,所述目标数据的访问热度达到预设的热度阈值;将所述第一key值记录在所述哈希链表中,所述哈希链表中包括第一key值、序列号以及热度值,所述热度值用于记录所述第一key值的访问热度;
维护单元608,用于根据所述目标数据的访问记录维护所述哈希链表中所述第一key值的热度值以及序列号。
具体的额,所述维护单元608具体用于:
若所述存储系统中产生一次所述目标数据的访问记录,则将所述哈希链表中第一key值的热度值加一;所述访问记录包括:读取记录或写入记录;
若所述存储系统中产生一次所述目标数据的写入记录,则更新所述哈希链表中第一key值的序列号。
每隔单位时间,将所述目标数据的热度值减一;
当所述目标数据的热度值小于预设阈值时,在所述哈希链表中删除与所述第一key值相关的信息。
具体的,所述重分布单元606具体用于:
当所述第一目标层的层级低于level N时,将所述第一数据重新写入所述存储系统的内存空间,所述N为不小于4的整数。
下面对上述各个单元的具体操作过程进行描述:
首先,键值确定单元601在LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据,具体的,所述第一目标层为LSM Tree中当前正在进行数据合并的目标层,所述第一数据为所述第一目标层中待合并数据。
再由查找单元602在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据,其中在所述LSM Tree结构中,所述第二目标层的层级低于所述第一目标层的层级,所述第一目标层对应的存储空间的访问速度不低于所述第二目标层对应的存储空间的访问速度。
所述第二数据为所述第二目标层中的数据;需要说明的是,所述“第一”和“第二”仅是用于区分两个不同层次的存储空间,或两个具有不同value的数据,不代表具体实现中的名称或物理层次。
其中,目标数据筛选和维护的过程包括:
热数据筛选单元607筛选出热度达到热度阈值的数据。具体的,所述热度值为根据所述数据的访问次数而统计得到的数值;所述热度阈值可以为技术人员根据经验和实际需求确定的一个数值。所述数据的访问次数可以为数据的写入次数,也可以为数据的读取次数;进一步的,所述数据的访问次数还可以同时包括数据的写入次数和读取次数。
维护单元608在哈希链表中记录所述数据过滤器筛选出的数据,进一步的,根据所述目标数据的访问记录维护所述哈希链表中第一key值的热度值以及序列号。
在本发明实施例中,第一数据的key值为第一key值,包括key值为所述第一key值的数据为目标数据;数据处理装置通过为所述存储系统建立的数据过滤器确定所述目标数据为热数据,其中,所述目标数据的访问热度达到预设的热度阈值;将所述第一key值记录在所述哈希链表中,所述哈希链表中包括第一key值、序列号以及热度值,所述热度值用于记录所述第一key值的访问热度;
在所述数据过滤器筛选出所述目标数据时,所述哈希链表则接收所述数据过滤器选出的所述目标数据的记录,并维护所述第一key值的热度值。
示例性的,所述哈希链表可以为动态扩展的哈希链表(Internal Key List),用以继续统计由所述数据过滤器筛选出的热数据的热度值。
如图5所示,数据过滤器对数据的访问操作进行统计,当key值相同的数据的热度值达到所述数据过滤器中设置的热度阈值时,就会在所述哈希链表中建立一组元素,其中,每组元素中记录有一个key值,该key值对应的序列号,以及该key值对应的热度值计数器。所述哈希链表中可以包括有多组元素。所述序列号用于表示一个key值对应的数据在所述存储系统的写入顺序,所述热度值计数器用于统计所述key值对应的数据的热度值。
可以理解的是,本发明实施例的仅对第一key值以及目标数据在数据过滤器和哈希链表中的处理进行描述,在实际应用中数据过滤器和哈希链表还可以同时对其它key值及其相应的数据进行处理,此处不再赘述。
若所述存储系统中产生一次所述目标数据的访问记录,则将所述哈希链表中第一key值的热度值加一;
若所述存储系统中产生一次所述目标数据的写入记录,则更新所述哈希链表中第一key值的序列号。
进一步的,每隔单位时间,将所述目标数据的热度值减一;
当所述目标数据的热度值小于预设阈值时,在所述哈希链表中删除与所述第一key值相关的信息。可选的,停止维护所述热数据的热度值计数器的预设阈值可以设置为零。
可选的,在对哈希链表所述目标数据进行维护的过程中,若在所述存储系统中再产生一次所述目标数据的访问记录,则在一段预置时长内,可以对所述目标数据不执行所述将所述热度值计数器减一的步骤。具体的,对目标数据的维护方法可以根据实际需求而定,此处不作限定。
示例性的,在确定某数据为热数据(即数据过滤器筛选出的热度达到热度阈值的数据)之后,所述目标数据每被被访问到一次,则在热度维护的过程中就会相应的增加一次该热数据的热度值;进一步的,由于热度会随时间的流逝而冷却,因此,在时间的维度上,该目标数据的热度值也会根据单位时间递减;若目标数据的热度值被减为零,则表示所述目标数据长时间没有被访问(即已经不是热数据了),数据处理装置可以停止对所述目标数据的维护(即在热度维护记录中删除所述热数据)。具体的,所述热度维护的方法可以通过特定函数的实现。
具体的,本发明实施例中所指的目标数据为热度达到某一个热度阈值的数据;在实际应用中,可以设置两个热度阈值,第一热度阈值用于数据过滤器筛选热数据,第二热度阈值用于在目标数据进行维护时判断是否仍为热数据。示例性的,若第一热度阈值为3,则在对所述目标数据进行热度维护时,所述目标数据的初始值为3,第二热度阈值若设为1,则当所述热数据的热度值小于1时,则当前的目标数据不再为热数据。
可以理解的是,对热数据的判定,以及热度阈值数量的设定,可以根据实际应用中对热数据的定义而确定,以上例子不应理解为对本发明实施例中热数据以及热度阈值的限定。
热数据确定单元603确定所述第一数据为最近接收的热数据,具体的为:
在哈希链表查找所述第一key值,所述哈希链表用于根据接收的目标数据记录并维护所述第一key值的热度值,所述目标数据包括key值为所述第一key值的数据。
在所述哈希链表中所述第一key值对应的序列号与所述第一数据的序列号是否相等,若是,则确定所述第一数据最近接收的热数据;若否,则确定所述第一数据不是最近接收的热数据。其中,所述哈希链表中所述第一key值对应的序列号为最近接收的具有第一key值的数据的序列号。
在执行数据合并时,
删除单元604从所述第二目标层对应的存储空间中删除所述第二数据,节省存储系统中的存储空间。
迁移单元605将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中,为新写入所述存储系统中的数据腾出上层的存储空间。
重分布单元606将所述第一数据重新写入所述存储系统的内存空间。
当确认所述第一数据确定为热数据之后,说明所述第一数据会被经常使用到,若被LSM Tree的数据合并机制写入到较低层次的存储空间中,读取速度将受到很大影响,因此,在本发明实施例中,将所述第一数据重新写入所述存储系统的内存空间,以便于热数据能被快速读取到。
可选的,在实际应用中,在由于数据在较高层次的读取速度并不慢,因此,可以当所述第一目标层的层级低于level N时,才执行将所述第一数据重新写入所述存储系统的内存空间的步骤,所述N为不小于4的整数。当所述第一目标层的层级高于level N时,则不执行将所述第一数据重新写入所述存储系统的内存空间的步骤。具体的,所述N可以由技术人员根据实际需求设定。
下面对实现本发明实施例中数据处理方法的计算机装置进行描述:
处理器730控制业务调度的装置70的操作,处理器730还可以称为CPU(CentralProcessing Unit,中央处理单元)。存储器740可以包括只读存储器和随机存取存储器,并向处理器730提供指令和数据。存储器740的一部分还可以包括非易失性随机存取存储器(NVRAM)。具体的应用中,业务调度的装置70的各个组件通过总线系统750耦合在一起,其中总线系统750除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统750。
上述本发明实施例揭示的方法可以应用于处理器730中,或者由处理器730实现。处理器730可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器730中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器730可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器740,处理器730读取存储器740中的信息,结合其硬件完成上述方法的步骤。
具体的,所述处理器730用于在与所述LSM Tree的第一目标层对应的存储空间中确定待合并的第一数据,所述第一数据的键key值为第一key值;在与所述LSM Tree的第二目标层对应的存储空间中确定key值为所述第一key值的第二数据,其中,在所述LSM Tree结构中,所述第二目标层的层级低于所述第一目标层的层级,所述第一目标层对应的存储空间的访问速度不低于所述第二目标层对应的存储空间的访问速度;确定所述第一数据为最近接收的热数据;从所述第二目标层对应的存储空间中删除所述第二数据;将所述第一数据从所述第一目标层对应的存储空间迁移到所述第二目标层对应的存储空间中;将所述第一数据重新写入所述存储系统的内存空间。
进一步的,所述确定所述第一数据为最近接收的热数据包括:
在哈希链表查找所述第一key值,所述哈希链表用于根据接收的目标数据记录并维护所述第一key值的热度值,所述目标数据包括key值为所述第一key值的数据;
若在所述哈希链表中所述第一key值对应的序列号与所述第一数据的序列号相等,则确定所述第一数据最近接收的热数据,其中,所述哈希链表中所述第一key值对应的序列号为最近接收的具有第一key值的数据的序列号。
可选的,所述处理器730还用于通过为所述存储系统建立的数据过滤器确定所述目标数据为热数据,其中,所述目标数据的访问热度达到预设的热度阈值;将所述第一key值记录在所述哈希链表中,所述哈希链表中包括第一key值、序列号以及热度值,所述热度值用于记录所述第一key值的访问热度;根据所述目标数据的访问记录维护所述哈希链表中第一key值的热度值以及序列号。
所述访问记录包括:读取记录或写入记录;
所述根据所述目标数据的访问记录维护所述哈希链表中第一key值的热度值及序列号,包括:
若所述存储系统中产生一次所述目标数据的访问记录,则将所述哈希链表中第一key值的热度值加一;
若所述存储系统中产生一次所述目标数据的写入记录,则更新所述哈希链表中第一key值的序列号。
每隔单位时间,将所述目标数据的热度值减一;当所述目标数据的热度值小于预设阈值时,在所述哈希链表中删除与所述第一key值相关的信息。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。