CN115904211A - 一种存储系统、数据处理方法及相关设备 - Google Patents
一种存储系统、数据处理方法及相关设备 Download PDFInfo
- Publication number
- CN115904211A CN115904211A CN202110931054.XA CN202110931054A CN115904211A CN 115904211 A CN115904211 A CN 115904211A CN 202110931054 A CN202110931054 A CN 202110931054A CN 115904211 A CN115904211 A CN 115904211A
- Authority
- CN
- China
- Prior art keywords
- data page
- node
- page
- identifier
- data
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 230000004048 modification Effects 0.000 claims abstract description 35
- 238000012986 modification Methods 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims description 38
- 238000004891 communication Methods 0.000 claims description 23
- 238000004364 calculation method Methods 0.000 abstract description 4
- 238000005192 partition Methods 0.000 description 101
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000001914 filtration Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种存储系统、数据处理方法以及相关设备,存储系统包括第一计算节点和存储节点,第一计算节点中包括记录有一段时间内对第一数据页所做的修改的第一日志;存储节点中存储有第一数据页,存储节点在需要获取第一数据页对应的新数据时,发送获取请求至第一计算节点;第一计算节点在接收到获取请求后,根据第一日志获取包括一段时间内对所述第一数据页所做的修改的第二数据页;然后将第二数据页发送至存储节点。通过计算节点实现根据数据页与重做日志进行回放得到新的数据页,能够利用计算节点的空闲资源,提高存储节点获取新数据的效率,降低存储节点进行回放时占用的资源。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种存储系统、数据处理方法及相关设备。
背景技术
在数据库中,计算节点将一个数据页(page)从存储节点读取到内存中,根据事务对该数据页进行修改得到新的数据页的过程中,会生成对应的日志(例如重做日志(redolog))记录对该数据页的修改,然后将日志写入存储节点。存储节点能够根据存储节点中的该数据页与日志进行回放,得到上述新的数据页。但是存储节点进行回放的效率较低,并且会占用存储节点的资源进而影响数据库实例的业务。
发明内容
本申请公开了存储系统、数据处理方法及相关设备,能够利用计算节点的空闲资源,提高存储节点获取新数据的效率,降低存储节点进行回放时占用的资源。
第一方面,本申请提供了一种存储系统,包括第一计算节点和存储节点,第一计算节点包括用于记录一段时间内对第一数据页所做的修改的第一日志;其中,存储节点用于发送获取请求至第一计算节点,获取请求中包括用于确定第二数据页的信息;第一计算节点在接收到获取请求后,用于根据上述用于确定第二数据页的信息和第一日志获取包括一段时间内对所述第一数据页所做的修改的第二数据页;然后将第二数据页发送至存储节点。
上述第一计算节点是存储系统中用于处理读请求和/或写请求的节点,存储节点是用于保存存储系统中的数据的节点。其中,存储系统中的数据在存储节点中以数据页与重做日志的形式存储,存储节点以预设方式(例如以预设周期或者存储节点中重做日志的长度达到预设阈值)根据存储节点中的数据页与重做日志进行回放,得到每个数据页对应的新的数据。例如,存储节点中存有第一数据页以及第一数据页对应的重做日志,存储节点根据第一数据页与对应的重做日志进行回放,获取对第一数据页中的数据进行修改后的第二数据页。
上述存储系统中,存储节点将根据数据页与重做日志进行回放的操作分配给计算节点执行,能够利用计算节点的空闲资源,提高存储节点获取新数据的效率,降低存储节点进行回放时占用的资源。
在一种可能的实现方式中,上述存储系统还包括第二计算节点,其中,第一计算节点的负载小于第二计算节点的负载。即存储节点将上述获取请求发送给存储系统中负载较轻的计算节点,从而能够更快的完成获取请求对应的操作。
在一种可能的实现方式中,上述存储系统还包括第二计算节点,其中,第一计算节点是上述存储系统的主节点,存储系统中的主节点用于修改上述第一数据页,所述第二计算节点为从节点,所述从节点用于读取所述第一数据页,所述第一计算节点与所述第二计算节点的负载属于同一等级。
在具体实现中,存储系统包括主节点和从节点,从节点只用于处理读请求,从节点中存储的数据页是从存储节点中读取的,或者是根据从存储节点读取的数据页与重做日志进行回放后才得到的;而主节点能够处理读请求和写请求,主节点能够根据写请求对一个数据页中的数据进行修改,得到该数据页对应的最新的数据,即主节点中保存有一个数据页最新的数据;因此,在主节点的负载等级小于或等于主节点的负载等级时,存储节点优先将获取请求发送给主节点,主节点不需要进行回放,因此获取到获取请求中需要的数据页的效率更高。
在一种可能的实现方式中,上述存储节点发送的获取请求包括用于确定第二数据页的信息;当上述第一计算节点为存储系统的主节点时,第一计算节点根据上述用于确定第二数据页的信息确定第二数据页的标识,然后根据第二数据页的标识从第一计算节点的内存中获取第二数据页,其中,第一数据页的标识与第二数据页的标识相同。
存储系统中的每个数据页都有对应的标识,存储节点中保存有第一数据页,主节点中存储有与第一数据页的标识相同的第二数据页,当存储节点需要获取第一数据页对应的新的数据(即第二数据页)时,通过在获取请求中携带用于确定第二数据页的信息,主节点根据该信息在内存中查找第二数据页,在查找到之后即可发送给存储节点,不需要存储节点根据第一数据页和第一日志进行回放,提高存储节点获取新数据的效率。
在一种可能的实现方式中,上述用于确定第二数据页的信息包括分区标识及存储节点中的第二日志中的日志序列号(log sequence number,LSN)的最大值LSNm,第一节点在获取第二数据页时,第一计算节点根据分区标识从第一计算节点的内存中获取属于分区标识对应的分区的第二数据页,且第一日志中记录的第二数据页对应的LSN小于所述LSNm。其中,LSNm指示主节点发送给存储节点的目标数据页中的LSN的最大值;分区标识用于指示存储节点需要获取的目标数据页的页面标识所属的分区,其中,每个分区包括多个页面标识。
通过对数据页进行分区,存储节点每次向计算节点发送获取请求时携带一个分区的分区标识,从第一计算节点中获取一个分区对应的数据页,通过依次获取各个分区对应的数据页,实现循环获取存储节点中各个数据页对应的新数据的目的。
在一种可能的实现方式中,上述用于确定第二数据页的信息包括页面标识范围及存储节点中的第二日志中的LSN的最大值LSNm,第一计算节点用于根据页面标识范围从第一计算节点的内存中获取标识属于页面标识范围的第二数据页,且第一日志中记录的第二数据页对应的LSN小于所述LSNm。
在具体实现中,上述页面标识范围可以是一个区间范围,也可以是多个数据页的标识,其中,多个数据页可以是数据页中LSN较小的数据页,也可以是数据页对应的重做日志较长的数据页,优先获取存储节点中对应的LSN较小或者重做日志较长的数据页的新数据。
在一种可能的实现方式中,上述获取请求包括用于确定上述第二数据页的信息;第一计算节点为从节点时,从节点会从存储节点获取上述第一数据页和第一日志,第一计算节点根据所述信息确定所述第一数据页的标识,根据第一数据页的标识获取第一数据页和第一日志,并根据第一数据页和第一日志得到第二数据页,第一数据页的标识与第二数据页的标识相同。
在一种可能的实现方式中,上述用于确定第二数据页的信息包括分区标识及存储节点中的第二日志中的LSN的最大值LSNm,第一计算节点根据分区标识从第一计算节点的内存中获取属于分区标识对应的分区的第一数据页,根据第一数据页和第一日志得到第二数据页,其中,第一日志中记录的所述第二数据页对应的LSN小于所述LSNm。
在一种可能的实现方式中,上述用于确定第二数据页的信息包括页面标识范围以及存储节点中的第二日志中的LSN的最大值LSNm,第一计算节点用于根据页面标识范围从第一计算节点的内存中获取标识属于页面标识范围的第一数据页,根据第一数据页和第一日志得到所述第二数据页,第一日志中记录的所述第二数据页对应的LSN小于所述LSNm。
在一种可能的实现方式中,上述用于确定第二数据页的信息包括存储节点中的第一数据页以及存储节点中的第二日志中的LSN的最大值LSNm,第一计算节点用于根据第一数据页的标识获取第一日志,根据第一数据页和第一日志得到第二数据页,第一日志中记录的所述第二数据页对应的LSN小于所述LSNm。
在一种可能的实现方式中,存储节点在接收到第二数据页之后,可以删除存储节点中的第一数据页和第一日志,以释放存储节点中的存盘空间。
第二方面,本申请提供一种存储节点,该存储节点连接至第一计算节点该存储节点包括:
处理单元,用于生成获取请求,该获取请求包括用于确定第二数据页的信息,该获取请求用于指示所述第一计算节点根据第一计算节点中存储的第一日志及用于确定第二数据页的信息确定第二数据页,其中,第一日志中记录了一段时间内对第一数据页所做的修改;第二数据页包括第一日志中对第一数据页所做的修改;
通信单元,用于向第一计算节点发送上述获取请求;并接收第一计算节点根据获取请求返回的第二数据页。
在一种可能的实现方式中,处理单元还用于获取与存储节点连接的多个计算节点的负载,并确定负载最小的计算节点为第一计算节点。
在一种可能的实现方式中,处理单元还用于获取与存储节点连接的多个计算节点的负载,在确定多个计算节点的负载属于同一等级时,从负载属于同一等级的计算节点中确定主节点,并确定主节点为第一计算节点;其中,存储节点连接有多个计算节点,这多个计算节点包括主节点与从节点,主节点是能够处理读请求和写请求的计算节点,从节点是只用于处理读请求的节点。
在一种可能的实现方式中,上述用于确定第二数据页的信息包括分区标识以及存储节点中的第二日志中的LSN的最大值LSNm,分区标识指示第二数据页的标识所属的分区,LSNm指示第二数据页对应的LSN小于LSNm。
在一种可能的实现方式中,上述用于确定第二数据页的信息包括页面标识范围以及所述存储节点中的第二日志中的LSN的最大值LSNm,该页面标识范围指示第二数据页的标识所属的范围,LSNm指示第二数据页对应的LSN小于LSNm,其中,页面标识范围可以是一个区间范围,也可以是多个页面标识的集合。
在一种可能的实现方式中,当第一计算节点为从节点时,上述用于确定第二数据页的信息包括第一数据页和存储节点中的第二日志中的LSN的最大值LSNm,第一数据页指示第一计算节点根据所述第一数据页和第一日志得到所述第二数据页,LSNm指示第二数据页对应的LSN小于LSNm。
在一种可能的实现方式中,处理单元还用于删除上述第一数据页和/或第一日志,以释放存储空间。
第三方面,本申请提供一种计算节点,应用于包括第一计算节点和存储节点的存储系统,计算节点包括第一日志,该第一日志用于记录一段时间内对第一数据页所做的修改;该计算节点包括:
通信单元,用于接收存储节点发送的获取请求,该获取请求包括用于确定第二数据页的信息,该第二数据页包括第一日志中对第一数据页所做的修改;
处理单元,用于在接收到获取请求后,根据用于确定第二数据页的信息及第一日志获取包括一段时间内对第一数据页所做的修改的第二数据页;
通信单元,用于发送第二数据页至存储节点。
在一种可能的实现方式中,计算节点为存储系统的主节点,所述主节点用于修改第一数据页;或者,计算节点为存储系统的从节点,从节点用于从存储节点获取所述第一数据页和所述第一日志。
在一种可能的实现方式中,当计算节点为存储系统的主节点时,处理单元具体用于:根据上述用于确定第二数据页的信息确定第二数据页的标识,并根据第二数据页的标识从计算节点的内存中获取第二数据页,其中,第一数据页的标识与第二数据页的标识相同。
在一种可能的实现方式中,上述用于确定第二数据页的信息包括分区标识及存储节点中的第二日志中的日志序列号LSN的最大值LSNm;处理单元具体用于:根据分区标识从计算节点的内存中获取属于分区标识对应的分区的第二数据页,且第一日志中记录的第二数据页对应的LSN小于LSNm。
在一种可能的实现方式中,上述用于确定第二数据页的信息包括页面标识范围及存储节点中的第二日志中的LSN的最大值LSNm;处理单元具体用于:根据页面标识范围从计算节点的内存中获取标识属于页面标识范围的第二数据页,且第一日志中记录的第二数据页对应的LSN小于LSNm。
在一种可能的实现方式中,当计算节点为存储系统的从节点时,处理单元具体用于:根据上述用于确定第二数据页的信息确定第一数据页的标识,根据第一数据页的标识获取第一数据页和第一日志,并根据第一数据页和第一日志得到第二数据页,其中,第一数据页的标识与第二数据页的标识相同。
在一种可能的实现方式中,当计算节点为存储系统的从节点时,上述用于确定第二数据页的信息包括分区标识及存储节点中的第二日志中的LSN的最大值LSNm;处理单元具体用于:根据分区标识从第一计算节点的内存中获取属于分区标识对应的分区的第一数据页,根据第一数据页和第一日志得到第二数据页,其中,第一日志中记录的第二数据页对应的LSN小于LSNm。
在一种可能的实现方式中,当计算节点为存储系统的从节点时,上述用于确定第二数据页的信息包括页面标识范围及所述存储节点中的第二日志中的LSN的最大值LSNm;处理单元具体用于:根据页面标识范围从计算节点的内存中获取标识属于页面标识范围的第一数据页,根据第一数据页和第一日志得到第二数据页,其中,第一日志中记录的第二数据页对应的LSN小于LSNm。
第四方面,本申请提供一种数据处理方法,该方法包括:存储节点发送获取请求至第一计算节点,其中,获取请求包括用于确定第二数据页的信息;第一计算节点在接收到获取请求后,根据第一计算节点中存储的第一日志及用于确定第二数据页的信息确定第二数据页,其中,第一日志中记录了一段时间内对所述第一数据页所做的修改;第一计算节点发送第二数据页至存储节点。
在一种可能的实现方式中,存储节点发送获取请求至第一计算节点之前,还包括:存储节点获取与存储节点连接的多个计算节点的负载,并确定负载最小的计算节点为第一计算节点。
在一种可能的实现方式中,存储节点发送获取请求至第一计算节点之前,还包括:存储节点获取与存储节点连接的多个计算节点的负载,在确定多个计算节点的负载属于同一等级时,从负载属于同一等级的计算节点中确定主节点,并确定主节点为第一计算节点。其中,存储节点连接有多个计算节点,这多个计算节点包括主节点与从节点,主节点是能够处理读请求和写请求的计算节点,从节点是只用于处理读请求的节点。
在一种可能的实现方式中,上述第一计算节点根据所述第一计算节点中存储的第一日志及所述用于确定第二数据页的信息确定所述第二数据页,包括:根据用于确定第二数据页的信息确定所述第二数据页的标识,并根据所述第二数据页的标识从所述计算节点的内存中获取所述第二数据页,所述第一数据页的标识与所述第二数据页的标识相同。其中,此时第一计算节点是存储系统的主节点。
在一种可能的实现方式中,第一计算节点根据第一计算节点中存储的第一日志及用于确定第二数据页的信息确定第二数据页,包括:第一计算节点根据用于确定第二数据页的信息确定第一数据页的标识,根据第一数据页的标识获取第一数据页和第一日志,并根据第一数据页和第一日志得到第二数据页,其中第一数据页的标识与第二数据页的标识相同。
第五方面,本申请提供一种存储设备,包括处理器和存储器,所述存储器用于存储代码,所述处理器用于执行所述代码以实现如第二方面以及第二方面任意可能的实现方式中所述的操作。
第六方面,本申请提供一种计算设备,包括处理器和存储器,所述存储器用于存储代码,所述处理器用于执行所述代码以实如第三方面以及第三方面任意可能的实现方式中所述的操作。
第七方面,本申请提供了一种计算机程序产品,包括计算机程序,当计算机程序被计算设备读取并执行时,实现如第二方面以及第二方面任意可能的实现方式中所述的操作,或者实现如第三方面以及第三方面任意可能的实现方式中所述的操作。
第八方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质包括指令,当指令在计算设备上运行时,使得计算设备实现如第二方面以及第二方面任意可能的实现方式中所述的操作,或者实现如第三方面以及第三方面任意可能的实现方式中所述的操作。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种存储系统的架构示意图;
图2是本申请提供的一种日志生成示意图;
图3是本申请提供的一种数据处理方法的流程示意图;
图4是本申请提供的一种存储系统的结构示意图;
图5是本申请提供的一种计算设备的硬件结构示意图。
具体实施方式
数据库即服务(DataBase as a Service,DBaaS)是一种云计算服务模型,为用户提供对数据库的某种形式的访问,用户能够通过客户端(例如web应用程序)访问部署于云端的数据库,实现对数据库的配置和管理。图1是本申请提供的一种存储系统的架构示意图,该存储系统包括用户侧的客户端以及位于云端的计算节点与存储节点。其中,计算节点包括一个主节点,或者一个主节点以及一个或多个从节点,主节点用于处理客户端的读请求与写请求,从节点只处理客户端的读请求,存储节点用于存储数据,计算节点与主节点之间通过网络连接,主节点与从节点共享一个存储节点。这样增加计算节点时,无需调整存储资源,做到计算与存储分离。其中,主节点可以是物理机、虚拟机或者容器中的任意一种,从节点可以是物理机、虚拟机或者容器中的任意一种,当主节点和从节点是虚拟机或者容器时,主节点和从节点可以部署在同一个物理机中,也可以部署在不同的物理机中,本申请实施例不做具体限制。
下面结合图1对本申请实施例中涉及的相关概念进行介绍。
数据页(page)是数据库存储数据的基本单元。在同一个数据库中,每一个page的大小是一定的,例如16千字节(kilobyte,kb)。每一个page都有一个唯一的页面标识(pageidentity,page id),例如页面标识的编号从0依次递增。其中,存储系统中数据页存在于两个位置:存储节点的磁盘和计算节点的内存。例如图1中存储节点的磁盘与计算节点的内存中的缓冲池(buffer pool),其中,缓冲池是计算节点中的一块内存区域,用于存储从存储节点的磁盘中读取的数据页。
本申请实施例中,将存储节点的磁盘中的数据页称为基准页(base page),当计算节点内存中的一个数据页中的数据与磁盘中具有相同页面标识的数据页的数据不一致时,将内存中的该页面标识的数据页称为脏页。即脏页是在计算节点内存中被修改后得到的数据页。例如,图1中存储节点的磁盘中页面标识为5的数据页被主节点读取到内存中之后,主节点删除了该数据页中的一行数据,得到修改后的数据页,该修改后的数据页为主节点中的脏页,页面标识仍为5。
重做日志(redo log)记录执行写请求后数据页的状态,存储节点能够根据基准页和重做日志得到在计算节点中已被更新但没有写入磁盘的数据页。存储系统中,重做日志存在于两个地方:一是计算节点内存中的重做日志缓冲区(redo log buffer),该部分是易失性的,当计算节点断电后,内存中的重做日志就会被删除;二是存储节点的磁盘中的重做日志文件(redo log file),磁盘中的重做日志是持久的。
当磁盘中的一个基准页被主节点读取到主节点的内存中,并被主节点修改后,主节点会产生对应的重做日志,该重做日志先被存储到主节点的重做日志缓冲区,然后根据预设的规则(例如每隔一秒钟)将主节点中的重做日志发送给存储节点,由存储节点存储到磁盘中;存储节点能够根据一个基准页和该基准页对应的重做日志得到该基准页被修改后的数据。
重做日志中至少包括页面标识、数据标识、执行写请求后数据标识对应的数据的结果以及日志序列号(log sequence number,LSN)。页面标识指示该重做日志记录的是对哪个数据页的修改,数据标识指示对页面标识指示的数据页中哪个数据进行了修改,LSN的值用于指示重做日志的长度。LSN的值会随着写入重做日志缓冲区的重做日志的长度(length)递增,LSN的值越大,表示对应的日志写入的时间越晚,因此LSN也可以指示重做日志写入的先后顺序。例如,在执行第一写请求对页面标识为10的数据页中的数据进行修改之前,重做日志缓冲区记录的LSN的最大值为100,表示在此之前已经产生过100字节的重做日志,如果该第一写请求执行完之后生成的重做日志的长度为100字节,将该重做日志写入重做日志缓冲区后,重做日志缓冲区中记录的最大的LSN变为200,则执行第一写请求生成的重做日志中记录的LSN为200。之后主节点又执行第二写请求,对页面标识为15的数据页中的数据进行修改,执行第二写请求之后生成的重做日志的长度为150字节,将该重做日志写入重做日志缓冲区之后,重做日志缓冲区中记录的最大的LSN变为350,则执行第二写请求生成的重做日志中记录的LSN为350。
另外,数据页中也会记录LSN,数据页中记录的LSN是该数据页最后一次被修改时生成的日志中记录的LSN,用于指示数据页的版本信息。例如,上述执行第一写请求对页面标识为10的数据页中的数据进行修改后,生成的重做日志中记录的LSN是200,则修改之后该数据页中记录的LSN也为200。
下面结合图1和图2介绍存储系统中主节点处理写请求和从节点处理读请求的过程。
1、主节点处理写请求
用户通过客户端的应用程序向主节点发送一个写请求,如果主节点的缓冲池中没有该写请求需要操作的目标数据页,主节点先从存储节点中将该目标数据页读取到缓冲池中。然后主节点执行该写请求,对目标数据页中的数据进行更新操作,得到目标数据页对应的脏页。
主节点在执行该写请求的过程中,会生成重做日志,并在写请求执行完后将该重做日志写入内存的重做日志缓冲区中。主节点还会在将该重做日志写入重做日志缓冲区时,在重做日志中记录该重做日志的日志序列号(log sequence number,LSN),并将该LSN记录到修改目标数据页后得到的脏页中。
主节点在修改目标数据页之后,不需要将修改后得到的脏页发送到磁盘,只需要以预设的规则将重做日志发送到存储节点,例如,以预设周期将主节点中的重做日志发送给存储节点。存储节点能够根据目标数据页与该目标数据页对应重做日志进行回放,得到与主节点中脏页相同的数据。
示例性的,如图2所示,在某一时刻,存储节点中有一个页面标识为10的基准页,该基准页中记录的LSN是100,存储节点中的重做日志记录的最大LSN是200。此时主节点接收到一个写请求,该写请求需要将页面标识为10的目标数据页中的一个数据X的由5改为2。主节点在内存的缓冲池中没有查找到页面标识为10的数据页,则主节点先从存储节点中读取该目标数据页到内存的缓冲池中。然后主节点执行该写请求,将目标数据页中X的值改为2,得到页面标识为10的脏页,在此过程中产生该写请求对应的100字节的第一重做日志,该重做日志记录的数据包括:将页面标识为10的数据页中的数X的值改为2。如果在执行该写请求之前,主节点的重做日志缓冲区中重做日志记录的LSN的最大值为300,即主节点中LSN为201到300的重做日志还没有发给存储节点,主节点将该写请求的重做日志写入主节点的重做日志缓冲区后,主节点中重做日志记录对应的LSN的最大值将会是400,主节点将LSN等于400记录到上述脏页中,即此时主节点中页面标识为10的数据页中记录的X的值为2,LSN的值为400。
在执行完上述操作后,主节点继续执行其他读写请求,直至触发上述预设规则,主节点将重做日志缓冲区中LSN为200之后的重做日志发送给存储节点。由于重做日志中记录有页面标识,因此存储节点在需要得到页面标识为10的数据页的新数据时,能够在存储节点存储的重做日志中查找页面标识为10,且LSN大于100的目标重做日志,根据存储节点中的基准页与目标重做日志进行回放,即可得到该页面标识为10的数据页的最新数据。
2、从节点处理读请求
从节点是只处理读请求的节点,从节点的内存中存储有从存储节点读取的基准页、从存储节点中读取的重做日志,以及从节点根据从存储节点读取的重做日志与基准页进行回放得到的数据页。例如,存储节点中有一个页面标识为10的数据页,该数据页中记录的LSN的值为100,存储节点中的重做日志中记录有页表标识为10的日志的LSN是200。当从节点将页面标识为10,LSN为100的数据页读取的内存中,且页表标识为10的日志也被第一计算节点读取到了内存中,从节点可以保存该数据页,也可以根据该数据页与对应的日志进行回放,得到页面标识为10,LSN为200的数据页。
用户通过客户端的应用程序向从节点发送一个读请求,如果从节点的缓冲池中有读请求读取的目标数据,则从节点直接返回目标数据给客户端。如果从节点的缓冲池中没有该读请求读取的目标数据,从节点先从存储节点中将该目标数据所在的数据页和该数据页在存储节点中对应的日志读取到从节点,然后进行回放得到该数据页对应的最新数据,再获取目标数据返回给客户端。
在上述存储系统中,存储节点的存储资源是多计算节点、多数据库实例共享的,存储节点的资源有限,在根据基准页与重做日志进行回放时需要占用存储节点的资源,回放效率较低,并且还会影响数据库实例的业务。
本申请提供一种数据处理方法,应用于如图1所示的存储系统中,存储节点向第一计算节点发送获取请求,其中,获取请求用于向第一计算节点请求多个目标数据页,这些数据页是存储节点需要根据基准页和重做日志回放才能得到,第一计算节点是上述存储系统中的任意节点。第一计算节点接收到获取请求后,根据获取请求中如果第一计算节点中包括第一日志,且第一日志中记录有一段时间内对第一数据页的修改,则第一计算节点根据第一日志获取第二数据页,该第二数据页是在上述一段时间内对第一数据页进行修改后得到的数据页,然后将该第二数据页发送给存储节点。
通过从计算节点处获取存储节点中需要进行回放才能得到的数据页,能够降低存储节点中需要回放的数据量,降低存储节点进行回放时需要占用的资源。
下面分别介绍第一计算节点是存储系统的主节点以及第一计算节点是存储系统的从节点时,存储节点从第一计算节点中获取数据的流程。
如图3所示,图3是本申请提供的一种数据处理方法的流程示意图,该数据处理方法包括如下S301至S303。
S301、存储节点发送获取请求到第一计算节点。
存储节点中存储有基准页和重做日志,获取请求用于向第一计算节点请求存储节点中部分或全部基准页对应的目标数据页,目标数据页是在存储节点中基准页的基础上经过修改后的数据页。例如,存储节点中包括第一数据页,第一计算节点包括第一日志,第一日志记录有一段时间内对第一数据页的修改,获取请求需要获取所述第一数据页对应的第二数据页,第二数据页中包括第一日志中对第一数据页所做的修改。
上述第一计算节点是存储系统中负载较轻的计算节点,例如,当第一计算节点是从节点时,第一计算节点是从节点中负载低于其他从节点的计算节点。优选的,由于主节点的缓冲池中存储有数据库中数据页对应的最新的数据,因此,如果存储节点确定主节点的负载小于从节点的负载,或者主节点的负载与从节点的负载等级一样,则将上述获取请求优先发送给主节点。
存储节点能够通过存储节点与主节点交互的数据量确定主节点的负载状态,通过存储节点与从节点交互的数据量确定从节点的负载状态。对于主节点,主节点是能够处理读请求与写请求的计算节点,因此主节点会从存储节点中读取数据页,也会向存储节点中写入重做日志。存储节点可以统计预设时长内主节点从存储节点中读取的数据量以及主节点向存储节点写入的数据量,得到存储节点与主节点交互的数据量,进而确定主节点的负载状态。对于从节点,从节点只用于处理读请求,存储节点可以统计预设时长内从节点从存储节点读取的数据量,得到存储节点与主节点交互的数据量,进而确定从节点的负载状态。例如,将数据量划分为多个范围,每个范围对应一个负载等级。存储节点分别统计存储节点与各个计算节点之间交互的数据量,根据存储节点与一个计算节点之间交互的数据量所属的范围,确定该计算节点的负载等级。
在一种可能的实现方式中,计算节点还能够以预设周期向存储节点上报各自的资源占用率,例如处理器占用率或内存占用率。存储节点根据各个计算节点上报的资源占用率确定各个计算节点的负载等级。
S302、第一计算节点接收获取请求后,根据第一计算节点中的重做日志,获取存储节点需要的目标数据页,并将目标数据页发送给存储节点。
第一计算节点在接收到获取请求之后,根据第一计算节点中的重做日志,获取存储节点需要的目标数据页。例如,存储节点中包括第一数据页,获取请求需要获取第一数据页对应的目标数据页,则获取请求中包括用于指示第一数据页的信息,例如第一数据页的页面标识。计算节点在接收到获取请求之后,根据第一数据页的页面标识,查询到与第一数据页具有相同页面标识的第二数据页,以及记录有对第一数据页所做修改的第一日志。如果第一日志中对第一数据页的修改已经全部体现在第二数据页中,即根据第一数据页与第一日志回放得到的是第二数据页,则第二数据页即为第一数据页对应的目标数据页;如果第一日志中对第一数据页的修改没有全部体现在第二数据页中,则根据第二数据页与第一日志进行回放得到新的第二数据页,将新的第二数据页作为第一数据页对应的目标数据页。
其中,第一计算节点能够根据第一日志中的最大LSN与第二数据页中记录的LSN,确定第一日志中对第一数据页的修改是否已经全部体现在第二数据页中。如果第一日志中的最大LSN等于第二数据页中记录的LSN,则第一日志中对第一数据页的修改已经全部体现在第二数据页中;如果第一日志中的最大LSN大于第二数据页中记录的LSN,则第一日志中对第一数据页的修改没有全部体现在第二数据页中。
下面分别介绍第一计算节点是存储系统的主节点以及第一计算节点是存储系统的从节点时,第一计算节点获取存储节点需要的目标数据页的方法。
一、第一计算节点是存储系统的主节点
在第一计算节点是存储系统的主节点时,上述获取请求包括用于确定目标数据页的指示信息,目标数据页包括存储节点中部分或者全部基准页在主节点中对应的数据页。其中,目标数据页中的任一数据页的页面标识与存储节点中的一个基准页的页面标识相同,但是目标数据页中的任一数据页中的数据与对应的基准页不相同。第一计算节点根据指示信息确定存储节点需要的目标数据页的页面标识,并根据上述方法获取目标数据页。例如,上述存储节点包括第一数据页,指示信息中包括第一数据页的页面标识,第一计算节点接收到获取请求后,根据第一数据页的页面标识,获取第二数据页并发送给存储节点。下面具体介绍第一计算节点为存储系统的主节点,指示信息中包括不同类型信息时,第一计算节点获取存储节点需要的目标数据页的方法。
1.1、指示信息包括分区标识以及存储节点中的第二日志中的LSN的最大值LSNm
其中,LSNm指示第一计算节点发送给存储节点的目标数据页中的LSN的最大值;分区标识用于指示目标数据页的页面标识所属的分区,每个分区包括多个页面标识。即,存储节点请求第一计算节点发送给存储节点的目标数据页的页面标识所属的分区是指示信息中分区标识对应的分区,且目标数据页中LSN小于或等于LSNm。
第一计算节点接收到存储节点的获取请求之后,先根据分区标识确定属于该分区标识对应的目标分区的多个页面标识,然后根据这多个页面标识获取对应的多个数据页,然后过滤掉这多个数据页中LSN大于LSNm的数据页,得到最终的目标数据页。可以理解,第一计算节点也可以先根据数据页中的LSN获取数据页中LSN小于LSNm的数据页,然后过滤掉页面标识不属于目标分区的数据页,得到最终的目标数据页。
示例性的,存储节点中基准页的页面标识的范围是1~1000,存储节点中的第二日志中LSN最大值是600,即存储节点中存储有1000个数据页。第一计算节点将缓冲池的数据页按照页面标识的尾数划分为10个分区,即分区标识分别为0~9的10个分区;第一计算节点中的重做日志的LSN最大值是900,即第一计算节点中有300字节的日志没有写入存储节点。存储节点发送的获取请求中,上述指示信息包括分区标识1和日志序列号600,即存储节点请求的目标数据页的页面标识属于分区标识为1的分区,且目标数据页中的LSN小于或等于600。
第一计算节点接收到存储节点的获取请求之后,先根据上述分区标识1获取页面标识尾号为1的数据页,然后过滤掉数据页中LSN大于600的数据页,得到最终的目标数据页。例如,存储节点中有页面标识为121的第一数据页,第一计算节点中存在页面标识为121的第二数据页,如果该第二数据页中记录的LSN小于或等于600,则将第二数据页作为目标数据页;如果第二数据页中的LSN大于600,表示记录对第一数据页所做的修改的第一日志还没有发送到存储节点,因此不能将第二数据页发送到存储节点。
第一计算节点对数据页进行分区的方法包括但不限于以下方式:第一计算节点以页面标识的尾数为分区标识,将数据页按照页面标识的尾数进行划分,则能够将数据页划分为10个分区,每个分区中每个数据页的页面标识的尾数与分区标识相同,比如页面标识为123的数据页属于分区标识为3的分区;或者,将页面标识对i取余,将每个数据页根据页面标识对i取余的余数进行分区,能够将数据页划分为i个分区;或者,根据预设的散列算法将页面标识进行计算得到页面标识对应的散列值后,根据散列值的尾数对数据页进行分区,每个分区标识为该分区散列值的尾数。
可选地,第一计算节点在将数据页进行分区之后,可以给每个分区设置一个标记位,所述标记位用于指示对应分区内的页面标识表示的数据页是否被修改。例如,标记位的值包括0和1,当一个分区对应的标记位的值为0,表示该分区对应的数据页面中的数据与存储节点中具有相同页面标识的数据页中的数据是相同的,比如,该分区内的数据页是从存储节点中读取且还没有被修改,或者该分区对应的数据页在上一次接收到获取请求之后,已经发送给存储节点且之后没有被修改。当该分区中一个数据页的数据被修改,则将该分区对应的标记位置1。第一计算节点在接收到上述获取请求,先根据分区标识对应的标记位,确定分区标识指示的分区对应的数据页是否有修改,如果确定没有修改,则第一计算节点不再根据分区标识和LSN确定目标数据页,如果确定有修改,则第一计算节点根据分区标识和LSN确定目标数据页。
1.2、指示信息包括页面标识范围以及存储节点中的第二日志中的LSN的最大值LSNm
其中,LSNm指示主节点发送给存储节点的目标数据页中的LSN的最大值;页面标识范围用于指示目标数据页的页面标识所属的范围。
第一计算节点接收到获取请求之后,根据页面标识范围获取页面标识属于该页面标识范围的数据页,然后过滤掉获取的数据页中LSN大于LSNm的数据页,得到最终的目标数据页。可以理解,第一计算节点也可以先根据每个数据页中的LSN获取数据页中LSN小于LSNm的数据页,然后过滤掉页面标识不属于页面标识范围的数据页,得到最终的目标数据页。
上述页面标识范围可以是一个区间范围,例如,页面标识范围为[100,200],表示存储节点需要页面标识大于等于100且小于等于200的数据页;页面标识范围也可以是多个目标页面标识的集合。其中,目标页面标识可以是存储节点根据存储节点中每个数据页中的LSN确定的,也可以是存储节点根据每个数据页对应的日志长度确定的。例如,存储节点将存储节点中各个数据页中的LSN按照从小到大的顺序进行排序,数据页中的LSN较小,说明该数据页可能较长时间没有更新数据,比如存储节点中的第二日志中LSN的最大值是1500,但是页面标识为20的数据页中LSN的值为150,说明页面标识为20的数据页已经较长时间没有更新,因此将排序在前的预设数量的LSN对应的数据页的页面标识作为目标页面标识;存储节点还可以根据每个数据页的页面标识与第二日志中记录的页面标识,获取每个页面对应的日志的长度,然后将日志长度较长的预设数据量的数据页对应的页面标识作为目标页面标识。
示例性的,存储节点中基准页的页面标识的范围是1~1000,存储节点中的第二日志中LSN最大值是1500,存储节点确定页面标识为68、97、232、387、663的数据页对应的日志较长,因此将这5个页面标识确定为目标页面标识。存储节点发送的获取请求中,指示信息包括上述5个页面标识和日志序列号1500,即存储节点请求的目标数据页的页面标识为上述5个页面标识,且目标数据页中的LSN小于或等于1500。
第一计算节点接收到存储节点的获取请求之后,先获取上述5个页面标识对应的数据页,然后过滤掉数据页中LSN大于1500的数据页,得到最终的目标数据页。例如,存储节点中有页面标识为232的第一数据页,第一计算节点中存在页面标识为232的第二数据页,如果该第二数据页中记录的LSN小于或等于1500,则将第二数据页作为目标数据页;如果第二数据页中的LSN大于1500,则表示记录对第一数据页所做的修改的第一日志还没有发送到存储节点,不能将第二数据页发送到存储节点。
可以理解,指示信息还可以包括分区标识、页面标识范围以及存储节点中的第二日志中的LSN的最大值LSNm。
第一计算节点接收到获取请求之后,根据分区标识获取页面标识属于该分区标识的数据页,根据页面标识范围获取页面标识属于该页面标识范围的数据页,然后过滤掉获取的数据页中LSN大于LSNm的数据页,得到最终的目标数据页。
二、第一计算节点是存储系统的从节点
在第一计算节点是存储系统的从节点时,上述获取请求包括用于确定目标数据页的指示信息,目标数据页包括存储节点中部分或者全部基准页在从节点中对应的数据页。其中,目标数据页中的任一数据页的页面标识与存储节点中的一个基准页的页面标识相同,但是目标数据页中的任一数据页中的数据与对应的基准页不相同。第一计算节点根据指示信息确定存储节点需要的目标数据页的页面标识,并根据上述方法获取目标数据页。例如,上述存储节点包括第一数据页,指示信息中包括第一数据页的页面标识,第一计算节点接收到获取请求后,根据第一数据页的页面标识,获取第二数据页并发送给存储节点。
下面具体介绍第一计算节点为存储系统的从节点,指示信息中包括不同类型信息时,第一计算节点获取存储节点需要的目标数据页的方法。
2.1、指示信息包括分区标识以及存储节点中的第二日志中的LSN的最大值LSNm
其中,第一计算节点是从节点时,对数据页进行分区的方法可以参照上述第一计算节点为主节点时的分区方法;LSNm指示主节点发送给存储节点的目标数据页中的LSN必须小于或等于LSNm;分区标识用于指示目标数据页的页面标识所属的分区,每个分区包括多个页面标识。即,存储节点请求第一计算节点发送给存储节点的目标数据页的页面标识所属的分区是指示信息中分区标识对应的分区,且目标数据页中LSN小于或等于LSNm。
第一计算节点接收到存储节点的获取请求之后,先根据分区标识确定属于目标分区的一个或多个数据页,得到第一数据页集合。其中,目标分区是指示信息中分区标识对应的分区。然后第一计算节点查询内存中是否有第一数据页集合中某个数据页对应的重做日志,如果有任意一个数据页对应的重做日志,根据该数据页和对应的重做日志进行回放,得到该数据页对应的新的数据页,通过上述方法得到更新后的第一数据页集合。再过滤掉更新后的第一数据页集合中LSN大于LSNm的数据页,得到最终的目标数据页。
示例性的,存储节点中基准页的页面标识的范围是1~1000,存储节点中的第二日志中LSN最大值是600,即存储节点中存储有1000个数据页。第一计算节点将缓冲区的数据页按照页面标识的尾数划分为10个分区,即分区标识分别为0~9的10个分区。存储节点发送的获取请求中,指示信息包括分区标识1和日志序列号600,即存储节点请求的目标数据页的页面标识属于分区标识为1的分区,且目标数据页中的LSN小于或等于600。
第一计算节点接收到存储节点的获取请求之后,先根据上述分区标识1获取页面标识尾号为1的数据页,得到第一数据页集合。例如第一数据页集合中有页面标识为121的第三数据页,该第三数据页的页面标识与存储节点中第一数据页的页面标识相同,且第一计算节点中的重做日志中存在第一日志,该第一日志记录有对第一数据页的修改,则第一计算节点根据第三数据页与第一日志进行回放,得到第二数据页,其中,第三数据页是第一数据页集合中的任意一个数据页;如果第一计算节点中没有上述第一日志,则不进行更新。根据上述方法对第一数据页集合中的每个数据页进行更新之后,得到更新后的第一数据页集合。然后过滤掉第一数据页集合中数据页中LSN大于600的数据页,得到最终的目标数据页。
可选地,第一计算节点也可以将数据页进行分区之后,可以给每个分区设置一个标记位,所述标记位用于指示对应分区内的页面标识表示的数据页是否被修改。例如,标记位的值包括0和1,当一个分区对应的标记位的值为0,表示该分区对应的数据页面中的数据与存储节点中具有相同页面标识的数据页中的数据是相同的,比如,该分区内的数据页都是从存储节点中读取到第一计算节点中之后没有根据对应的日志进行回放,或者该分区对应的数据页在上一次接收到获取请求之后,已经发送给存储节点且之后没有被修改。当该分区中一个数据页的数据被修改,则将该分区对应的标记位置1。第一计算节点在接收到上述获取请求,先根据分区标识对应的标记位,确定分区标识指示的分区对应的数据页是否有修改,如果确定没有修改,则第一计算节点不再根据分区标识和LSN确定目标数据页,如果确定有修改,则第一计算节点根据分区标识和LSN确定目标数据页。
2.2、指示信息包括页面标识范围以及存储节点中的第二日志中的LSN的最大值LSNm
其中,LSNm指示主节点发送给存储节点的目标数据页中的LSN必须小于或等于LSNm;页面标识范围用于指示目标数据页的页面标识所属的范围。
第一计算节点接收到存储节点的获取请求之后,先根据页面标识范围获取页面标识属于该页面标识范围的一个或多个数据页,得到第二数据页集合。然后第一计算节点查询内存中是否有第二数据页集合中某个数据页对应的重做日志,如果有任意一个数据页对应的重做日志,根据该数据页和对应的重做日志进行回放,得到该数据页对应的新的数据页,得到更新后的第二数据页集合。再过滤掉更新后的第二数据页集合中LSN大于LSNm的数据页,得到最终的目标数据页。
上述页面标识范围可以是一个区间范围,例如,页面标识范围为[100,200],表示存储节点需要页面标识大于等于100且小于等于200的数据页;页面标识范围也可以是多个目标页面标识的集合。存储节点确定页面标识范围的方法可以参照上述1.2中的相关描述,在此不再赘述。
示例性的,存储节点中基准页的页面标识的范围是1~1000,存储节点中的第二日志中LSN最大值是1500,存储节点确定的页面标识范围是[200,300]。存储节点发送的获取请求中,指示信息包括页面标识范围[200,300]和日志序列号1500,即存储节点请求的目标数据页的页面标识需要大于或等于200小于或等于300,且目标数据页中的LSN小于或等于1500。
第一计算节点接收到存储节点的获取请求之后,先根据页面标识范围获取页面标识属于[200,300]的一个或多个数据页,得到第二数据页集合。如果第二数据页集合中有页面标识为255的第三数据页,该第三数据页的页面标识与存储节点中第一数据页的页面标识相同,且第一计算节点中的重做日志中存在记录的页面标识为255的第一日志,则第一计算节点根据第三数据页与第一日志进行回放,得到第二数据页,其中,第一数据页是第一数据页集合中的任意一个数据页;如果第一计算节点中没有第一日志,则不进行更新;根据上述方法对第二数据页集合中的每个数据页进行更新之后,得到更新后的第二数据页集合。然后过滤掉第二数据页集合中数据页中LSN大于1500的数据页,得到最终的目标数据页。
2.3、指示信息包括目标基准页以及存储节点中的第二日志中的LSN的最大值LSNm
第一计算节点是从节点时,第一计算节点中的日志是从存储节点中读取的,存储节点能够记录第一计算节点读取到第一计算机点中的日志对应的最小LSN(minLSN)和最大LSN(maxLSN)。存储节点可以根据minLSN和maxLSN之间的日志中记录的页面标识,确定minLSN和maxLSN之间的日志对应的基准页,即minLSN和maxLSN之间的日志记录了对哪些基准页的修改,然后将这些基准页作为目标基准页。存储节点确定目标基准页之后,向第一计算节点发送获取请求,其中,获取请求包括目标基准页以及存储节点中的第二日志中的LSN的最大值LSNm。
第一计算节点接收到存储节点的获取请求之后,根据获取请求中的目标基准页中的页面标识,查找到每个基准页对应的日志,然后根据每个基准页以及对应的重做日志进行回放,得到每个基准页对应的新的数据页,得到第三数据页集合。再过滤掉第三数据页集合中LSN大于LSNm的数据页,得到最终的目标数据页。
示例性的,存储节点中基准页的页面标识的范围是1~1000,存储节点中的第二日志中LSN最大值是1500。存储节点确定第一计算节点从存储节点中读取的重做日志的minLSN是100,maxLSN是300,存储节点获取LSN为100至LSN为300的日志中记录的页面标识,例如包括10个页面标识,存储节点获取存储节点中这10个页面标识对应的基准页,然后将这10个基准页以及存储节点中的第二日志中的LSN的最大值LSNm携带于获取请求中发送给第一计算节点。
第一计算节点接收到获取请求之后,先根据获取请求中的每个基准页的页面标识,查找到每个基准页对应的日志,然后根据基准页与第一计算节点中对应的重做日志,得到每个基准页对应的新的数据页,即第三数据页集合。例如,获取请求中有页面标识为50的基准页,第一计算节点在内存中查找到页面标识为50的基准页对应的日志,然后根据该基准页和对应的日志进行回放得到该基准页对应的新的数据页。第一计算节点再过滤掉第三数据页集合中LSN大于1500的数据页,得到最终的目标数据页。
S303、存储节点接收第一计算节点发送的目标数据页并存储。
存储节点接收第一计算节点发送的目标数据页,将目标数据页进行持久化存储。
在一种可能的实现方式中,存储节点能够根据目标数据页删除存储节点中对应的基准页和根据基准页生成目标数据页的日志。具体的,目标数据页中记录有页面标识和LSN,例如一个目标数据页的页面标识为100,LSN为200,存储节点可以查找到存储节点中页面标识为100的基准页,该基准页的LSN为150,如果存储系统中当前没有活跃事务(activetransaction)需要该页面标识对应的基准页,则存储节点能够查找到该基准页,删除该基准页,并查找到页面标识为100的数据页对应的日志中LSN小于200的日志,并进行删除。
存储节点通过将部分回放任务发送给负载较轻的计算节点,由计算节点根据数据页和重做日志进行回放得到数据页对应的最新的数据,能够降低存储节点处理的数据量,降低存储节点的负载。
需要说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
本领域的技术人员根据以上描述的内容,能够想到的其他合理的步骤组合,也属于本发明的保护范围内。其次,本领域技术人员也应该熟悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
图4是本申请提供的一种存储系统的结构示意图,该存储系统包括存储装置410以及一个或多个计算装置420。其中,存储装置410可以是图1中的存储节点,一个或多个计算装置420可以是图1中的计算节点,且计算装置420中至少有一个计算装置用于实现上述计算节点中主节点的功能。存储装置410包括处理单元411、通信单元412与存储单元413,计算装置420包括处理单元421、通信单元422与存储单元423。
上述存储装置410用于实现上述图3所描述的方法实施例中存储节点的功能,具体的,存储单元413用于存储数据页和重做日志;
处理单元411用于在存储装置410需要计算装置实现根据数据页与重做日志进行回放的操作时,生成上述获取请求,并确定发送给计算节点中的主节点还是从节等。具体的,处理单元411实现的操作可以参照上述图3所示的方法实施例中存储节点的实现的操作,在此不再赘述。
通信单元412用于与上述一个或多个计算装置420中的通信单元422进行通信与交互。例如,通信单元412接收主节点通过通信单元发送的重做日志或目标数据页,接收从节点通过通信单元发送的目标数据页,向主节点或从节点发送获取请求等。具体的,通信单元412实现的操作可以参照上述图3所示的方法实施例中存储节点中接收数据或发送数据的操作,在此不再赘述。
当计算装置420用于实现上述计算节点中主节点的功能时,计算装置420中的存储单元423用于存储从存储装置410中读取的基准页、根据写请求对基准页进行修改后生成的脏页以及执行写请求后生成的日志等。
处理单元421用于根据存储装置410发送的获取请求,从内存中获取获取请求所指示的目标数据页,还可以用于执行客户端的读请求与写请求,生成重做日志等,具体的,处理单元411实现的操作可以参照上述方法实施例中主节点所实现的操作,在此不再赘述。
通信单元422用于与存储装置410中的通信单元412进行通信与交互,还可以接收客户端的读请求与写请求等,具体的,通信单元422实现的操作可以参照方法实施例中主节点接收数据或发送数据的操作,在此不再赘述。
当计算装置420用于实现上述计算节点中从节点的功能时,计算装置420中的存储单元423用于存储从存储装置410中读取的基准页、从存储装置410中读取的重做日志、根据基准页与重做日志进行回放得到的数据页等。
处理单元421用于根据存储装置410发送的获取请求,根据存储单元423中的数据页和重做日志得到获取请求所指示的目标数据页,还可以用于执行客户端的读请求等,具体的,处理单元411实现的操作可以参照上述方法实施例中从节点所实现的操作,在此不再赘述。
通信单元422用于与存储装置410中的通信单元412进行通信与交互,还可以接收客户端的读请求与写请求等,具体的,通信单元422实现的操作可以参照方法实施例中从节点接收数据或发送数据的操作,在此不再赘述。
图5是本申请提供的一种计算设备的硬件结构示意图,如图5所示,计算设备500包括:处理器510、通信接口520以及存储器530。其中,处理器510、通信接口520以及存储器530可以通过总线540相互连接。
本申请实施例以通过总线540连接为例,总线540可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线540可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器510包括至少一个通用处理器,处理器510可以有多种实现形式,例如中央处理器(Central Processing Unit,CPU),或图像处理器(graphics processing unit,GPU)、或CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(Application-Specific Integrated Circuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(Complex Programmable LogicDevice,CPLD)、现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)、通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。
存储器530用于存储程序代码和数据,存储的程序代码以便于处理器510调用存储器530中存储的程序代码执行上述方法实施例中的操作步骤。此外,计算设备500可能包含相比于图5展示的更多或者更少的组件,或者有不同的组件配置方式。
计算设备500可以是上述存储节点、计算节点中的主节点或计算节点中的从节点。
当计算设备500是上述存储节点时,上述程序代码包括一个或多个软件模块。这一个或多个软件模块为图4所示的存储装置410的软件模块,计算设备500执行程序代码具体可用于实现上述图3所示的方法实施例中存储节点执行的操作,在此不再进行赘述。
当计算设备500是上述计算节点时,上述程序代码包括一个或多个软件模块。这一个或多个软件模块为图4所示的计算装置420的软件模块,计算设备500执行程序代码具体可用于实现上述图3所示的方法实施例中计算节点执行的操作,在此不再进行赘述。
存储器530可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器530也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器530还可以包括上述种类的组合。
通信接口520可以为内部接口(例如高速串行计算机扩展总线(PeripheralComponent Interconnect express,PCIe)总线接口)、有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他计算设备或模块进行通信。
需要说明的,图5仅仅是本申请实施例的一种可能的实现方式,实际应用中,计算设备还可以包括更多或更少的部件,这里不作限制。关于本申请实施例中未示出或未描述的内容,可参见前述图1-图4实施例中的相关阐述,这里不再赘述。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在处理器上运行时,图1-图4所示的方法流程得以实现。
本申请实施例还提供一种计算机程序产品,当计算机程序产品在处理器上运行时,图1-图4所示的方法流程得以实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括至少一个计算机指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DigitalSubscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含至少一个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(Digital VideoDisc,DVD)、或者半导体介质。半导体介质可以是SSD。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (17)
1.一种存储系统,其特征在于,包括第一计算节点和存储节点,所述第一计算节点包括第一日志,所述第一日志用于记录一段时间内对第一数据页所做的修改;
所述存储节点用于发送获取请求至所述第一计算节点;
所述第一计算节点在接收到所述获取请求后,用于根据所述第一日志获取包括所述一段时间内对所述第一数据页所做的修改的第二数据页;
所述第一计算节点用于发送所述第二数据页至所述存储节点。
2.根据权利要求1所述的系统,其特征在于,所述存储系统还包括第二计算节点,所述第一计算节点的负载小于所述第二计算节点的负载。
3.根据权利要求1所述的系统,其特征在于,所述存储系统还包括第二计算节点,所述第一计算节点为主节点,所述主节点用于修改所述第一数据页,所述第二计算节点为从节点,所述从节点用于读取所述第一数据页,所述第一计算节点与所述第二计算节点的负载属于同一等级。
4.根据权利要求1或2所述的系统,其特征在于,当所述第一计算节点为所述存储系统的主节点时,所述主节点用于修改所述第一数据页,所述获取请求包括用于确定所述第二数据页的信息;
所述第一计算节点用于根据所述信息确定所述第二数据页的标识,并根据所述第二数据页的标识从所述第一计算节点的内存中获取所述第二数据页,所述第一数据页的标识与所述第二数据页的标识相同。
5.根据权利要求2所述的系统,其特征在于,所述第一计算节点为从节点时,所述从节点用于从所述存储节点获取所述第一数据页和所述第一日志,所述获取请求包括用于确定所述第二数据页的信息;
所述第一计算节点用于根据所述信息确定所述第一数据页的标识,根据所述第一数据页的标识获取所述第一数据页和所述第一日志,并根据所述第一数据页和所述第一日志得到所述第二数据页,所述第一数据页的标识与所述第二数据页的标识相同。
6.一种存储节点,连接至第一计算节点,其特征在于,所述存储节点包括:
处理单元,用于发送获取请求,所述获取请求包括用于确定第二数据页的信息,所述获取请求用于指示所述第一计算节点根据所述第一计算节点中存储的第一日志及所述用于确定第二数据页的信息确定所述第二数据页,所述第一日志中记录了一段时间内对所述第一数据页所做的修改;
通信单元,用于接收所述第一计算节点发送的所述第二数据页。
7.根据权利要求6所述的存储节点,其特征在于,所述处理单元还用于获取与所述存储节点连接的多个计算节点的负载,并确定负载最小的计算节点为所述第一计算节点。
8.根据权利要求6所述的存储节点,其特征在于,所述处理单元还用于获取与所述存储节点连接的多个计算节点的负载,在确定多个计算节点的负载属于同一等级时,从属于同一等级的计算节点中确定主节点,并确定所述主节点为所述第一计算节点。
9.一种计算节点,其特征在于,所述计算节点包括第一日志,所述第一日志用于记录一段时间内对第一数据页所做的修改,包括:
通信单元,用于接收存储节点发送的获取请求,所述获取请求包括用于确定第二数据页的信息,所述第二数据页包括所述第一日志中对所述第一数据页所做的修改;
处理单元,用于在接收到所述获取请求后,根据所述用于确定第二数据页的信息及第一日志获取包括所述一段时间内对所述第一数据页所做的修改的第二数据页;
所述通信单元,还用于发送所述第二数据页至所述存储节点。
10.根据权利要求9所述的计算节点,其特征在于,所述计算节点为存储系统的主节点,所述主节点用于修改所述第一数据页;或者,所述计算节点为所述存储系统的从节点,所述从节点用于从所述存储节点获取所述第一数据页和所述第一日志。
11.根据权利要求10所述的计算节点,当所述计算节点为所述存储系统的主节点时,所述处理单元具体用于:
根据所述信息确定所述第二数据页的标识,并根据所述第二数据页的标识从所述计算节点的内存中获取所述第二数据页,所述第一数据页的标识与所述第二数据页的标识相同。
12.根据权利要求10所述的计算节点,其特征在于,当所述计算节点为所述存储系统的从节点时,所述处理单元具体用于:
所述第一计算节点根据所述信息确定所述第一数据页的标识,根据所述第一数据页的标识获取所述第一数据页和所述第一日志,并根据所述第一数据页和所述第一日志得到所述第二数据页,所述第一数据页的标识与所述第二数据页的标识相同。
13.一种数据处理方法,其特征在于,包括:
存储节点发送获取请求至第一计算节点,其中,所述获取请求包括用于确定第二数据页的信息;
第一计算节点在接收到所述获取请求后,根据所述第一计算节点中存储的第一日志及所述用于确定第二数据页的信息确定所述第二数据页,所述第一日志中记录了一段时间内对所述第一数据页所做的修改;
所述第一计算节点发送所述第二数据页至所述存储节点。
14.根据权利要求13所述的方法,其特征在于,所述存储节点发送获取请求至所述第一计算节点之前,还包括:
所述存储节点获取与所述存储节点连接的多个计算节点的负载,并确定负载最小的计算节点为所述第一计算节点。
15.根据权利要求13所述的方法,其特征在于,所述存储节点发送获取请求至所述第一计算节点之前,还包括:
所述存储节点获取与所述存储节点连接的多个计算节点的负载,在确定多个计算节点的负载属于同一等级时,从负载属于同一等级的计算节点中确定主节点,并确定所述主节点为所述第一计算节点。
16.根据权利要求13或14所述的方法,其特征在于,所述根据所述第一计算节点中存储的第一日志及所述用于确定第二数据页的信息确定所述第二数据页,包括:
根据所述用于确定第二数据页的信息确定所述第二数据页的标识,并根据所述第二数据页的标识从所述计算节点的内存中获取所述第二数据页,所述第一数据页的标识与所述第二数据页的标识相同。
17.根据权利要求13或14所述的方法,其特征在于,所述根据所述第一计算节点中存储的第一日志及所述用于确定第二数据页的信息确定所述第二数据页,包括:
所述第一计算节点根据所述用于确定第二数据页的信息确定所述第一数据页的标识,根据所述第一数据页的标识获取所述第一数据页和所述第一日志,并根据所述第一数据页和所述第一日志得到所述第二数据页,所述第一数据页的标识与所述第二数据页的标识相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110931054.XA CN115904211A (zh) | 2021-08-13 | 2021-08-13 | 一种存储系统、数据处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110931054.XA CN115904211A (zh) | 2021-08-13 | 2021-08-13 | 一种存储系统、数据处理方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904211A true CN115904211A (zh) | 2023-04-04 |
Family
ID=86496033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110931054.XA Pending CN115904211A (zh) | 2021-08-13 | 2021-08-13 | 一种存储系统、数据处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115904211A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117873405A (zh) * | 2024-03-11 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
-
2021
- 2021-08-13 CN CN202110931054.XA patent/CN115904211A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117873405A (zh) * | 2024-03-11 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
CN117873405B (zh) * | 2024-03-11 | 2024-07-09 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11474972B2 (en) | Metadata query method and apparatus | |
US11461027B2 (en) | Deduplication-aware load balancing in distributed storage systems | |
CN109522243B (zh) | 一种全闪存储中元数据缓存管理方法、装置及存储介质 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
CN107368260A (zh) | 基于分布式系统的存储空间整理方法、装置及系统 | |
CN108614837B (zh) | 文件存储和检索的方法及装置 | |
WO2020199760A1 (zh) | 数据存储方法、存储器和服务器 | |
US9355121B1 (en) | Segregating data and metadata in a file system | |
US11314454B2 (en) | Method and apparatus for managing storage device in storage system | |
CN104503703B (zh) | 缓存的处理方法和装置 | |
WO2016192057A1 (zh) | 索引表的更新方法和设备 | |
US10824610B2 (en) | Balancing write amplification and space amplification in buffer trees | |
US9934248B2 (en) | Computer system and data management method | |
WO2022257685A1 (zh) | 存储系统、网卡、处理器、数据访问方法、装置及系统 | |
CN115840731A (zh) | 文件处理方法、计算设备及计算机存储介质 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN115904211A (zh) | 一种存储系统、数据处理方法及相关设备 | |
CN112711564B (zh) | 合并处理方法以及相关设备 | |
CN111752941B (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
CN108804571B (zh) | 一种数据存储方法、装置以及设备 | |
CN115509437A (zh) | 存储系统、网卡、处理器、数据访问方法、装置及系统 | |
US10997144B2 (en) | Reducing write amplification in buffer trees | |
CN113742378A (zh) | 数据查询及存储方法、相关设备及存储介质 | |
CN118567577B (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 |