CN111309732B - 数据处理方法、装置、介质和计算设备 - Google Patents
数据处理方法、装置、介质和计算设备 Download PDFInfo
- Publication number
- CN111309732B CN111309732B CN202010103379.4A CN202010103379A CN111309732B CN 111309732 B CN111309732 B CN 111309732B CN 202010103379 A CN202010103379 A CN 202010103379A CN 111309732 B CN111309732 B CN 111309732B
- Authority
- CN
- China
- Prior art keywords
- data
- storage area
- module
- client
- cold
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 40
- 238000012545 processing Methods 0.000 claims description 51
- 230000004044 response Effects 0.000 claims description 50
- 238000000034 method Methods 0.000 claims description 45
- 238000013508 migration Methods 0.000 claims description 22
- 230000005012 migration Effects 0.000 claims description 22
- 230000008569 process Effects 0.000 claims description 9
- 239000000725 suspension Substances 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 15
- 230000002688 persistence Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施方式提供了一种数据处理方法。该数据处理方法包括:获取多个历史访问请求,多个历史访问请求分别用于访问数据库中存储的数据,所述数据库包括第一存储区域和第二存储区域;获取第一数据集合中每项数据的数据量,其中,第一数据集合是第一存储区域存储的数据;基于多个历史访问请求和每项数据的数据量,确定第一数据集合是否包含冷数据;以及在确定第一数据集合包含冷数据的情况下,将冷数据迁移至第二存储区域;其中,第一存储区域的读写性能高于第二存储区域的读写性能。通过智能地判断数据的冷热程度,将冷热数据分离存储,从而在提高数据库的读写性能的同时降低运行成本。
Description
技术领域
本发明的实施方式涉及计算机技术领域,更具体地,本发明的实施方式涉及一种数据处理方法和一种数据处理装置、介质和计算设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着移动终端、云计算和物联网的普及,我们正进入一个数据飞速膨胀的时代。如何针对大量膨胀的数据,设计出更高性价比的存储和访问策略,是存储和数据领域的热点研究课题。根据数据的冷热程度,可以简单分为热数据和冷数据。
目前,已经出现一些将冷数据和热数据分离存储的技术方案,但是目前出现的相关技术方案往往是针对不同业务场景来区分冷数据和热数据而导致数据库的读写性能较低,并且运行成本较高。
发明内容
因此在现有技术中,无法实时地自动调整或智能识别冷数据和热数据这是非常令人烦恼的过程。
为此,非常需要一种改进的数据处理方法,以使电子设备能够智能识别冷数据或者热数据,从而智能地将冷热数据分离存储。
在本上下文中,本发明的实施方式期望提供一种数据处理方法和一种数据处理装置、介质和计算设备。
在本发明实施方式的第一方面中,提供了一种方法,包括:获取多个历史访问请求,多个历史访问请求分别用于访问数据库中存储的数据,数据库包括第一存储区域和第二存储区域;获取第一数据集合中每项数据的数据量,其中,第一数据集合是第一存储区域存储的数据;基于多个历史访问请求和每项数据的数据量,确定第一数据集合是否包含冷数据;以及在确定第一数据集合包含冷数据的情况下,将冷数据迁移至第二存储区域;其中,第一存储区域的读写性能高于第二存储区域的读写性能。
在本发明的一个实施例中,该基于多个历史访问请求和每项数据的数据量,确定第一数据集合是否包含冷数据包括:基于多个历史访问请求,确定第一数据集合中每项数据的访问频率;基于每项数据的访问频率和每项数据的数据量,对每项数据的冷热程度进行评分,并获得评分排序结果;以及根据评分排序结果确定冷数据。
在本发明的另一实施例中,该方法还包括:由主线程接收来自客户端的当前访问请求;在当前访问请求所请求访问的数据为冷数据的情况下,由主线程向异步线程发送根据当前访问请求生成的访问任务,以由异步线程根据访问任务,将冷数据从第二存储区域加载到第一存储区域;以及主线程响应于接收到来自异步线程的通知消息,生成并向客户端发送针对当前访问请求的响应结果,以及主线程根据响应结果,更新第一存储区域中存储的第一数据集合。
在本发明的又一个实施例中,该方法还包括:在当前访问请求所请求访问的数据为冷数据的情况下,主线程增加数据的值的引用计数;并且,将数据的键添加到任务列表以锁定当前访问请求的处理位序。
在本发明的再一个实施例中,该方法还包括:响应于接收到将主线程操作的数据释放的指令,减少针对数据的引用计数,在数据的引用计数减少为零的情况下,主线程释放操作的数据所占据的内存空间。
在本发明的再一个实施例中,该方法还包括:在当前访问请求所请求访问的数据的值为冷数据或者迁移数据的情况下,将发送当前访问请求的客户端添加至客户端列表中,其中,迁移数据为正在被异步线程从第一存储区域迁移至第二存储区域的数据;或者位于异步线程的待处理列表中,以等待被从第一存储区域迁移至第二存储区域的数据;在异步线程完成了将数据的值加载到第一存储区域的情况下,遍历客户端列表,以从客户端列表中查找出由于数据的值为冷数据或者迁移数据而被阻塞的客户端;向客户端发送数据的值被加载完成的消息,以便客户端从自身的等待列表中将数据的键删除,以及在客户端等待列表中的数据的键均被删除的情况下,向客户端发送响应结果,以响应当前访问请求。
在本发明的再一个实施例中,该方法还包括:响应于获取到指示创建文件快照的指令,停止异步线程的执行;基于异步线程已经处理完成的访问任务的任务结果,更新第一存储区域中存储的第一数据集合;以及同步创建第一存储区域中数据的文件快照和第二存储区域中数据的文件快照。
在本发明的再一个实施例中,指示创建文件快照的指令是根据另一数据库的同步请求而生成的;该方法还包括:向另一数据库发送述第一存储区域中数据的文件快照和第二存储区域中数据的文件快照,使得另一数据库同步第一存储区域的数据和第二存储区域的数据。
在本发明的再一个实施例中,该方法还包括:确定第二存储区域的存储空间是否小于第二预设值;以及在确定第二存储区域的存储空间小于第二预设值的情况下,根据预设规则对所述数据库中的数据进行处理或者禁止数据写入所述数据库。
在本发明实施方式的第二方面中,提供了一种数据处理装置,包括:第一获取模块,用于获取多个历史访问请求,多个历史访问请求分别用于访问数据库中存储的数据,数据库包括第一存储区域和第二存储区域;第二获取模块,用于获取第一数据集合中每项数据的数据量,其中,第一数据集合是第一存储区域存储的数据;第一确定模块,用于基于多个历史访问请求和每项数据的数据量,确定第一数据集合是否包含冷数据;以及迁移模块,用于在确定第一数据集合包含冷数据的情况下,将冷数据迁移至第二存储区域;其中,第一存储区域的读写性能高于第二存储区域的读写性能。
在本发明的另一实施例中,确定模块包括:第一确定子模块,用于基于多个历史访问请求,确定第一数据集合中每项数据的访问频率;评分子模块,用于基于每项数据的访问频率和每项数据的数据量,对每项数据的冷热程度进行评分,并获得评分排序结果;以及第二确定子模块,用于根据评分排序结果确定冷数据。
在本发明的又一实施例中,该装置还包括:接收模块,用于由主线程接收来自客户端的当前访问请求;第一发送模块,用于在当前访问请求所请求访问的数据为冷数据的情况下,由主线程向异步线程发送根据当前访问请求生成的访问任务,以由异步线程根据访问任务,将冷数据从第二存储区域加载到第一存储区域;以及响应模块,用于主线程响应于接收到来自异步线程的通知消息,生成并向客户端发送针对当前访问请求的响应结果,以及第一更新模块,用于主线程根据响应结果,更新第一存储区域中存储的第一数据集合。
在本发明的又一实施例中,该装置还包括:第一计数模块,用于在当前访问请求所请求访问的数据为冷数据的情况下,主线程增加数据的值的引用计数;并且第一添加模块,用于将数据的键添加到任务列表以锁定当前访问请求的处理位序。
在本发明的又一实施例中,该装置还包括:第二计数模块,用于响应于接收到将主线程操作的数据释放的指令,减少针对数据的引用计数;以及释放模块,用于在数据的引用计数减少为零的情况下,主线程释放操作的数据所占据的内存空间。
在本发明的又一实施例中,该装置还包括:第二添加模块,用于在当前访问请求所请求访问的数据的值为冷数据或者迁移数据的情况下,将当前访问请求的客户端添加至客户端列表中,其中,迁移数据为正在被异步线程从第一存储区域迁移至第二存储区域的数据;或者位于异步线程的待处理列表中,以等待被从第一存储区域迁移至第二存储区域的数据;查找模块,用于在异步线程完成了将数据的值加载到第一存储区域的情况下,遍历客户端列表,以从客户端列表中查找出由于数据的值为冷数据或者迁移数据而被阻塞的客户端;第二发送模块,用于向客户端发送数据的值被加载完成的消息,以便客户端从自身的等待列表中将键删除,以及第三发送模块,用于在客户端等待列表中的键均被删除的情况下,向客户端发送响应结果,以响应当前访问请求。
在本发明的又一实施例中,该装置还包括暂停模块,用于响应于获取到指示创建文件快照的指令,停止异步线程的执行;第二更新模块,用于基于异步线程已经处理完成的访问任务的任务结果,更新第一存储区域中存储的第一数据集合;以及创建模块,用于同步创建第一存储区域中数据的文件快照和第二存储区域中数据的文件快照。
在本发明的又一实施例中,指示创建文件快照的指令是根据另一数据库的同步请求而生成的,该装置还包括:同步模块,用于向另一数据库发送述第一存储区域中数据的文件快照和第二存储区域中数据的文件快照,使得另一数据库同步第一存储区域的数据和第二存储区域的数据。
在本发明的又一实施例中,该装置还包括:第二确定模块,用于确定第二存储区域的存储空间是否小于第二预设值;以及第三确定模块,用于在确定第二存储区域的存储空间小于第二预设值的情况下,根据预设规则对所述数据库中的数据进行处理或者禁止数据写入所述数据库。
在本发明实施方式的第三方面中,提供了一种介质,存储有计算机可执行指令,指令在被处理单元执行时用于实现上述的信息处理方法。
在本发明实施方式的第四方面中,提供了一种计算设备,包括:处理单元;以及存储单元,存储有计算机可执行指令,指令在被处理单元执行时用于实现上述的信息处理方法。
根据本发明实施方式的通过历史访问请求和每项数据的数据量来识别数据库中的冷数据,可以实时地调整数据库中高访问性能的存储区域中存储的热数据,而无需针对不同的业务场景来调整数据库中的冷热数据,从而提高数据库的读写性能并降低数据库的运行成本。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性示出了根据本公开实施例的数据处理方法的应用场景;
图2A示意性示出了根据本发明实施例的数据处理方法的流程图;
图2B示意性示出了根据本公开实施例的确定第一数据集合是否包含冷数据的方法流程图;
图3A示意性示出了根据本公开另一实施例的数据处理方法的流程图;
图3B示意出示出了根据本公开实施例的请求访问冷数据时的数据处理方法的示意图;
图4A示意性示出了根据本公开另一实施例的数据处理方法;
图4B示意性示出了根据本公开实施例的实现上文参考图4A所描述的操作的数据结构示意图;
图5示意性示出了根据本公开另一实施例的数据处理方法的流程图;
图6示意性示出了根据本公开实施例的数据处理的程序产品示意图;
图7A示意性示出了根据本公开实施例的数据处理装置的框图;
图7B示意性示出了根据本公开实施例的第一确定模块的框图;
图7C示意性示出了根据本公开另一实施例的数据处理装置的框图;以及
图8示意性示出了根据本公开实施例的用于数据处理的计算设备的方框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种数据处理的方法、介质、装置和计算设备。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,对于大部分业务场景,访问数据库的访问请求往往存在局部性,即一部分数据经常被访问的频率很高,而另一部分数据被访问的频率很低。因此,可以将被访问频率高的热数据和被访问频率低的冷数据分离存储。本发明提出可以将热数据存储于读写性能高的存储区域,而将冷数据存储于读写性能低的存储区域。这样不仅可以提升数据库的读写性能,而且可以将大容量的低频读写数据及时地存储在成本较低的低性能存储区域中,以降低数据库整体的运营成本。
本发明人发现,智能并准确地识别出数据库中的冷数据和热数据是实现冷热数据分离存储,并且及时地将读写性能高的存储区域中的冷数据迁移至读写性能低的存储区域是在提升数据库的读写性能同时降低数据库整体运营成本的关键。
本发明的实施方式提供了一种数据处理方法,该数据处理方法可以智能并准确地识别出数据库中的冷数据和热数据是实现冷热数据分离存储,并且及时地将读写性能高的存储区域中的冷数据迁移至读写性能低的存储区域。该数据处理方法包括获取多个历史访问请求,多个历史访问请求分别用于数据库中存储的数据,数据库包括第一存储区域和第二存储区域;获取第一数据集合中每项数据的数据量,其中,第一数据集合是第一存储区域存储的数据;基于多个历史访问请求和每项数据的数据量,确定第一数据集合是否包含冷数据;以及在确定第一数据集合包含冷数据的情况下,将冷数据迁移至第二存储区域;其中,第一存储区域的读写性能高于第二存储区域的读写性能。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1阐述本发明实施例的数据处理方法的应用场景。
图1示意性示出了根据本公开实施例的数据处理方法的应用场景。
如图1所示,该应用场景中包括电子设备100,电子设备100中例如可以包括用于存储数据的数据库。该数据库中的数据一部分存储于电子设备100的内存中,一部分存储于电子设备硬盘里。
例如内存中可以存储热数据,即访问频率较高的数据,而硬盘里可以存储冷数据,即访问频率较低的数据。硬盘例如可以是SSD(Solid State Drive,固态驱动器)或者机械硬盘等。
电子设备100例如可以接收来自多个客户端访问数据库的请求,并且响应该访问请求。
根据本公开的实施例,电子设备100可以根据多个历史访问请求以及该多个历史访问请求各自所请求访问的每项数据的数据量,智能并准确地识别出数据库存储的数据中的热数据和冷数据,并且能够将内存中由热数据变为冷数据的数据及时地迁移至硬盘中,以及在接收到来自某个客户端的当前访问请求为存储在硬盘中的冷数据时,可以将该冷数据从硬盘中迁移到内存中,从而响应该当前访问请求。因此,该数据处理方法能够自动、准确以及及时更新内存中的热数据和硬盘中的冷数据,从而不仅可以提升数据库的读写性能,而且可以将大容量的低频读写数据及时地存储在成本较低的低性能存储区域中,以降低数据库整体的运营成本。
示例性方法
下面结合图1的应用场景,参考图2A来描述根据本发明示例性实施方式的用于数据处理的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图2A示意性示出了根据本发明实施例的数据处理方法的流程图。
如图2A所示,该数据处理方法可以包括操作S201~S204。
在操作S201,获取多个历史访问请求,多个历史访问请求分别用于访问数据库中存储的数据,数据库包括第一存储区域和第二存储区域。其中,第一存储区域的读写性能高于第二存储区域的读写性能。
例如可以对历史访问请求进行周期性采样。具体地,例如可以是60秒为一个采样周期,对每个采样周期内接收到的历史访问请求进行采样而获得多个历史访问请求。
该多个历史访问请求例如可以用于访问数据库中存储的数据。例如可以是将热数据存储在该数据库中的第一存储区域,以及将冷数据存储在该数据库中的第二存储区域。其中,第一存储区域的读写性能高于第二存储区域的读写性能。
例如,第一存储区域可以是电子设备的内存,而第二存储区域可以是电子设备的硬盘。
在操作S202,获取第一数据集合中每项数据的数据量,其中,第一数据集合是第一存储区域存储的数据。
根据本公开的实施例,数据库例如可以是以键值对(即key-value)的形式存储数据的,第一数据集合可以是存储在第一存储区域的全部键值对。每项数据的数据量可以是该数据中所有key(可以是一个或多个)所对应的value的大小。value的大小例如可以是value所占据的二进制的位数。
在操作S203,基于多个历史访问请求和每项数据的数据量,确定第一数据集合是否包含冷数据。
例如可以根据多个历史访问请求估算第一存储区域中存储的数据的访问频率。根据本公开的实施例,例如可以利用LFU(Least Frequently Used,最不经常使用)算法估算第一存储区域中存储的数据的访问频率。
在操作S204,在确定第一数据集合包含冷数据的情况下,将冷数据迁移至第二存储区域。
例如可以是向第二存储区域发送第一数据集合中的冷数据,以便在该第二存储区域存储该数据,在该第二存储区域将该数据存储后,可以将第一存储区域中该数据删除。
根据本发明的实施例,该数据处理方法可以根据历史访问请求和数据量来识别出第一存储区域的冷数据,以及时地将冷数据迁移到第二存储区域,从而实现了在保证读写性能的同时,降低了运行成本。
图2B示意性示出了根据本公开实施例的确定第一数据集合是否包含冷数据的方法流程图。
如图2B所示,该方法可以包括操作S213~S233。
在操作S213,基于多个历史访问请求,确定第一数据集合中每项数据的访问频率。
例如可以根据LFU算法计算每项数据的访问频率。
在操作S223,基于每项数据的访问频率和每项数据的数据量,对每项数据的冷热程度进行评分,并获得评分排序结果。
本发明提供了一种对数据的冷热程度进行评分的方法,如下文公式(一)
idleScore=((255-LFUDecrAndReturn(object))<<16)+objectSize 公式(一)
其中,idleScore为评分结果,LFUDecrAndReturn(object)为利用LFU算法对某个0bject(即被访问数据)进行计算而得到的计算结果,objectSize为被访问数据的数据量。
根据本公开的实施例,idleScore越大,该数据被确定为冷数据的概率越大。数据被确定为冷数据的概率可以表明该数据的冷热程度,概率越大表明该数据越冷。例如可以根据评分结果对数据的冷热程度进行排序,将评分结果高的可以排在评分结果低的前面。
根据本公开的实施例,例如可以将评分排序结果存储在一个队列中。
在操作S233,根据评分排序结果确定冷数据。
例如可以将位于评分排序结果中预设位序之前的数据确定为冷数据。
根据本公开的实施例,该方法通过访问频率和数据量来对数据的冷热程度进行评分,提高了识别冷热数据的准确度。
图3A示意性示出了根据本公开另一实施例的数据处理方法的流程图。
如图3A所示,该方法可以包括操作S301~S304。
在操作S301,由主线程接收来自客户端的当前访问请求。
在操作S302,在当前访问请求所请求访问的数据为冷数据的情况下,由主线程向异步线程发送根据当前访问请求生成的访问任务,以由异步线程根据访问任务,将冷数据从第二存储区域加载到第一存储区域。
在操作S303,主线程响应于接收到来自异步线程的通知消息,生成并向客户端发送针对当前访问请求的响应结果。
在操作S304,主线程根据响应结果,更新第一存储区域中存储的第一数据集合。
根据本公开的实施例,该方法由主线程执行第一访问阶段(以下称为top-half阶段)和第二访问阶段(以下称为bottom-half阶段),top-half阶段可以包括操作S301和操作S302,bottom-half阶段可以包括操作S303和操作S304。而耗时的数据的迁移(即将冷数据从第二存储区域加载到第一存储区域)过程可以由异步线程完成。由于对内存的访问都可以是由同一个主线程来完成的,并且当主线程接收到来自异步线程的通知消息后才执行第二访问阶段,从而避免了锁竞争问题。
下面结合图3B示例性说明图3A所描述的数据处理方法。
图3B示意出示出了根据本公开实施例的请求访问冷数据时的数据处理方法的示意图。
如图3B所示,该数据处理方法可以包括主线程、异步线程。如图3B所示,冷数据可以存储于第二存储区域。
根据本公开的实施例,执行操作S301,由主线程接收来自客户端的当前访问请求。主线程响应于接收到当前访问请求,并且可以判断当前访问请求所请求访问的数据是冷数据还是热数据。
根据本公开的实施例,第一存储区域例如内存中可以包括第一哈希表和第二哈希表,第一哈希表例如可以存储热数据,第二哈希表可以存储冷数据的索引。主线程可以通过查询第一哈希表和第二哈希表来确定当前访问请求所请求访问的数据是冷数据还是热数据。
接下来,执行操作S302,在确定当前访问请求所请求访问的数据是冷数据的情况下,如图3B所示,主线程可以执行第一访问阶段(即top-half阶段)。在top-half阶段主线程根据当前访问请求生成访问任务,并且向异步线程发送该访问任务。
根据本公开的实施例,该访问任务例如可以被加入到异步线程的待处理队列中,以等待被异步线程处理。异步线程可以依次从待处理队列中获取访问任务并处理该访问任务。
根据本公开的实施例,异步线程处理访问任务可以是根据访问任务访问存储设备,以从存储设备中获取访问请求所请求访问的冷数据,并将冷数据加载到第一存储区域(例如内存)。在冷数据被加载到第一存储区域的情况下,异步线程可以向主线程发送通知消息,以使主线程执行第二访问阶段(即bottom-half阶段)。
接下来,执行操作S303和操作S304,即主线程执行bottom-half阶段。在bottom-half阶段主线程响应于接收到来自异步线程的通知消息,生成并向客户端发送针对当前访问请求的响应结果,主线程根据响应结果,更新第一存储区域中存储的第一数据集合。
根据本公开的实施例,当前访问请求例如可以是将张三的资产扣除100元,针对该当前访问请求的响应结果例如可以是向客户端发送扣除100元后张三剩余的资产,例如可以是1000元。主线程可以将内存中存储的张三的资产修改为1000元。
根据本公开的实施例,第二存储区域例如可以是RocksDB数据库。
根据本公开的实施例,数据处理方法还包括在当前访问请求所请求访问的数据为冷数据的情况下,主线程增加数据的值的引用计数,并且将数据的键添加到任务列表以锁定当前访问请求的处理位序。
例如可以是当来自客户端的访问请求所请求访问的是value1,则增加对value1的引用计数,当再次接收到另一客户端请求访问value1时再次增加对value1的引用计数。根据本公开的实施例,增加对value的引用计数可以避免其他操作将该value释放。具体地,例如主线程接收到第一访问请求是读取value1,而第二访问请求是删除valuel,如果没有对value1引用计数,则可能导致响应第二访问请求而将value1的内存释放,因此无法读取value1。如果对value1引用计数,能够避免在未读取到value1的情况下而将value1所占据的内存释放。
根据本公开的实施例,该方法还可以包括响应于接收到将主线程操作的数据释放的指令,减少针对数据的引用计数,在数据的引用计数减少为零的情况下,主线程释放操作的数据所占据的内存空间。例如可以是当主线程将针对某个数据的访问请求响应完成的情况下,减少针对该数据的引用计数。当不存在与该数据相关的操作的情况下,主线程可以释放操作该数据所占据的内存。具体地,例如将某个数据由内存转移至磁盘中,可以是对该数据增加引用计数,在该数据被保存到磁盘的情况下,减少引用计数,释放该数据占据的内存空间。
根据本公开的实施例,在当前访问请求所请求访问的数据为冷数据的情况下,可以将该数据的键添加到任务列表中以锁定当前访问请求的处理位序,以对发送该当前访问请求的客户端阻塞控制,实现了客户端等待冷数据的加载过程不会互相影响。
根据本公开的实施例,例如可以将异步线程正在加载的冷数据以及等待被异步线程处理的数据的键添加到任务列表中。当异步线程处理完针对某个数据的所有访问任务的情况下,将该数据的键从任务列表中删除。
根据本公开的实施例,该方法通过主线程对当前访问请求所请求访问的数据值引用计数,防止了其他操作将其释放,并且通过将数据的键添加到任务列表中可以实现对客户端的阻塞控制,以实现客户端等待冷数据被加载的过程不受其他操作的影响。
图4A示意性示出了根据本公开另一实施例的数据处理方法。
如图4A所示,该数据处理方法在图3A所示的操作S301~S304的基础上还可以包括操作S401~S404。
在操作S401,在当前访问请求所请求访问的数据的值为冷数据或者迁移数据的情况下,将发送当前访问请求的客户端添加至客户端列表中,其中,迁移数据为正在或等待被异步线程从第一存储区域迁移至第二存储区域的数据;或者位于异步线程的待处理列表中,以等待被从第一存储区域迁移至第二存储区域的数据。
在操作S402,在异步线程完成了针对数据的值的访问任务情况下,遍历客户端列表,以从客户端列表中查找出由于数据的值为冷数据或者迁移数据而被阻塞的客户端。
在操作S403,向客户端发送数据的值被加载完成的消息,以便客户端从自身的等待列表中将数据的键删除。
在操作S404,在客户端等待列表中的数据的键均被删除的情况下,向客户端发送响应结果,以响应当前访问请求。
根据本公开的实施例,该数据处理方法对客户端进行阻塞控制,实现了客户端等待冷数据被加载的过程不受其他操作的影响。
下面结合图4B说明为实现上文参考图4A所描述的操作的数据结构示意图。
图4B示意性示出了根据本公开实施例的实现上文参考图4A所描述的操作的数据结构示意图。
如图4B所示,电子设备可以维护任务列表410和客户端列表420。其中,任务列表410可以进一步地分为冷数据加载列表412和热数据转存列表411。冷数据加载列表412中可以存储正在或者等待被加载到内存的冷数据的键,以及热数据转存列表411可以存储位于异步线程的待处理列表中等待被被从内存迁移至磁盘的数据。
如图4B所示,冷数据加载列表412例如存储有key5、key6、key7以及key8等。
例如客户端C5向电子设备发送当前访问请求,该当前访问请求所请求访问的数据为key6对应的value2,value2为冷数据,则可以执行操作S401,将发送当前访问请求的客户端C5添加至客户端列表中。
如图4B所示,在该数据结构中每个被阻塞的客户端可以与一个等待列表430对应,该等待列表430记录了该客户端被阻塞的key,即该客户端发送的等待被电子设备响应的访问请求所请求访问的value对应的key。
接下来,执行操作S402,在异步线程完成了针对value的访问任务情况下,遍历客户端列表420,以从客户端列表420中查找出由于数据的值为冷数据或者迁移数据而被阻塞的客户端。具体地,如图4所示,在异步线程完成了针对key6的value的访问任务的情况下,遍历客户端列表,以从客户端列表中查找出被key6阻塞的客户端,例如可以是C1~C5。
接下来,执行操作S403,可以向客户端C1~C5发送key6的value被处理完成的消息,以便C1~C5从自身的等待列表中将key6删除。具体地,以图4B中客户端C3为例,客户端C3被key6和key10阻塞,在异步线程完成了针对key6的访问任务情况下,可以将key6从客户端C3的等待列表中删除。
在操作S404,例如可以是在客户端C3的等待列表中的key6和key10被删除的情况下,说明客户端C3所需要的数据已经准备就绪,可以向客户端C3发送响应结果,以响应当前访问请求。
图5示意性示出了根据本公开另一实施例的数据处理方法的流程图。
如图5所示,该方法在前述实施例的基础上还可以包括操作S501~S503。
在操作S501,响应于获取到指示创建文件快照的指令,停止所述异步线程的执行。
根据本公开的实施例,指示创建文件快照的指令例如可以是根据另一数据库的同步请求而生成的,或者是接收到数据持久化的指令。数据持久化可以包括第一存储区域的数据持久化和第二存储区域的数据持久化。在接收到另一数据库的同步请求或者是数据持久化的指令的情况下,电子设备暂停异步线程的执行。例如暂停将第一存储区域的数据迁移到第二存储区域或暂停将第二存储区域的冷数据加载到第一存储区域等等。
在操作S502,基于所述异步线程已经处理完成的访问任务的任务结果,更新所述第一存储区域中存储的第一数据集合。
由主线程针对异步线程已经处理完成的访问任务执行bottom-half阶段的处理,以保证索引和数据的一致性。例如可以包括由主线程生成并向客户端发送针对当前访问请求的响应结果,以及主线程根据响应结果。
在操作S503,同步创建第一存储区域中数据的文件快照和第二存储区域中数据的文件快照。
根据本公开的实施例,第一存储区域中数据的文件快照和第二存储区域中数据的文件快照实现可以是在一个时间点生成的,以两部分数据一致性。
根据本公开的实施例,例如可以fork子进程以创建第一存储区域的文件快照,并导出到磁盘,以及可以硬链接创建第二存储区域的文件快照。
根据本公开的实施例,在操作S501指示创建文件快照的指令是根据另一数据库的同步请求而生成的情况下,该方法还包括:向另一数据库发送第一存储区域中数据的文件快照和第二存储区域中数据的文件快照,使得另一数据库同步第一存储区域的数据和第二存储区域的数据。
根据本公开的实施例,该数据处理方法支持增量同步和全量同步。例如该电子设备中的数据库可以是主数据库,以及该电子设备接收到另一从数据库的同步请求。根据本公开的实施例,主数据库增量同步可以采用发送backlog数据方式,主库会保存最近一段时间的请求数据,如果从库请求从一个指定的偏移量开始同步,主库直接偏移量之后的数据即可完成增量同步。
根据本公开的实施例,针对第二存储区域的数据同步即冷数据同步可以是主库暂停异步线程,并处理异步线程已经处理完成的访问任务的任务结果,更新所述第一存储区域例如可以是内存中存储的第一数据集合。例如可以是执行上文参考图5描述的操作S502。接下来,生成冷数据文件快照,以及生成针对内存的文件快照dump成磁盘文件。接下来,主数据库向从数据库发送内存的文件快照和冷数据的文件快照。从数据库接收来自主数据库的文件快照,并且将内存文件快照中的热数据加载到内存,以及打开冷数据快照文件,完成主从数据库同步。
根据本公开的实施例,上述数据处理方法还可以包括确定第二存储区域的存储空间是否小于第二预设值,以及在确定第二存储区域的存储空间小于第二预设值的情况下,根据预设规则对所述数据库中的数据进行处理或者禁止数据写入所述数据库。
根据本公开的实施例,例如在第一存储区域内存的存储空间达到内存限制的情况下,则可以触发上文参考图2描述的操作S201~S204,以将冷数据迁移到第二存储区域中。在第二存储区域的存储容量不足的情况下,可以根据预设规则对数据库中的数据进行处理或者禁止数据写入数据库。
根据本公开的实施例,例如可以是根据预设淘汰规则将第二存储区域的部分数据淘汰。
示例性介质
在介绍了本发明示例性实施方式的方法之后,接下来,参考图6对本发明示例性实施方式的数据处理方法的计算机可读介质进行描述。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算设备上运行时,所述程序代码用于使所述计算设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于图表的数据处理方法中的步骤,例如,所述计算设备可以执行如图2A中所示的步骤S201:获取多个历史访问请求,所述多个历史访问请求分别用于访问数据库中存储的数据,所述数据库包括第一存储区域和第二存储区域,其中,所述第一存储区域的读写性能高于所述第二存储区域的读写性能;步骤S202:获取第一数据集合中每项数据的数据量,其中,所述第一数据集合是所述第一存储区域存储的数据;步骤S203:基于所述多个历史访问请求和所述每项数据的数据量,确定第一数据集合是否包含冷数据;以及操作S204,在确定所述第一数据集合包含冷数据的情况下,将所述冷数据迁移至所述第二存储区域。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
图6示意性示出了根据本公开实施例的数据处理的程序产品示意图。
如图6所示,描述了根据本发明的实施方式的数据处理的程序产品60,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言——诸如Java,C++等,还包括常规的过程式程序设计语言——诸如“C”,语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)一连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性装置
在介绍了本发明示例性实施方式的介质之后,接下来,参考图7A~7C对本发明示例性实施方式的数据处理装置进行描述。
图7A示意性示出了根据本公开实施例的数据处理装置700的框图。
如图7A所示,数据处理装置700可以包括第一获取模块710、第二获取模块720、第一确定模块730和迁移模块740。
第一获取模块710,例如可以执行上文参考图2A描述的操作S201,用于获取多个历史访问请求,所述多个历史访问请求分别用于访问数据库中存储的数据,所述数据库包括第一存储区域和第二存储区域。
第二获取模块720,例如可以执行上文参考图2A描述的操作S202,用于获取第一数据集合中每项数据的数据量,其中,所述第一数据集合是所述第一存储区域存储的数据。
第一确定模块730,例如可以执行上文参考图2A描述的操作S203,用于基于所述多个历史访问请求和所述每项数据的数据量,确定第一数据集合是否包含冷数据。
迁移模块740,例如可以执行上文参考图2A描述的操作S204,用于在确定所述第一数据集合包含冷数据的情况下,将所述冷数据迁移至所述第二存储区域。
其中,所述第一存储区域的读写性能高于所述第二存储区域的读写性能。
图7B示意性示出了根据本公开实施例的第一确定模块730的框图。
如图7B所示,第一确定模块730可以包括第一确定子模块731、评分子模块732、第二确定模块733。
第一确定子模块731,例如可以执行上文参考图2B描述的操作S213,用于基于所述多个历史访问请求,确定所述第一数据集合中每项数据的访问频率。
评分子模块,例如可以执行上文参考图2B描述的操作S223,用于基于每项数据的所述访问频率和每项数据的所述数据量,对所述每项数据的冷热程度进行评分,并获得评分排序结果。
第二确定子模块,例如可以执行上文参考图2B描述的操作S233,用于根据所述评分排序结果确定冷数据。
图7C示意性示出了根据本公开另一实施例的数据处理装置800的框图。
如图7C所示,该数据处理装置800在前述实施例的基础上还可以包括接收模块810、第一发送模块820、响应模块830和第一更新模块840。
接收模块,例如可以执行上文参考图3描述的操作S301,用于由主线程接收来自客户端的当前访问请求。
第一发送模块,例如可以执行上文参考图3描述的操作S302,用于在所述当前访问请求所请求访问的数据为冷数据的情况下,由所述主线程向异步线程发送根据所述当前访问请求生成的访问任务,以由所述异步线程根据所述访问任务,将所述冷数据从所述第二存储区域加载到所述第一存储区域。
响应模块,例如可以执行上文参考图3描述的操作S303,用于所述主线程响应于接收到来自所述异步线程的通知消息,生成并向所述客户端发送针对所述当前访问请求的响应结果。
第一更新模块,例如可以执行上文参考图3描述的操作S304,用于所述主线程根据所述响应结果,更新所述第一存储区域中存储的第一数据集合。
如图7C所示,该数据处理装置800在前述实施例的基础上还可以包括第一计数模块850、第一添加模块860。
第一计数模块850,用于在所述当前访问请求所请求访问的数据为冷数据的情况下,所述主线程增加所述数据的值的引用计数。
第一添加模块860,用于将所述数据的键添加到任务列表以锁定所述当前访问请求的处理位序。
如图7C所示,该数据处理装置800在前述实施例的基础上还可以包括第二计数模块870、释放模块880。
第二计数模块870,用于响应于接收到将所述主线程操作的所述数据释放的指令,减少针对所述数据的引用计数。
释放模块880,用于在所述数据的引用计数减少为零的情况下,所述主线程释放操作的所述数据所占据的内存空间。
如图7C所示,该数据处理装置800在前述实施例的基础上还可以包括第二添加模块890、查找模块801、第二发送模块802和第三发送模块803。
第二添加模块890,例如可以执行上文参考图4A描述的操作S401,用于在所述当前访问请求所请求访问的数据的值为冷数据或者迁移数据的情况下,将所述当前访问请求的客户端添加至客户端列表中,其中,所述迁移数据为正在被所述异步线程从第一存储区域迁移至第二存储区域的数据;或者位于所述异步线程的待处理列表中,以等待被从第一存储区域迁移至第二存储区域的数据。
查找模块801,例如可以执行上文参考图4A描述的操作S402,用于在所述异步线程完成了将所述数据的值加载到所述第一存储区域的情况下,遍历所述客户端列表,以从所述客户端列表中查找出由于所述数据的值为冷数据或者迁移数据而被阻塞的客户端。
第二发送模块802,例如可以执行上文参考图4A描述的操作S403,用于向所述客户端发送所述数据的值被加载完成的消息,以便所述客户端从自身的等待列表中将所述键删除。
第三发送模块803,例如可以执行上文参考图4A描述的操作S404,用于在所述客户端等待列表中的键均被删除的情况下,向所述客户端发送响应结果,以响应所述当前访问请求。
如图7C所示,该数据处理装置800在前述实施例的基础上还可以包括暂停模块804、第二更新模块805、创建模块806。
暂停模块804,例如可以执行上文参考图5描述的操作S501,用于响应于获取到指示创建文件快照的指令,停止所述异步线程的执行;
第二更新模块805,例如可以执行上文参考图5描述的操作S502,用于基于所述异步线程已经处理完成的访问任务的任务结果,更新所述第一存储区域中存储的第一数据集合;以及
创建模块806,例如可以执行上文参考图5描述的操作S503,用于同步创建第一存储区域中数据的文件快照和第二存储区域中数据的文件快照。
如图7C所示,该数据处理装置800在前述实施例的基础上还可以包括同步模块807。
指示创建文件快照的指令是根据另一数据库的同步请求而生成的,同步模块用于向所述另一数据库发送所述第一存储区域中数据的文件快照和所述第二存储区域中数据的文件快照,使得所述另一数据库同步所述第一存储区域的数据和所述第二存储区域的数据。
如图7C所示,该数据处理装置800在前述实施例的基础上还可以包括第二确定模块808和第三确定模块809。
第二确定模块808用于确定所述第二存储区域的存储空间是否小于第二预设值;以及
第三确定模块809用于在确定所述第二存储区域的存储空间小于第二预设值的情况下,根据预设规则对所述数据库中的数据进行处理或者禁止数据写入所述数据库。
示例性计算设备
在介绍了本发明示例性实施方式的方法、介质和装置之后,接下来,参考图8对本发明示例性实施方式的计数设备进行说明。
本发明实施例还提供了一种计算设备。所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的计算设备可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的信息呈现方法中的步骤。
下面参照图8来描述根据本发明的这种实施方式的用于数据处理的计算设备80。如图8所示的计算设备80仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算设备80以通用计算设备的形式表现。计算设备80的组件可以包括但不限于:上述至少一个处理单元801、上述至少一个存储单元802、连接不同系统组件(包括存储单元802和处理单元801)的总线803。
总线803表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元802可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)8021和/或高速缓存存储器8022,还可以进一步包括只读存储器(ROM)8023。
存储单元802还可以包括具有一组(至少一个)程序模块8024的程序/实用工具8028,这样的程序模块8024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备80也可以与一个或多个外部设备804(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与计算设备80交互的设备通信,和/或与使得计算设备80能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口808进行。并且,计算设备80还可以通过网络适配器806与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器806通过总线803与计算设备80的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备80使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (12)
1.一种数据处理方法,包括:
获取多个历史访问请求,所述多个历史访问请求分别用于访问数据库中存储的数据,所述数据库包括第一存储区域和第二存储区域;
获取第一数据集合中每项数据的数据量,其中,所述第一数据集合是所述第一存储区域存储的数据;
基于所述多个历史访问请求和所述每项数据的数据量,确定第一数据集合是否包含冷数据;以及
在确定所述第一数据集合包含冷数据的情况下,将所述冷数据迁移至所述第二存储区域;
其中,所述第一存储区域的读写性能高于所述第二存储区域的读写性能;
所述基于所述多个历史访问请求和所述每项数据的数据量,确定第一数据集合是否包含冷数据包括:基于所述多个历史访问请求,确定所述第一数据集合中每项数据的访问频率;基于每项数据的所述访问频率和每项数据的所述数据量,对所述每项数据的冷热程度进行评分,并获得评分排序结果;根据所述评分排序结果确定冷数据;
由主线程接收来自客户端的当前访问请求;
在所述当前访问请求所请求访问的数据为冷数据的情况下,由所述主线程向异步线程发送根据所述当前访问请求生成的访问任务,以由所述异步线程根据所述访问任务,将所述冷数据从所述第二存储区域加载到所述第一存储区域,其中,所述访问任务存储至异步线程的待处理队列中,异步线程依次从所述待处理队列获取访问任务并处理访问任务;
所述主线程响应于接收到来自所述异步线程的通知消息,生成并向所述客户端发送针对所述当前访问请求的响应结果,以及
所述主线程根据所述响应结果,更新所述第一存储区域中存储的第一数据集合;
在所述当前访问请求所请求访问的数据为冷数据的情况下,所述主线程增加所述数据的值的引用计数;
响应于接收到将所述主线程操作的所述数据释放的指令,减少针对所述数据的引用计数;以及
在所述数据的引用计数减少为零的情况下,所述主线程释放操作的所述数据所占据的内存空间;以及
在所述当前访问请求所请求访问的数据的值为冷数据或者迁移数据的情况下,将发送所述当前访问请求的客户端添加至客户端列表中,其中,所述迁移数据为正在被所述异步线程从第一存储区域迁移至第二存储区域的数据;或者位于所述异步线程的待处理列表中,以等待被从第一存储区域迁移至第二存储区域的数据;
在所述异步线程完成了将所述数据的值加载到所述第一存储区域的情况下,遍历所述客户端列表,以从所述客户端列表中查找出由于所述数据的值为冷数据或者迁移数据而被阻塞的客户端;
向所述客户端发送所述数据的值被加载完成的消息,以便所述客户端从自身的等待列表中将所述数据的键删除,以及
在所述客户端等待列表中的数据的键均被删除的情况下,向所述客户端发送响应结果,以响应所述当前访问请求。
2.根据权利要求1所述的方法,还包括:
将所述数据的键添加到任务列表以锁定所述当前访问请求的处理位序。
3.根据权利要求1所述的方法,还包括:
响应于获取到指示创建文件快照的指令,停止所述异步线程的执行;
基于所述异步线程已经处理完成的访问任务的任务结果,更新所述第一存储区域中存储的第一数据集合;以及
同步创建第一存储区域中数据的文件快照和第二存储区域中数据的文件快照。
4.根据权利要求3所述的方法,其中,所述指示创建文件快照的指令是根据另一数据库的同步请求而生成的;
所述方法还包括:
向所述另一数据库发送所述第一存储区域中数据的文件快照和所述第二存储区域中数据的文件快照,使得所述另一数据库同步所述第一存储区域的数据和所述第二存储区域的数据。
5.根据权利要求1所述的方法,还包括:
确定所述第二存储区域的存储空间是否小于第二预设值;以及
在确定所述第二存储区域的存储空间小于第二预设值的情况下,根据预设规则对所述数据库中的数据进行处理或者禁止数据写入所述数据库。
6.一种数据处理装置,包括:
第一获取模块,用于获取多个历史访问请求,所述多个历史访问请求分别用于访问数据库中存储的数据,所述数据库包括第一存储区域和第二存储区域;
第二获取模块,用于获取第一数据集合中每项数据的数据量,其中,所述第一数据集合是所述第一存储区域存储的数据;
第一确定模块,用于基于所述多个历史访问请求和所述每项数据的数据量,确定第一数据集合是否包含冷数据;以及
迁移模块,用于在确定所述第一数据集合包含冷数据的情况下,将所述冷数据迁移至所述第二存储区域;
其中,所述第一存储区域的读写性能高于所述第二存储区域的读写性能;
所述第一确定模块包括:第一确定子模块,用于基于所述多个历史访问请求,确定所述第一数据集合中每项数据的访问频率;评分子模块,用于基于每项数据的所述访问频率和每项数据的所述数据量,对所述每项数据的冷热程度进行评分,并获得评分排序结果;第二确定子模块,用于根据所述评分排序结果确定冷数据;
接收模块,用于由主线程接收来自客户端的当前访问请求;
第一发送模块,用于在当前访问请求所请求访问的数据为冷数据的情况下,由主线程向异步线程发送根据当前访问请求生成的访问任务,以由异步线程根据访问任务,将冷数据从第二存储区域加载到第一存储区域,其中,所述访问任务存储至异步线程的待处理队列中,异步线程依次从所述待处理队列获取访问任务并处理访问任务;以及
响应模块,用于主线程响应于接收到来自异步线程的通知消息,生成并向客户端发送针对当前访问请求的响应结果,以及
第一更新模块,用于主线程根据响应结果,更新第一存储区域中存储的第一数据集合;
第一计数模块,用于在当前访问请求所请求访问的数据为冷数据的情况下,主线程增加数据的值的引用计数;
第二计数模块,用于响应于接收到将主线程操作的数据释放的指令,减少针对数据的引用计数;以及
释放模块,用于在数据的引用计数减少为零的情况下,主线程释放操作的数据所占据的内存空间;以及
第二添加模块,用于在当前访问请求所请求访问的数据的值为冷数据或者迁移数据的情况下,将当前访问请求的客户端添加至客户端列表中,其中,迁移数据为正在被异步线程从第一存储区域迁移至第二存储区域的数据;或者位于异步线程的待处理列表中,以等待被从第一存储区域迁移至第二存储区域的数据;
查找模块,用于在异步线程完成了将数据的值加载到第一存储区域的情况下,遍历客户端列表,以从客户端列表中查找出由于数据的值为冷数据或者迁移数据而被阻塞的客户端;
第二发送模块,用于向客户端发送数据的值被加载完成的消息,以便客户端从自身的等待列表中将键删除,以及
第三发送模块,用于在客户端等待列表中的键均被删除的情况下,向客户端发送响应结果,以响应当前访问请求。
7.根据权利要求6所述的装置,还包括:
第一添加模块,用于将数据的键添加到任务列表以锁定当前访问请求的处理位序。
8.根据权利要求6所述的装置,还包括:
暂停模块,用于响应于获取到指示创建文件快照的指令,停止异步线程的执行;
第二更新模块,用于基于异步线程已经处理完成的访问任务的任务结果,更新第一存储区域中存储的第一数据集合;以及
创建模块,用于同步创建第一存储区域中数据的文件快照和第二存储区域中数据的文件快照。
9.根据权利要求8所述的装置,其中,指示创建文件快照的指令是根据另一数据库的同步请求而生成的,该装置还包括:
同步模块,用于向另一数据库发送述第一存储区域中数据的文件快照和第二存储区域中数据的文件快照,使得另一数据库同步第一存储区域的数据和第二存储区域的数据。
10.根据权利要求6所述的装置,还包括:
第二确定模块,用于确定第二存储区域的存储空间是否小于第二预设值;以及
第三确定模块,用于在确定第二存储区域的存储空间小于第二预设值的情况下,根据预设规则对所述数据库中的数据进行处理或者禁止数据写入所述数据库。
11.一种计算机可读介质,存储有计算机可执行指令,所述指令在被处理单元执行时用于实现权利要求1至5中任一项所述的数据处理方法。
12.一种计算设备,包括:
处理单元;以及
存储单元,存储有计算机可执行指令,所述指令在被所述处理单元执行时用于实现权利要求1至5中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010103379.4A CN111309732B (zh) | 2020-02-19 | 2020-02-19 | 数据处理方法、装置、介质和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010103379.4A CN111309732B (zh) | 2020-02-19 | 2020-02-19 | 数据处理方法、装置、介质和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309732A CN111309732A (zh) | 2020-06-19 |
CN111309732B true CN111309732B (zh) | 2024-03-08 |
Family
ID=71161816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010103379.4A Active CN111309732B (zh) | 2020-02-19 | 2020-02-19 | 数据处理方法、装置、介质和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309732B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112883124B (zh) * | 2021-03-17 | 2022-12-02 | 重庆紫光华山智安科技有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN113220653B (zh) * | 2021-04-20 | 2023-10-27 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备和存储介质 |
CN113885801A (zh) * | 2021-09-30 | 2022-01-04 | 中国工商银行股份有限公司 | 一种内存数据的处理方法及装置 |
CN114004979B (zh) * | 2021-11-05 | 2023-09-01 | 江苏赞奇科技股份有限公司 | 一种云渲染中高性价比数据存储方法及系统 |
CN113835986B (zh) * | 2021-11-25 | 2022-04-08 | 中航金网(北京)电子商务有限公司 | 系统冷热日志的动态切换方法、装置及计算机设备 |
CN114860726A (zh) * | 2022-04-29 | 2022-08-05 | 北京永信至诚科技股份有限公司 | 数据库存储冷热分离方法、装置、设备及可读存储介质 |
CN115334321B (zh) * | 2022-08-10 | 2024-04-09 | 北京百度网讯科技有限公司 | 视频流的访问热度的获取方法、装置、电子设备及介质 |
CN115964436A (zh) * | 2022-11-14 | 2023-04-14 | 京东科技信息技术有限公司 | 一种数据库集群管理的方法和装置 |
CN116909490B (zh) * | 2023-09-11 | 2024-01-05 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储系统及计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013097621A1 (zh) * | 2011-12-31 | 2013-07-04 | 华为技术有限公司 | 数据分层存储处理方法、装置和存储设备 |
CN106161610A (zh) * | 2016-06-29 | 2016-11-23 | 华为技术有限公司 | 一种分布式存储的方法和系统 |
US9513836B1 (en) * | 2015-11-09 | 2016-12-06 | International Business Machines Corporation | Migration of data to sequential access medium |
CN107870728A (zh) * | 2016-09-23 | 2018-04-03 | 伊姆西Ip控股有限责任公司 | 用于移动数据的方法和设备 |
CN109582223A (zh) * | 2018-10-31 | 2019-04-05 | 华为技术有限公司 | 一种内存数据迁移的方法及装置 |
CN109857725A (zh) * | 2019-02-20 | 2019-06-07 | 北京百度网讯科技有限公司 | 数据库管理方法及装置、服务器及计算机可读介质 |
CN110413590A (zh) * | 2019-07-24 | 2019-11-05 | 北京百度网讯科技有限公司 | 数据迁移方法、装置、设备和介质 |
-
2020
- 2020-02-19 CN CN202010103379.4A patent/CN111309732B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013097621A1 (zh) * | 2011-12-31 | 2013-07-04 | 华为技术有限公司 | 数据分层存储处理方法、装置和存储设备 |
US9513836B1 (en) * | 2015-11-09 | 2016-12-06 | International Business Machines Corporation | Migration of data to sequential access medium |
CN106161610A (zh) * | 2016-06-29 | 2016-11-23 | 华为技术有限公司 | 一种分布式存储的方法和系统 |
CN107870728A (zh) * | 2016-09-23 | 2018-04-03 | 伊姆西Ip控股有限责任公司 | 用于移动数据的方法和设备 |
CN109582223A (zh) * | 2018-10-31 | 2019-04-05 | 华为技术有限公司 | 一种内存数据迁移的方法及装置 |
CN109857725A (zh) * | 2019-02-20 | 2019-06-07 | 北京百度网讯科技有限公司 | 数据库管理方法及装置、服务器及计算机可读介质 |
CN110413590A (zh) * | 2019-07-24 | 2019-11-05 | 北京百度网讯科技有限公司 | 数据迁移方法、装置、设备和介质 |
Non-Patent Citations (1)
Title |
---|
张绍华 潘蓉.《大数据技术与应用-大数据治理与服务》.上海科学技术出版社,2016,(7-5478-2838-8),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111309732A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111309732B (zh) | 数据处理方法、装置、介质和计算设备 | |
US9317519B2 (en) | Storage system for eliminating duplicated data | |
US10715460B2 (en) | Opportunistic resource migration to optimize resource placement | |
US8510499B1 (en) | Solid state drive caching using memory structures to determine a storage space replacement candidate | |
US8386717B1 (en) | Method and apparatus to free up cache memory space with a pseudo least recently used scheme | |
CN111949710B (zh) | 数据存储方法、装置、服务器及存储介质 | |
US20130055371A1 (en) | Storage control method and information processing apparatus | |
CN114116613B (zh) | 基于分布式文件系统的元数据查询方法、设备和存储介质 | |
WO2022063059A1 (zh) | 键值存储系统的数据管理方法及其装置 | |
US11392545B1 (en) | Tracking access pattern of inodes and pre-fetching inodes | |
CN112346647B (zh) | 数据存储方法、装置、设备和介质 | |
CN113806300B (zh) | 数据存储方法、系统、装置、设备及存储介质 | |
CN111831618A (zh) | 数据写入方法、数据读取方法、装置、设备及存储介质 | |
CN113032099A (zh) | 云计算节点、文件管理方法及装置 | |
CN111857539A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN113609090B (zh) | 数据存储方法及装置、计算机可读存储介质、电子设备 | |
WO2018064319A9 (en) | FOLLOW-UP OF INODES ACCESS SCHEMES AND INOX PREXTRACTION | |
CN113467719A (zh) | 数据写入方法及装置 | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
US10261722B2 (en) | Performing caching utilizing dispersed system buffers | |
CN114356241B (zh) | 小对象数据的存储方法、装置、电子设备和可读介质 | |
CN115981559A (zh) | 分布式数据存储方法、装置、电子设备和可读介质 | |
US11662927B2 (en) | Redirecting access requests between access engines of respective disk management devices | |
CN115113798B (zh) | 一种应用于分布式存储的数据迁移方法、系统及设备 | |
CN114490540A (zh) | 数据存储方法、介质、装置和计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 310052 Room 301, Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Hangzhou NetEase Shuzhifan Technology Co.,Ltd. Address before: 310052 Room 301, Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant before: HANGZHOU LANGHE TECHNOLOGY Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |