CN116414842A - 数据存储系统、节点、方法及存储介质 - Google Patents
数据存储系统、节点、方法及存储介质 Download PDFInfo
- Publication number
- CN116414842A CN116414842A CN202111672671.9A CN202111672671A CN116414842A CN 116414842 A CN116414842 A CN 116414842A CN 202111672671 A CN202111672671 A CN 202111672671A CN 116414842 A CN116414842 A CN 116414842A
- Authority
- CN
- China
- Prior art keywords
- data page
- target file
- target
- version
- 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
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000013500 data storage Methods 0.000 title claims abstract description 66
- 238000003672 processing method Methods 0.000 claims description 37
- 230000006870 function Effects 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 17
- 238000012545 processing Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 14
- 230000009977 dual effect Effects 0.000 description 8
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012966 insertion method Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 230000002195 synergetic effect Effects 0.000 description 1
Images
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
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)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储系统、节点、方法及存储介质,属于存储技术领域。该数据存储系统包括主节点和至少一个备节点,其中,主节点能够将数据页面的脏页面写入第一目标文件,使得备节点响应于对该数据页面的读请求,从第一目标文件中获取到相应版本的数据页面。在这一过程中,由于第一目标文件中存储了该数据页面的至少一个版本,因此备节点能够从该第一目标文件中获取到准确版本的数据页面,从而确保了主备节点的数据同步与一致性。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种数据存储系统、节点、方法及存储介质。
背景技术
在信息量呈指数爆炸式增长的当今时代,共享存储架构作为一种新的数据库发展趋势,被广泛应用于各行各业。在共享存储架构中,通常包括主节点和至少一个备节点,均对外提供服务,其中,主节点对应数据库的主机,对外提供读写服务,备节点(亦称为只读节点),是主节点的数据同步节点,对外提供只读服务,主节点和备节点共享一份底层数据。
然而,在共享存储架构中,由于主备节点无法互相感知各自的操作,导致备节点从共享存储中可能获取不到期望的数据,从而无法保证主备节点的数据同步与一致性。例如,当备节点执行读请求时,主节点刚好对相同数据完成了写操作,将会导致备节点读取到错误的数据。又例如,当备节点执行读请求时,主节点正在对相同数据进行写操作,将会导致备节点读取失败。
因此,亟需一种能够有效保证主备节点的数据同步与一致性的数据存储系统。
发明内容
本申请实施例提供了一种数据存储系统、节点、方法及存储介质,能够有效保证主备节点的数据同步与一致性。该技术方案如下:
第一方面,提供了一种数据存储系统,该系统包括主节点和至少一个备节点;
该主节点,用于响应于对数据页面的写请求,将该数据页面的脏页面写入第一目标文件,该第一目标文件用于存储该数据页面的至少一个版本;
该备节点,用于响应于对该数据页面的读请求,基于该第一目标文件和该数据页面的至少一个版本在该第一目标文件中的位置信息,获取该数据页面的目标版本。
在该数据存储系统中,主节点能够将数据页面的脏页面写入第一目标文件,使得备节点响应于对该数据页面的读请求,从第一目标文件中获取到相应版本的数据页面。在这一过程中,由于第一目标文件中存储了该数据页面的至少一个版本,因此备节点能够从该第一目标文件中获取到准确版本的数据页面,从而确保了主备节点的数据同步与一致性。
在一些实施例中,该主节点,还用于:
将该数据页面的脏页面写入数据存储系统的共享存储空间。
通过这种方式,主节点在将数据页面的脏页面写入第一目标文件之后,再将该数据页面的脏页面写入共享存储空间中,使得主节点在对数据页面的脏页面进行持久化存储前,通过写入目标文件的方式对其进行存储,便于备节点响应于对该数据页面的读请求,从目标文件中获取到准确版本的数据页面,确保主备节点的数据同步与一致性。
在一些实施例中,该主节点,还用于:
接收该备节点发送的通知消息,该通知消息指示第二目标文件已失效;
基于该通知消息,删除该第二目标文件。
通过这种方式,备节点能够在确定存在已失效目标文件的情况下,通知主节点删除相应的目标文件,从而释放存储空间,实现数据页面回收的目的。
在一些实施例中,该备节点,还用于:
向该主节点发送该通知消息。
在一些实施例中,该主节点,还用于:
基于该通知消息,校验该第二目标文件是否失效,在校验结果指示该第二目标文件已失效的情况下,删除该第二目标文件。
通过这种方式,主节点能够在接收到该通知消息的情况下,自行校验该第二目标文件是否已失效,以避免误删目标文件。
在一些实施例中,该主节点,还用于:
删除至少一个第三目标文件,该第三目标文件的创建时间早于目标时间。
通过这种方式,主节点能够基于已有目标文件的创建时间,删除部分目标文件,以释放存储空间。
在一些实施例中,该主节点,还用于:
在已有目标文件的数量大于或等于目标阈值的情况下,删除至少一个第四目标文件。
通过这种方式,主节点能够基于已有目标文件的数量,删除部分目标文件,以释放存储空间。
在一些实施例中,该备节点,用于:
响应于该读请求,基于该第一目标文件和该数据页面的单向链表,获取该数据页面的目标版本,该单向链表指示该数据页面的至少一个版本对应的日志序列号和该数据页面的至少一个版本在该第一目标文件中的位置信息。
通过这种方式,由于数据页面的单向链表中存储了数据页面的脏页面对应的日志序列号和该数据页面的脏页面在第一目标文件中的位置信息,因此,该备节点能够响应于对该数据页面的读请求,基于该单向链表,定位到准确版本的数据页面在目标文件的位置信息,从而获取到准确版本的数据页面,确保主备节点的数据同步与一致性。
在一些实施例中,该备节点,还用于:
基于该第一目标文件,获取该数据页面的脏页面对应的日志序列号和该数据页面的脏页面在该第一目标文件中的位置信息,将该数据页面的脏页面对应的日志序列号和该数据页面的脏页面在该第一目标文件中的位置信息,添加到该数据页面的单向链表中。
通过这种方式,备节点采用单向链表的形式,对数据页面的脏页面对应的日志序列号和该数据页面的脏页面在第一目标文件中的位置信息进行了存储,便于备节点响应于对该数据页面的读请求,基于该单向链表,定位到准确版本的数据页面在目标文件的位置信息,从而获取到准确版本的数据页面,确保主备节点的数据同步与一致性。
在一些实施例中,该单向链表包括目标索引,该目标索引用于指示该数据页面的至少一个版本在同一目标文件中。
通过这种方式,能够在后续删除备节点中存储的无效数据的情况下,加快查找速度,提高数据处理效率,而且,通过这种方式,也便于备节点在后续获取相应版本的数据页面时,能够通过该目标索引,快速定位到想要的数据页面的版本,从而提升数据处理效率。
在一些实施例中,该备节点,还用于:
在该备节点的内存空间中不存在该数据页面的目标版本的情况下,基于该第一目标文件和该数据页面的至少一个版本在该第一目标文件中的位置信息,获取该数据页面的目标版本。
通过先在备节点的内存空间中获取该数据页面的目标版本,能够在备节点的内存空间存在该数据页面的目标版本的情况下,减少备节点与共享存储空间之间的数据交互,提高数据处理效率。
在一些实施例中,该备节点,还用于:
在基于该第一目标文件未获取到该数据页面的目标版本的情况下,从该数据存储系统的共享存储空间中获取该数据页面的第一版本。
通过这种方式,能够在备节点响应于对该数据页面的读请求且目标文件中不存在相应版本的情况下,从共享存储空间中获取第一版本,确保备节点能够获取到该数据页面。
在一些实施例中,该备节点,还用于:
在获取到的该数据页面的第一版本符合目标条件的情况下,从该第一目标文件中获取该数据页面的目标版本。
由于备节点在从共享存储空间中获取该数据页面的第一版本的过程中,主节点有可能正在将数据页面的目标版本写入第一目标文件,因此,通过这种方式,能够确保备节点获取到相应版本的数据页面。
在一些实施例中,该备节点,还用于:
从该备节点的内存空间中删除目标日志序列号对应的数据页面,该目标日志序列号小于已有目标文件的最大日志序列号。
通过这种方式,备节点能够及时释放备节点的存储空间,也确保了备节点能够从已有目标文件中获取到这部分数据页面。
第二方面,本申请实施例提供了一种主节点,该主节点包括处理器和存储器,该存储器用于存储至少一段程序代码,该至少一段程序代码由该处理器加载并实现如上述第一方面或第一方面的任意一种可能的实现方式中主节点的功能。
第三方面,本申请实施例提供了一种备节点,该备节点包括处理器和存储器,该存储器用于存储至少一段程序代码,该至少一段程序代码由该处理器加载并实现如上述第一方面或第一方面的任意一种可能的实现方式中备节点的功能。
第四方面,本申请实施例提供了一种数据处理方法,应用于数据存储系统,该系统包括主节点和至少一个备节点,该方法由该主节点执行,该方法包括:
响应于对数据页面的写请求,将该数据页面的脏页面写入第一目标文件,该第一目标文件用于存储该数据页面的至少一个版本。
在一些实施例中,该方法还包括:
接收该备节点发送的通知消息,该通知消息指示第二目标文件已失效;
基于该通知消息,删除该第二目标文件。
在一些实施例中,该方法还包括:
基于该通知消息,校验该第二目标文件是否失效,在校验结果指示该第二目标文件已失效的情况下,删除该第二目标文件。
在一些实施例中,该方法还包括:
删除至少一个第三目标文件,该第三目标文件的创建时间早于目标时间。
在一些实施例中,该方法还包括:
在已有目标文件的数量大于或等于目标阈值的情况下,删除至少一个第四目标文件。
第五方面,本申请实施例提供了一种数据处理方法,应用于数据存储系统,该系统包括主节点和至少一个备节点,该方法由该备节点执行,该方法包括:
响应于对数据页面的读请求,基于第一目标文件和该数据页面的至少一个版本在该第一目标文件中的位置信息,获取该数据页面的目标版本,该第一目标文件用于存储该数据页面的至少一个版本。
在一些实施例中,该方法还包括:
向该主节点发送通知消息,该通知消息指示第二目标文件已失效。
在一些实施例中,该响应于对数据页面的读请求,基于第一目标文件和该数据页面的至少一个版本在该第一目标文件中的位置信息,获取该数据页面的目标版本,包括:
响应于该读请求,基于该第一目标文件和该数据页面的单向链表,获取该数据页面的目标版本,该单向链表指示该数据页面的至少一个版本对应的日志序列号和该数据页面的至少一个版本在该第一目标文件中的位置信息。
在一些实施例中,该单向链表包括目标索引,该目标索引用于指示该数据页面的至少一个版本在同一目标文件中。
在一些实施例中,该方法还包括:
在该备节点的内存空间中不存在该数据页面的目标版本的情况下,基于该第一目标文件和该数据页面的至少一个版本在该第一目标文件中的位置信息,获取该数据页面的目标版本。
在一些实施例中,该方法还包括:
在基于该第一目标文件未获取到该数据页面的目标版本的情况下,从该数据存储系统的共享存储空间中获取该数据页面的第一版本。
在一些实施例中,该方法还包括:
在获取到的该数据页面的第一版本符合目标条件的情况下,从该第一目标文件中获取该数据页面的目标版本。
在一些实施例中,该方法还包括:
从该备节点的内存空间中删除目标日志序列号对应的数据页面,该目标日志序列号小于已有目标文件的最大日志序列号。
第六方面,本申请实施例提供了一种数据处理装置,应用于数据存储系统中的至少一个备节点,该系统还包括主节点,该装置包括至少一个功能模块,用于执行如前述第四方面或第四方面的任意一种可能的实现方式所提供的数据处理方法。
第七方面,本申请实施例提供了一种数据处理装置,应用于数据存储系统中的主节点,该系统还包括至少一个备节点,该装置包括至少一个功能模块,用于执行如前述第五方面或第五方面的任意一种可能的实现方式所提供的数据处理方法。
第八方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质用于存储至少一段程序代码,该至少一段程序代码用于实现前述第四方面或第四方面的任意一种可能的实现方式中所提供的数据处理方法,或者,实现前述第五方面或第五方面的任意一种可能的实现方式中所提供的数据处理方法。该存储介质包括但不限于易失性存储器,例如随机访问存储器,非易失性存储器,例如快闪存储器、硬盘(hard disk drive,HDD)、固态硬盘(solid state drive,SSD)。
第九方面,本申请实施例提供了一种计算机程序产品,当该计算机程序产品在计算设备上运行时,使得该计算设备实现前述第四方面或第四方面的任意一种可能的实现方式中所提供的数据处理方法,或者,实现前述第五方面或第五方面的任意一种可能的实现方式中所提供的数据处理方法。该计算机程序产品可以为一个软件安装包,在需要实现前述主节点或者备节点的功能的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
附图说明
图1是本申请实施例提供的一种数据存储系统的示意图;
图2是本申请实施例提供的一种计算设备的硬件结构示意图;
图3是本申请实施例提供的一种数据存储系统的功能示意图;
图4是本申请实施例提供的一种数据处理方法的流程示意图;
图5是本申请实施例提供的一种单向链表的示意图;
图6是本申请实施例提供的一种更新单向链表的示意图;
图7是本申请实施例提供的一种共享存储空间的示意图;
图8是本申请实施例提供的一种备节点获取数据页面的流程示意图;
图9是本申请实施例提供的一种备节点发送通知消息的流程示意图;
图10是本申请实施例提供的一种数据处理方法的示意图;
图11是本申请实施例提供的一种数据处理方法的示意图;
图12是本申请实施例提供的一种数据处理装置的结构示意图;
图13是本申请实施例提供的一种数据处理装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了方便理解,下面先对本申请涉及的关键术语和关键概念进行说明。
页面(page),是数据库存储数据的基本单元,用于构成数据文件。示意性地,每个数据页面的大小为8KB。需要说明的是,不同类型的数据页面存储的数据是不同的,例如,数据页面分为存储索引结构的数据页面、管理数据页面的系统数据页面以及存储文本等数据的数据页面等等,本申请实施例对于数据页面的类型不作限定。
重做(redo),是一种用于保证数据库事务的可恢复性的技术,在数据库故障后,通过重做日志可以保证数据库事务被重演,实现数据页面的恢复。
重做日志(redo log),是一种物理格式的日志,记录的是数据页面的物理变化。
撤销(undo),是一种用于保证数据库事务可以被回退或者撤销的技术,该技术能够为变更的数据构造一种前镜像数据,即保存修改之前的旧值,以保证能够回滚或撤销对数据库所做的修改。
日志序列号(log sequence number,LSN),是一个一直递增的整形数字,表示事务写入日志的字节总量。LSN存在于重做日志中。在一些实施例中,每个数据页面的头部也会有对应的LSN,对于任一数据页面头部的LSN,该LSN用于标记当前数据页面的最后一次修改。示意性地,在恢复数据页面时能够通过对比重做日志的LSN,决定是否对该数据页面进行恢复。
双写(double write,DW),是一种防止数据页面写入磁盘时发生半页写问题的功能。其中,半页写问题是指:当数据库正在从内存向磁盘写入一个数据页面时,数据库宕机,从而导致这个数据页面只写入了部分数据,导致数据丢失。双写功能即是为了防止以上半页写问题发生而设计的一种保护机制。示意性地,当数据库正在从内存向磁盘写入一个数据页面时,先以IO直通(direct IO)的方式将该数据页面写入双写文件中,此时由于使用了IO直通,故不会发生半页写问题,在将该数据页面写入双写文件后,再将该数据页面写入磁盘中。在这种情况下,如果写入磁盘的过程中数据库宕机,能够通过双写文件来恢复该数据页面。
下面对本申请涉及的应用场景和实施环境进行介绍。
本申请实施例提供的技术方案能够应用于基于共享存储架构的数据存储系统中。示意性地,参考图1,图1是本申请实施例提供的一种数据存储系统的示意图。如图1所示,本申请的实施环境包括数据存储系统100,该数据存储系统100包括主节点101、至少一个备节点102以及共享存储空间103。主节点101、至少一个备节点102以及共享存储空间103之间通过有线网络或无线网络直接或间接地连接,在此不做限制。
主节点101用于对外提供数据读写服务。在本申请实施例中,该主节点101能够将数据页面的至少一个版本存储至目标文件,以便至少一个备节点102响应于对该数据页面的读请求,从该目标文件中找到相应版本的数据页面。在一些实施例中,该目标文件也称为双写文件,即,该目标文件可以理解为基于数据存储系统的双写功能而生成的文件。在一些实施例中,该目标文件中存储的数据页面也称为基线页面,示意性地,基线页面可以理解为数据页面在某一时刻的一个“快照”,即,目标文件中记录了数据页面在不同时刻对应的版本。通过这种方式,主节点101基于数据存储系统100的双写功能,在主节点101将数据页面的脏页面写入共享存储空间的情况下,保留生成的双写文件,从而实现了对数据页面的至少一个版本进行存储的目的。
备节点102用于对外提供数据只读服务。在本申请实施例中,该备节点102能够响应于对该数据页面的读请求,从目标文件中获取到相应版本的数据页面,实现主备节点的数据同步与一致性。需要说明的是,图中所示仅为示意性地,备节点102的数量可以更多或更少,本申请实施例对此不作限定。
在一些实施例中,对于上述主节点101和至少一个备节点102中任一个节点,该节点为一种既具有计算能力又具有存储能力的设备,如服务器、台式计算机等。在一些实施例中,该节点是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,又或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
共享存储空间103用于存储主节点101和备节点102在对外提供服务时所需的数据。在本申请实施例中,该共享存储空间103还用于存储上述目标文件。在一些实施例中,共享存储空间103为独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统等等,本申请实施例对此不作限定。
示意性地,在一些实施例中,基于服务器集群的形式来实现上述数据存储系统100的功能。例如,采用openGauss以及PostgreSQL等关系型数据库来实现上述主节点101和至少一个备节点102所具备的功能,采用开源分布式存储方案如ceph文件系统来实现上述共享存储空间103所具备的功能,等等,本申请实施例对此不作限定。
在一些实施例中,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也能够是任何网络,包括但不限于局域网(local area network,LAN)、城域网(metropolitan area network,MAN)、广域网(wide area network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。在一些实现方式中,使用包括超级文本标记语言(hyper text markup language,HTML)、可扩展标记语言(extensible markuplanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还能够使用诸如安全套接字层(secure socket layer,SSL)、传输层安全(transport layer security,TLS)、虚拟专用网络(virtual private network,VPN)、网际协议安全(internet protocolsecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还能够使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
下面对上述主节点和备节点的硬件结构进行介绍。
本申请实施例提供了一种计算设备,能够配置为上述数据存储系统中的主节点或备节点。示意性地,参考图2,图2是本申请实施例提供的一种计算设备的硬件结构示意图。如图2所示,该计算设备200包括存储器201、处理器202、通信接口203以及总线204。其中,存储器201、处理器202、通信接口203通过总线204实现彼此之间的通信连接。
存储器201可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。示意性地,以该计算设备能够配置为上述主节点为例,存储器201用于存储至少一段程序代码,当存储器201中存储的程序代码被处理器202执行时,处理器202和通信接口203用于执行下述数据处理方法中主节点所涉及的步骤。同理,以该计算设备能够配置为上述备节点为例,存储器201用于存储至少一段程序代码,当存储器201中存储的程序代码被处理器202执行时,处理器202和通信接口203用于执行下述数据处理方法中备节点所涉及的步骤。
处理器202可以是网络处理器(network processor,NP)、中央处理器(centralprocessing unit,CPU)、特定应用集成电路(application-specific integratedcircuit,ASIC)或用于控制本申请方案程序执行的集成电路。该处理器202可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。该处理器202的数量可以是一个,也可以是多个。通信接口203使用例如收发器一类的收发模块,来实现计算设备200与其他设备或通信网络之间的通信。例如,可以通过通信接口203获取数据。
其中,存储器201和处理器202可以分离设置,也可以集成在一起。
总线204可包括在计算设备200各个部件(例如,存储器201、处理器202、通信接口203)之间传送信息的通路。
基于上述对数据存储系统的介绍可知,本申请实施例提供的主节点基于数据存储系统的双写功能,保留了主节点将数据页面写入共享存储空间前生成的双写文件,从而实现了对数据页面的至少一个版本进行存储,其中,该双写文件中存储的数据页面也称为基线页面。基于此,本申请实施例提供了一种数据处理方法,该方法通过数据存储系统中主节点和备节点之间的协同作用,实现对基线页面的生命周期管理,从而保证主备节点的数据同步与一致性。示意性地,参考图3,图3是本申请实施例提供的一种数据存储系统的功能示意图。如图3所示,基线页面的生命周期管理通过以下几个部分构成:基线页面保留、基线页面位置构建、基线页面获取以及基线页面回收。需要说明的是,基线页面的生命周期管理会在下述数据处理方法的实施例中进行详细介绍,下面先对这几个部分进行简要介绍。
基线页面保留由主节点实现,示意性地,主节点通过将数据页面的脏页面写入双写文件,从而对数据页面的至少一个版本进行存储。
基线页面位置构建由备节点实现,示意性地,备节点通过读取双写文件,对数据页面的至少一个版本在双写文件中的位置信息进行存储。
基线页面获取由备节点实现,示意性地,备节点响应于对数据页面的读请求,能够通过一定的获取策略,找到相应版本的数据页面。
基线页面回收由主节点和备节点共同实现,示意性地,备节点能够及时确定可回收的双写文件,通知主节点对该双写文件进行回收(即删除双写文件以释放存储空间)。
下面基于上述对基线页面的生命周期管理,以主节点将任意数据页面的脏页面写入双写文件为例,通过图4所示的数据处理方法,对上述数据存储系统中主节点和备节点所具备的功能进行进一步地介绍。
图4是本申请实施例提供的一种数据处理方法的流程示意图。如图4所示,该数据处理方法应用于数据存储系统,该数据存储系统包括主节点和至少一个备节点。该方法包括如下步骤401至步骤405。
401、主节点响应于对数据页面的写请求,将数据页面的脏页面写入第一目标文件,该第一目标文件用于存储该数据页面的至少一个版本。
在本申请实施例中,主节点响应于对数据页面的写请求,在该主节点的内存空间中生成该数据页面的脏页面,将该数据页面的脏页面写入第一目标文件,该第一目标文件存储于数据存储系统的共享存储空间中。需要说明的是,该数据页面的脏页面作为该数据页面的一个版本,其日志序列号(LSN)全局唯一,换言之,该数据页面的至少一个版本中的每个版本都对应一个全局唯一的LSN。
在一些实施例中,主节点在将该数据页面的脏页面写入数据存储系统的共享存储空间的情况下,将该数据页面的脏页面写入第一目标文件。示意性地,主节点将该数据页面的脏页面存储于自身的内存空间中,在该内存空间已满的情况下,主节点将该内存空间中存储的脏页面写入共享存储空间中,此时主节点将内存空间中存储的数据页面的脏页面写入第一目标文件。需要说明的是,主节点还能够在生成数据页面的脏页面之后,经过第一时长(根据实际需求进行设置,对此不作限定),将该数据页面的脏页面写入第一目标文件,本申请实施例对此不作限定。
在一些实施例中,数据存储系统的共享存储空间中已存储多个目标文件,该第一目标文件为已存储目标文件中创建时间最晚且未写满的目标文件。示意性地,主节点基于共享存储空间中已存储的多个目标文件,确定创建时间最晚的第一目标文件,在该第一目标文件未写满的情况下,将该数据页面的脏页面写入该第一目标文件中。例如,共享存储空间中已存储的多个目标文件按照创建时间依次命名,分别为dw_1、dw_2…dw_n(n为正整数),主节点响应于对数据页面的写请求,生成该数据页面的脏页面,在目标文件dw_n未写满的情况下,将该数据页面的脏页面写入该目标文件dw_n的尾端。
在一些实施例中,数据存储系统的共享存储空间中已存储多个目标文件,该第一目标文件的创建时间在该多个目标文件的创建时间之后。示意性地,主节点基于共享存储空间中已存储的多个目标文件,确定创建时间最晚的目标文件,在该创建时间最晚的目标文件已写满的情况下,创建第一目标文件,将该数据页面的脏页面写入该第一目标文件中。例如,共享存储空间中已存储的多个目标文件按照创建时间依次命名,分别为dw_1、dw_2…dw_n(n为正整数),主节点响应于对数据页面的写请求,生成该数据页面的脏页面,在该目标文件dw_n已写满的情况下,在共享存储空间中生成新的目标文件dw_(n+1),将该数据页面的脏页面写入该目标文件dw_(n+1)中。
402、主节点将该数据页面的脏页面写入数据存储系统的共享存储空间。
在本申请实施例中,主节点将该数据页面的脏页面写入共享存储空间是指,将该数据页面的脏页面进行持久化存储。在一些实施例中,这一过程也可以理解为数据落盘,本申请实施例对此不作限定。
经过上述步骤401和步骤402,主节点在将数据页面的脏页面写入共享存储空间之前,将该数据页面的脏页面写入了第一目标文件中,这一过程也可以理解为:对于数据页面的任意一个版本,主节点均能够通过写入目标文件的方式对其进行存储,从而实现了基线页面保留的目的,便于备节点在想要获取相应版本的数据页面的情况下,能够从目标文件中获取到准确版本的数据页面,确保主备节点的数据同步与一致性。
403、备节点基于该第一目标文件,更新该数据页面的单向链表,该单向链表指示该数据页面的至少一个版本对应的日志序列号和该数据页面的至少一个版本在目标文件中的位置信息。
在本申请实施例中,备节点存储有该数据页面的单向链表,在该单向链表中,该数据页面的至少一个版本对应的日志序列号和该至少一个版本在目标文件中的位置信息是按照该至少一个版本的生成时间从早到晚存储的。例如,按照链表的头插法进行存储,将生成时间最晚的至少一个版本对应的日志序列号和相应位置信息存储于单向链表的头部。示意性地,该单向链表中存储有该数据页面的所有版本对应的日志序列号和这些版本在目标文件中的位置信息。在一些实施例中,备节点基于该第一目标文件,获取该数据页面的脏页面对应的日志序列号和该数据页面的脏页面在该第一目标文件中的位置信息,将该数据页面的脏页面对应的日志序列号和该数据页面的脏页面在该第一目标文件中的位置信息,添加到该数据页面的单向链表中。
示意性地,该单向链表是一种线性数据结构,链表中的每个节点包括两个部分,第一部分用于存储当前节点的相关信息,即数据页面的至少一个版本对应的日志序列号和该数据页面的至少一个版本在目标文件中的位置信息,第二部分用于存储下一个节点的地址。在一些实施例中,备节点以哈希表的形式存储该数据页面的单向链表。例如,该哈希表按照键(key)-值(value)的形式来存储数据。其中,key为该数据页面的页面标签(PageTag),value为该数据页面的单向链表。当然,在一些实施例中,备节点还能够通过其他方式来存储数据页面的日志序列号和对应的位置信息,本申请实施例对此不作限定。
在一些实施例中,该单向链表还包括目标索引,该目标索引用于指示该数据页面的至少一个版本在同一目标文件中。在一些实施例中,该目标索引还用于指示同一目标文件中该数据页面的最新版本。示意性地,备节点基于该第一目标文件中该数据页面的至少一个版本,为该单向链表中该数据页面的至少一个版本增加目标索引。例如,该单向链表包括该数据页面的多个版本,该多个版本对应的LSN分别为LSN10、LSN7、LSN6、LSN4以及LSN2,其中,LSN10和LSN7属于第一目标文件,则备节点为该LSN10和LSN7增加目标索引LSN10,用于指示该数据页面的这两个版本在同一目标文件中(即第一目标文件),以及该目标文件中该数据页面的最新版本为LSN10对应的版本。即,不同的目标索引能够指示不同的目标文件,进一步地,对于任一个目标索引来说,该目标索引能够指示相应目标文件中该数据页面的最新版本。通过这种方式,能够在后续删除备节点中存储的无效数据的情况下,加快查找速度,提高数据处理效率,而且,通过这种方式,也便于备节点在后续响应于对数据页面的读请求的情况下,通过该目标索引,快速定位到想要的数据页面的版本,从而提升数据处理效率。另外,需要说明的是,本申请实施例对于备节点增加目标索引的时机不作限定,备节点可以在每次更新单向链表的情况下增加目标索引,也可以每间隔一定时长,为该单向链表增加目标索引。例如,备节点在每次更新单向链表的情况下,基于该单向链表对应的多个目标文件,确定是否存在新增的目标文件,在存在新增的目标文件的情况下,为该单向链表增加索引,等等,对此不作限定。
在一些实施例中,数据存储系统的共享存储空间中已存储多个目标文件,该第一目标文件为已存储目标文件中创建时间最晚且未写满的目标文件,该备节点轮询该共享存储空间中已存储的该多个目标文件,在该第一目标文件已更新的情况下,基于该第一目标文件,更新该单向链表。在一些实施例中,数据存储系统的共享存储空间中已存储多个目标文件,该第一目标文件的创建时间在已存储目标文件的创建时间之后,该备节点轮询共享存储空间中已存储的该多个目标文件,在已存储目标文件的数量增加的情况下,基于该第一目标文件,更新该单向链表。
下面结合图5和图6,对备节点基于该第一目标文件,更新该数据页面的单向链表的过程进行示意性说明。其中,图5是本申请实施例提供的一种单向链表的示意图,图6是本申请实施例提供的一种更新单向链表的示意图。
如图5所示,备节点以哈希表的形式存储该数据页面的单向链表,该哈希表按照键(key)-值(value)的形式来存储数据。其中,key为该数据页面的页面标签(PageTag),value为该数据页面的单向链表。该单向链表包括该数据页面的多个版本,该多个版本对应的LSN分别为LSN10、LSN7、LSN6、LSN4以及LSN2,其中,LSN10和LSN7属于目标文件dw_3,LSN6和LSN4属于目标文件dw_2,LSN2属于目标文件dw_1,相应地,该单向链表还包括目标索引LSN10、LSN6以及LSN2,用于指示该数据页面的至少一个版本在同一目标文件中。示意性地,对于任一个目标索引,该目标索引还用于指示同一目标文件中该数据页面的最新版本。例如,目标索引LSN10用于指示LSN10和LSN7属于目标文件dw_3,还用于指示该目标文件dw_3中该数据页面的最新版本为LSN10对应的版本。另外,对于任意两个相邻的目标索引,将这两个相邻的目标索引称为第一目标索引和第二目标索引,该第一目标索引和第二目标索引用于指示该第一目标索引与该第二目标索引之间的至少一个版本与该第一目标索引属于同一目标文件。例如,目标索引LSN10和目标索引LSN6用于指示目标索引LSN10和目标索引LSN6之间的LSN7对应的版本与该目标索引LSN10属于同一目标文件dw_3。
如图6所示,以第一目标文件的创建时间在已存储目标文件的创建时间之后为例,备节点基于该第一目标文件,解析页面元数据,得到该数据页面的脏页面对应的日志序列号LSN11和该数据页面的脏页面在该第一目标文件中的位置信息,将该LSN11和对应的位置信息添加到该单向链表的头部,相应地,为该单向链表新增目标索引LSN11。
需要说明的是,上述步骤403是以备节点已存储有该数据页面的单向链表为例进行介绍的,在一些实施例中,在该数据页面首次生成的情况下,备节点基于该第一目标文件,生成该数据页面的单向链表,具体生成过程与上述过程同理,故在此不再赘述。
经过上述步骤403,备节点基于第一目标文件,将数据页面的脏页面对应的LSN和该数据页面的脏页面在第一目标文件中的位置信息进行了存储,这一过程也可以理解为:对于数据页面的任意一个版本,备节点均能够通过更新单向链表的方式对其在目标文件中的位置信息进行存储,从而实现了基线页面位置构建的目的,便于备节点在想要获取相应版本的数据页面的情况下,能够定位到准确版本的数据页面在目标文件的位置信息,从而获取到准确版本的数据页面,确保主备节点的数据同步与一致性。
经过上述步骤401至步骤403,主节点将数据页面的脏页面写入了第一目标文件中,并将该数据页面的脏页面写入了数据存储系统的共享存储空间中,备节点将该数据页面的脏页面对应的位置信息也进行了存储。示意性地,参考图7,图7是本申请实施例提供的一种共享存储空间的示意图。如图7所示,以第一目标文件为dw_4、该数据页面的脏页面对应的LSN为LSN11为例,在该共享存储空间中存储有目标文件dw_1、dw_2、dw_3以及dw_4,该数据页面在共享存储空间中的版本对应的LSN为LSN11。
需要说明的是,本申请实施例对于备节点更新数据页面的单向链表的时机不作限定,即,在一些实施例中,上述步骤402和步骤403同步执行,或者,备节点先执行上述步骤403,主节点再执行上述步骤402,本申请实施例对此不作限定。
404、备节点响应于对该数据页面的读请求,基于该第一目标文件和该数据页面的至少一个版本在该第一目标文件中的位置信息,获取该数据页面的目标版本。
在本申请实施例中,备节点响应于对该数据页面的读请求,在该备节点存储有该数据页面的单向链表的情况下,基于该数据页面的单向链表,获取该数据页面的目标版本在该第一目标文件中的位置信息,从该第一目标文件中获取该数据页面的目标版本。需要说明的是,此处是以备节点通过单向链表的方式存储位置信息为例进行介绍的,在一些实施例中,在备节点通过其他方式存储位置信息的情况下,备节点响应于该数据页面的读请求,基于该数据页面的至少一个版本在该第一目标文件中的位置信息,获取该数据页面的目标版本在该第一目标文件中的位置信息,从该第一目标文件中获取该数据页面的目标版本,本申请实施例对此不作限定。
在一些实施例中,该读请求为来自数据存储系统外部的读请求,例如,该读请求用于为数据存储系统所关联的客户端提供数据读取服务等,又例如,该读请求为一个事务的读请求,等等,对此不作限定。在一些实施例中,该读请求为来自数据存储系统内部的读请求,例如,主节点和备节点之间实时通信,主节点在写入新的数据页面的情况下,向备节点发送通知消息,备节点响应于主节点发送的通知消息,生成相应的读请求,该读请求用于备节点通过回放数据页面的方式,与主节点实现数据同步。
在一些实施例中,备节点响应于对该数据页面的读请求,在该备节点的内存空间中获取该数据页面的目标版本,在该备节点的内存空间中不存在该数据页面的目标版本的情况下,基于该第一目标文件和该数据页面的至少一个版本在该第一目标文件中的位置信息,获取该数据页面的目标版本。通过先在备节点的内存空间中获取该数据页面的目标版本,能够在备节点的内存空间存在该数据页面的目标版本的情况下,减少备节点与共享存储空间之间的数据交互,提高数据处理效率。
在一些实施例中,备节点在基于该第一目标文件未获取到该数据页面的目标版本的情况下,从该数据存储系统的共享存储空间中获取该数据页面的第一版本。示意性地,以该读请求为来自备节点外部的读请求为例,该读请求携带该数据页面的页面编号100,备节点基于该页面编号和数据存储目录,确定该数据页面的存储位置(如base/1663/1234),基于该数据页面的存储位置,从共享存储空间中获取该数据页面的第一版本(如从base/1663/1234的100*8k位置获取该数据页面)。通过这种方式,能够在备节点想要获取数据页面且目标文件中不存在相应版本的情况下,从共享存储空间中获取到第一版本,确保备节点能够获取到该数据页面。
在一些实施例中,备节点从共享存储空间中获取到的数据页面的第一版本为该数据页面的目标版本。示意性地,主节点在将第一目标文件存储的数据页面的脏页面写入共享存储空间之后,删除了该第一目标文件(主节点删除目标文件的具体实现方式会在后续实施例中进行介绍,此处不再赘述),备节点响应于对该数据页面的读请求,即使在第一目标文件中未获取到该数据页面的目标版本,也能够从共享存储空间中获取到该数据页面的目标版本。
在一些实施例中,备节点从共享存储空间中获取到的数据页面的第一版本的生成时间早于该数据页面的目标版本的生成时间,在这种情况下,备节点继续从该第一目标文件中获取该数据页面的目标版本。示意性地,备节点在获取到的该数据页面的第一版本符合目标条件的情况下,从该第一目标文件中获取该数据页面的目标版本,该目标条件指示该第一版本的生成时间早于该数据页面的目标版本的生成时间。示意性地,由于备节点在从共享存储空间中获取该数据页面的第一版本的过程中,主节点有可能正在将数据页面的目标版本写入第一目标文件,因此,通过这种方式,能够确保备节点获取到相应版本的数据页面。
在一些实施例中,备节点从共享存储空间中获取到的数据页面的第一版本的生成时间晚于该数据页面的目标版本的生成时间,在这种情况下,备节点从共享存储空间中已存储的目标文件中获取该数据页面的目标版本。示意性地,由于该数据页面的第一版本的生成时间晚于该数据页面的目标版本的生成时间,且备节点在第一目标文件中未获取到该数据页面的目标版本,表明该目标版本的生成时间较早,有可能存储于创建时间较早的目标文件中,因此,通过这种方式,能够确保备节点获取到相应版本的数据页面。
需要说明的是,上述步骤404是以备节点从第一目标文件中获取该数据页面的目标版本为例进行介绍的。在一些实施例中,备节点响应于对该数据页面的读请求,基于已有目标文件和该数据页面的至少一个版本在已有目标文件中的位置信息,获取该数据页面的目标版本。示意性地,备节点基于该数据页面的单向链表,获取该数据页面的目标版本在已有目标文件中的位置信息,从已有目标文件中获取该数据页面的目标版本。另外,在一些实施例中,备节点响应于对该数据页面的读请求,基于目标顺序,获取该数据页面的目标版本。其中,该目标顺序是指,备节点响应于对该数据页面的读请求,按照备节点的内存空间、已有目标文件、共享存储空间以及已有目标文件的顺序,依次获取该数据页面的目标版本。示意性地,下面结合图8对这一过程进行示意性说明。图8是本申请实施例提供的一种备节点获取数据页面的流程示意图。如图8所示,备节点响应于对该数据页面的读请求,在该备节点的内存空间中获取该数据页面的目标版本,在该备节点的内存空间中不存在该数据页面的目标版本的情况下,从已有目标文件中获取该数据页面的目标版本,在基于已有目标文件未获取到该数据页面的目标版本的情况下,从该数据存储系统的共享存储空间中获取该数据页面的第一版本,在获取到的该数据页面的第一版本的生成时间早于或晚于该数据页面的目标版本的生成时间的情况下,继续从已有目标文件中获取该数据页面的目标版本,在从已有目标文件中未获取到该数据页面的目标版本的情况下,返回报错信息。通过这种方法,能够确保备节点获取到相应版本的数据页面,从而保证主备节点的数据同步与一致性。
405、备节点基于该读请求中携带的日志序列号,对获取到的该数据页面的目标版本进行校验,在校验通过的情况下,返回该数据页面的目标版本。
在本申请实施例中,备节点在获取到该数据页面的目标版本后,基于该读请求中携带的日志序列号和该数据页面的目标版本对应的日志序列号,对该数据页面的目标版本进行校验,在校验通过的情况下,返回该数据页面的目标版本,在校验未通过的情况下,返回报错信息。
经过上述步骤404和步骤405,在第一目标文件中存储了数据页面的至少一个版本,且备节点存储了该数据页面的至少一个版本在该第一目标文件中的位置信息的情况下,备节点响应于对该数据页面的读请求,从第一目标文件中获取到该数据页面的目标版本并返回。这一过程也可以理解为,对于备节点所需的数据页面的任意一个版本,备节点均能够通过一定的获取策略,获取到相应版本的数据页面,从而实现了基线页面获取的目的,确保主备节点的数据同步与一致性。
经过上述步骤401至步骤405,以任意一个数据页面为例,对基线页面的生命周期管理中的基线页面保留、基线页面位置构建以及基线页面获取进行了介绍。需要说明的是,在这一过程中,由于主节点将数据页面的脏页面先写入第一目标文件,再写入共享存储空间,因此,主节点在将数据页面的脏页面写入共享存储空间的情况下(或者说主节点执行数据落盘的情况下),无需等待备节点的响应,使得主备节点之间能够异步操作,实时性好,事务提交速度快,从而有效提升了数据存储效率。进一步地,也正是由于第一目标文件中存储了数据页面的至少一个版本,因此备节点响应于对该数据页面的读请求,能够从该第一目标文件中获取到相应版本的数据页面,从而确保了主备节点之间的数据同步与一致性。
下面对主节点和备节点共同实现基线页面回收的过程进行介绍,示意性地,这一过程包括如下几个步骤:
步骤1、备节点向主节点发送通知消息,该通知消息指示第二目标文件已失效。
在本申请实施例中,第二目标文件是指数据存储系统的共享存储空间中已存储的任意一个目标文件,该通知消息携带该第二目标文件的文件标识。示意性地,备节点在该第二目标文件的最大日志序列号小于第一日志序列号的情况下,向主节点发送该通知消息,该第一日志序列号为该备节点的内存空间中已回放且没有读请求占用的数据页面的日志序列号,该通知消息还携带该第一日志序列号。其中,该备节点的内存空间中已回放且没有读请求占用的数据页面可以理解为备节点已经不再需要的数据页面,也即是,第一日志序列号对应的数据页面的版本是指能够删除的数据页面的版本,相应地,某一目标文件的最大序列号小于该第一日志序列号,表明备节点不再需要从该目标文件中获取数据页面,该目标文件属于已失效的文件。在一些实施例中,备节点在发送通知消息的情况下,删除该数据页面的单向链表中与该第二目标文件对应的数据,以释放备节点的存储空间。
在一些实施例中,备节点在第一读请求对应的数据页面已处理完成且该备节点的内存空间中已回放的情况下,或者,在该第一读请求已提交且该备节点的内存空间中已回放的情况下,基于该第一读请求对应的数据页面,确定该第一日志序列号。示意性地,该第一读请求是指数据存储系统正在处理的读请求,备节点在回放某一数据页面的情况下,基于该数据页面的日志序列号和该第一读请求对应的数据页面的日志序列号进行对比,在该第一读请求对应的数据页面符合上述任一种情况下,将该数据页面对应的日志序列号确定为第一日志序列号。
在一些实施例中,备节点每间隔第二时长(能够根据实际需求进行设置,对此不作限定),获取该第一日志序列号,基于该第一日志序列号和共享存储空间中已存储的各个目标文件的最大序列号,确定第二目标文件,向主节点发送通知消息。例如,备节点在回放某一数据页面的情况下,获取到第一日志序列号为LSN10,共享存储空间中已存储的某一目标文件的最大日志序列号为LSN8,小于该第一日志序列号,表明备节点不再需要从该目标文件中获取该数据页面,则备节点将该目标文件确定为第二目标文件,向主节点发送通知消息,以便主节点及时释放存储空间。
示意性地,参考图9,图9是本申请实施例提供的一种备节点发送通知消息的流程示意图。如图9所示,备节点在获取到第一日志序列号的情况下,判断当前共享存储空间中存储的目标文件中是否存在最大日志序列号小于该第一日志序列号的目标文件,在存在的情况下,将该目标文件确定为第二目标文件,向主节点发送该通知消息。
步骤2、主节点接收该备节点发送的通知消息。
步骤3、主节点基于该通知消息,删除该第二目标文件。
在本申请实施例中,主节点在接收到该通知消息后,基于该通知消息中携带的第二目标文件的文件标识,从数据存储系统的共享存储空间中删除该第二目标文件。在一些实施例中,该通知消息还携带该第一日志序列号,主节点基于该通知消息,校验该第二目标文件是否失效,在校验结果指示该第二目标文件已失效的情况下,删除该第二目标文件。通过这种方式,主节点能够在接收到该通知消息的情况下,自行校验该第二目标文件是否已失效,以避免误删目标文件。
经过上述步骤1至步骤3,备节点能够在确定存在已失效目标文件的情况下,通知主节点删除相应的目标文件,从而释放存储空间,实现基线页面回收的目的。在一些实施例中,主节点还能够基于共享存储空间中已存储的目标文件的数量或创建时间,删除部分目标文件,以释放存储空间。下面对这两种情况进行介绍:
(1)在一些实施例中,主节点删除至少一个第三目标文件,该第三目标文件的创建时间早于目标时间。例如,该目标时间为1小时(对此不作限定),主节点基于共享存储空间中已存储的目标文件,将1小时前创建的多个第三目标文件删除。通过这种方式,主节点能够基于已有目标文件的创建时间,删除创建时间较早的目标文件,以释放存储空间。
(2)在一些实施例中,主节点在已有目标文件的数量大于或等于目标阈值的情况下,删除至少一个第四目标文件。需要说明的是,该至少一个第四目标文件的数量能够根据需求进行设置,对此不作限定。例如,该目标阈值为100(对此不作限定),主节点基于共享存储空间中已存储的目标文件,在已有目标文件的数量大于或等于100的情况下,删除10个第四目标文件(该第四目标文件可以为创建时间较早的目标文件,对此不作限定)。通过这种方式,主节点能够基于已有目标文件的数量,删除部分目标文件,以释放存储空间。
当然,在一些实施例中,主节点还能够基于其他策略来删除共享存储空间中已存储的部分目标文件,以释放存储空间,本申请实施例对此不作限定。
需要说明的是,上述步骤1至步骤3是通过备节点通知主节点的方式来实现基线页面回收的目的。在一些实施例中,备节点会在备节点的内存空间中存储数据页面,在这种情况下,备节点能够基于共享存储空间中已存储的目标文件的最大日志序列号,从备节点的内存空间中删除部分数据页面。示意性地,备节点基于目标日志序列号,从该备节点的内存空间中删除该目标日志序列号对应的数据页面,该目标日志序列号小于已有目标文件的最大日志序列号。通过这种方式,备节点能够及时释放备节点的存储空间,也确保了备节点能够从已有目标文件中获取到这部分数据页面。
示意性地,基于上述图4至图9所示的内容可知,主节点具有创建和删除目标文件的功能,在一些实施例中,主节点能够根据备节点的通知消息,删除已失效的目标文件,在另一些实施例中,主节点能够根据已存储目标文件的数量的创建时间,删除创建时间较早的目标文件。基于此,本申请实施例还提供了一种数据处理方法,由主节点执行,该数据处理方法用于实现基线页面保留的目的。示意性地,参考图10,图10是本申请实施例提供的一种数据处理方法的示意图。如图10所示,该数据处理方法包括如下几个步骤:
步骤1、主节点响应于对数据页面的写请求,判断共享存储空间中已存储的目标文件中是否存在已失效的目标文件,在存在已失效目标文件的情况下,删除该已失效目标文件,执行步骤2,在不存在已失效目标文件的情况下,直接执行步骤2。
步骤2、主节点判断共享存储空间中已存储的目标文件的数量是否大于目标阈值,在已存储的目标文件的数量大于目标阈值的情况下,删除至少一个创建时间较早的目标文件,执行步骤3,例如,共享存储空间中的多个目标文件按照创建时间依次命名,分别为dw_1、dw_2…dw_n(n为正整数),主节点删除目标文件dw_1和目标文件dw_2。另外,主节点在已存储的目标文件的数量小于或等于目标阈值的情况下(例如,该目标阈值为100),直接执行步骤3。
步骤3、主节点判断共享存储空间中已存储的目标文件中最晚创建的目标文件是否已写满,在该目标文件未写满的情况下,将该数据页面的脏页面写入该目标文件,在该目标文件已写满的情况下,创建新的目标文件,将该数据页面的脏页面写入该新的目标文件中。例如,例如,共享存储空间中的多个目标文件按照创建时间依次命名,分别为dw_1、dw_2…dw_n(n为正整数),主节点判断目标文件dw_n是否已写满,在该目标文件dw_n未写满的情况下,将该数据页面的脏页面写入该目标文件dw_n中,在该目标文件dw_n已写满的情况下,创建新的目标文件dw_(n+1),将该数据页面的脏页面写入该新的目标文件dw_(n+1)中。
需要说明的是,上述图10所示的数据处理方法仅为示意性地,在一些实施例中,主节点能够基于其他策略将数据页面的脏页面写入目标文件,本申请实施例对此不作限定。
示意性地,基于上述图4至图10所示的内容可知,备节点具有存储数据页面在目标文件中的位置信息以及通知主节点当前是否存在已失效目标文件的功能。在一些实施例中,备节点能够通过轮询共享存储空间中已存储的目标文件,来实现上述功能。基于此,本申请实施例还提供了一种数据处理方法,由备节点执行,该数据处理方法用于实现基线页面位置构建以及基线页面回收的目的。示意性地,参考图11,图11是本申请实施例提供的一种数据处理方法的示意图。如图11所示,该数据处理方法包括如下几个步骤:
步骤1、备节点轮询共享存储空间中已存储的目标文件,解析数据页面元数据,生成数据页面的单向链表(或者更新数据页面的单向链表)。
步骤2、备节点在生成新的目标文件的情况下,读取该新的目标文件,生成数据页面的单向链表(或者更新数据页面的单向链表),执行步骤3,在未生成新的目标文件的情况下,读取共享存储空间中已存储的目标文件中创建时间最晚的目标文件,执行步骤3。
步骤3、备节点判断已读取到的所有目标文件中是否存在已失效目标文件,在存在已失效目标文件的情况下,向主节点发送通知消息,删除单向链表中与该已失效目标文件对应的数据。
需要说明的是,上述图11所示的数据处理方法仅为示意性地,在一些实施例中,备节点能够基于其他策略来实现上述功能,本申请实施例对此不作限定。
另外,上述实施例是以图1所示的数据存储系统为例进行说明的,即,上述方法实施例能够应用于基于共享存储架构的数据存储系统中,通过数据存储系统的双写功能,保留基线页面,从而实现主备节点之间的数据同步与一致性。在另一些实施例中,上述数据处理方法还能够用于任意具备双写功能的数据存储系统中。例如,以计算节点与存储节点紧耦合的架构为例,通过存储双写文件的方式,保留基页页面,从而实现主备节点共享存储的目的,节省存储资源,减少扩展集群的延迟,本申请实施例对此不作限定。
综上,本申请实施例提供了一种数据处理方法,能够应用于数据存储系统,该数据存储系统包括主节点和至少一个备节点,其中,主节点能够将数据页面的脏页面写入第一目标文件,使得备节点响应于对该数据页面的读请求,从第一目标文件中获取到相应版本的数据页面。在这一过程中,由于第一目标文件中存储了该数据页面的至少一个版本,因此备节点能够从该第一目标文件中获取到准确版本的数据页面,从而确保了主备节点的数据同步与一致性。
图12是本申请实施例提供的一种数据处理装置的结构示意图。该数据处理装置可以通过软件、硬件或者两者的结合实现成为前述主节点的部分或者全部功能。本申请实施例提供的数据处理装置应用于数据存储系统,该系统包括主节点和至少一个备节点,能够实现上述方法实施例中主节点所执行的步骤。如图12所示,该数据处理装置1200包括写入模块1201。
写入模块1201,用于响应于对数据页面的写请求,将该数据页面的脏页面写入第一目标文件,该第一目标文件用于存储该数据页面的至少一个版本。
在一些实施例中,该装置还包括:
接收模块,用于接收该备节点发送的通知消息,该通知消息指示第二目标文件已失效;
第一删除模块,用于基于该通知消息,删除该第二目标文件。
在一些实施例中,该装置还包括:
校验模块,用于基于该通知消息,校验该第二目标文件是否失效,在校验结果指示该第二目标文件已失效的情况下,删除该第二目标文件。
在一些实施例中,该装置还包括:
第二删除模块,用于删除至少一个第三目标文件,该第三目标文件的创建时间早于目标时间。
在一些实施例中,该装置还包括:
第三删除模块,用于在已有目标文件的数量大于或等于目标阈值的情况下,删除至少一个第四目标文件。
需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图13是本申请实施例提供的一种数据处理装置的结构示意图。该数据处理装置可以通过软件、硬件或者两者的结合实现成为前述备节点的部分或者全部功能。本申请实施例提供的数据处理装置应用于数据存储系统,该系统包括主节点和至少一个备节点,能够实现上述方法实施例中备节点所执行的步骤。如图13所示,该数据处理装置1300包括获取模块1301。
获取模块1301,用于响应于对数据页面的读请求,基于第一目标文件和该数据页面的至少一个版本在该第一目标文件中的位置信息,获取该数据页面的目标版本,该第一目标文件用于存储该数据页面的至少一个版本。
在一些实施例中,该装置还包括:
发送模块,用于向主节点发送通知消息,该通知消息指示第二目标文件已失效。
在一些实施例中,该获取模块,用于:
响应于该读请求,基于该第一目标文件和该数据页面的单向链表,获取该数据页面的目标版本,该单向链表指示该数据页面的至少一个版本对应的日志序列号和该数据页面的至少一个版本在该第一目标文件中的位置信息。
在一些实施例中,该单向链表包括目标索引,该目标索引用于指示该数据页面的至少一个版本在同一目标文件中。
在一些实施例中,该获取模块,还用于:
在该备节点的内存空间中不存在该数据页面的目标版本的情况下,基于该第一目标文件和该数据页面的至少一个版本在该第一目标文件中的位置信息,获取该数据页面的目标版本。
在一些实施例中,该获取模块,还用于:
在基于该第一目标文件未获取到该数据页面的目标版本的情况下,从该数据存储系统的共享存储空间中获取该数据页面的第一版本,该第一版本为该目标版本的相邻版本。
在一些实施例中,该获取模块,还用于:
在获取到的该数据页面的第一版本符合目标条件的情况下,从该第一目标文件中获取该数据页面的目标版本。
在一些实施例中,该装置还包括:
删除模块,用于从该备节点的内存空间中删除目标日志序列号对应的数据页面,该目标日志序列号小于已有目标文件的最大日志序列号。
需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一目标文件可以被称为第二目标文件,并且类似地,第二目标文件可以被称为第一目标文件。第一目标文件和第二目标文件都可以是目标文件,并且在某些情况下,可以是单独且不同的目标文件。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个目标文件是指两个或两个以上的目标文件。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以程序结构信息的形式实现。该程序结构信息包括一个或多个程序指令。在计算设备上加载和执行该程序指令时,全部或部分地产生按照本申请实施例中的流程或功能。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (31)
1.一种数据存储系统,其特征在于,所述系统包括主节点和至少一个备节点;
所述主节点,用于响应于对数据页面的写请求,将所述数据页面的脏页面写入第一目标文件,所述第一目标文件用于存储所述数据页面的至少一个版本;
所述备节点,用于响应于对所述数据页面的读请求,基于所述第一目标文件和所述数据页面的至少一个版本在所述第一目标文件中的位置信息,获取所述数据页面的目标版本。
2.根据权利要求1所述的系统,其特征在于,所述主节点,还用于:
接收所述备节点发送的通知消息,所述通知消息指示第二目标文件已失效;
基于所述通知消息,删除所述第二目标文件。
3.根据权利要求2所述的系统,其特征在于,所述备节点,还用于:
向所述主节点发送所述通知消息。
4.根据权利要求2或3所述的系统,其特征在于,所述主节点,还用于:
基于所述通知消息,校验所述第二目标文件是否失效,在校验结果指示所述第二目标文件已失效的情况下,删除所述第二目标文件。
5.根据权利要求1至4任一项所述的系统,其特征在于,所述主节点,还用于:
删除至少一个第三目标文件,所述第三目标文件的创建时间早于目标时间。
6.根据权利要求1至4任一项所述的系统,其特征在于,所述主节点,还用于:
在已有目标文件的数量大于或等于目标阈值的情况下,删除至少一个第四目标文件。
7.根据权利要求1至6任一项所述的系统,其特征在于,所述备节点,用于:
响应于所述读请求,基于所述第一目标文件和所述数据页面的单向链表,获取所述数据页面的目标版本,所述单向链表指示所述数据页面的至少一个版本对应的日志序列号和所述数据页面的至少一个版本在所述第一目标文件中的位置信息。
8.根据权利要求7所述的系统,其特征在于,所述单向链表包括目标索引,所述目标索引用于指示所述数据页面的至少一个版本在同一目标文件中。
9.根据权利要求1至8任一项所述的系统,其特征在于,所述备节点,还用于:
在所述备节点的内存空间中不存在所述数据页面的目标版本的情况下,基于所述第一目标文件和所述数据页面的至少一个版本在所述第一目标文件中的位置信息,获取所述数据页面的目标版本。
10.根据权利要求9所述的系统,其特征在于,所述备节点,还用于:
在基于所述第一目标文件未获取到所述数据页面的目标版本的情况下,从所述数据存储系统的共享存储空间中获取所述数据页面的第一版本。
11.根据权利要求10所述的系统,其特征在于,所述备节点,还用于:
在获取到的所述数据页面的第一版本符合目标条件的情况下,从所述第一目标文件中获取所述数据页面的目标版本。
12.根据权利要求1至11任一项所述的系统,其特征在于,所述备节点,还用于:
从所述备节点的内存空间中删除目标日志序列号对应的数据页面,所述目标日志序列号小于已有目标文件的最大日志序列号。
13.一种主节点,其特征在于,所述主节点包括处理器和存储器,所述存储器用于存储至少一段程序代码,所述至少一段程序代码由所述处理器加载并实现如权利要求1至权利要求12所述的数据存储系统中主节点的功能。
14.一种备节点,其特征在于,所述备节点包括处理器和存储器,所述存储器用于存储至少一段程序代码,所述至少一段程序代码由所述处理器加载并实现如权利要求1至权利要求12所述的数据存储系统中备节点的功能。
15.一种数据处理方法,其特征在于,应用于数据存储系统,所述系统包括主节点和至少一个备节点,所述方法由所述主节点执行,所述方法包括:
响应于对数据页面的写请求,将所述数据页面的脏页面写入第一目标文件,所述第一目标文件用于存储所述数据页面的至少一个版本。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
接收所述备节点发送的通知消息,所述通知消息指示第二目标文件已失效;
基于所述通知消息,删除所述第二目标文件。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括:
基于所述通知消息,校验所述第二目标文件是否失效,在校验结果指示所述第二目标文件已失效的情况下,删除所述第二目标文件。
18.根据权利要求15至17任一项所述的方法,其特征在于,所述方法还包括:
删除至少一个第三目标文件,所述第三目标文件的创建时间早于目标时间。
19.根据权利要求15至17任一项所述的方法,其特征在于,所述方法还包括:
在已有目标文件的数量大于或等于目标阈值的情况下,删除至少一个第四目标文件。
20.一种数据处理方法,其特征在于,应用于数据存储系统,所述系统包括主节点和至少一个备节点,所述方法由所述备节点执行,所述方法包括:
响应于对数据页面的读请求,基于第一目标文件和所述数据页面的至少一个版本在所述第一目标文件中的位置信息,获取所述数据页面的目标版本,所述第一目标文件用于存储所述数据页面的至少一个版本。
21.根据权利要求20所述的方法,其特征在于,所述方法还包括:
向所述主节点发送通知消息,所述通知消息指示第二目标文件已失效。
22.根据权利要求20或21所述的方法,其特征在于,所述响应于对数据页面的读请求,基于第一目标文件和所述数据页面的至少一个版本在所述第一目标文件中的位置信息,获取所述数据页面的目标版本,包括:
响应于所述读请求,基于所述第一目标文件和所述数据页面的单向链表,获取所述数据页面的目标版本,所述单向链表指示所述数据页面的至少一个版本对应的日志序列号和所述数据页面的至少一个版本在所述第一目标文件中的位置信息。
23.根据权利要求22所述的方法,其特征在于,所述单向链表包括目标索引,所述目标索引用于指示所述数据页面的至少一个版本在同一目标文件中。
24.根据权利要求20至23任一项所述的方法,其特征在于,所述方法还包括:
在所述备节点的内存空间中不存在所述数据页面的目标版本的情况下,基于所述第一目标文件和所述数据页面的至少一个版本在所述第一目标文件中的位置信息,获取所述数据页面的目标版本。
25.根据权利要求24所述的方法,其特征在于,所述方法还包括:
在基于所述第一目标文件未获取到所述数据页面的目标版本的情况下,从所述数据存储系统的共享存储空间中获取所述数据页面的第一版本。
26.根据权利要求25所述的方法,其特征在于,所述方法还包括:
在获取到的所述数据页面的第一版本符合目标条件的情况下,从所述第一目标文件中获取所述数据页面的目标版本。
27.根据权利要求20至26任一项所述的方法,其特征在于,所述方法还包括:
从所述备节点的内存空间中删除目标日志序列号对应的数据页面,所述目标日志序列号小于已有目标文件的最大日志序列号。
28.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储至少一段程序代码,所述至少一段程序代码用于执行如权利要求15至权利要求19中任一项所述的数据处理方法。
29.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储至少一段程序代码,所述至少一段程序代码用于执行如权利要求20至权利要求27中任一项所述的数据处理方法。
30.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算设备上运行时,使得所述计算设备执行如权利要求15至权利要求19中任一项所述的数据处理方法。
31.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算设备上运行时,使得所述计算设备执行如权利要求20至权利要求27中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111672671.9A CN116414842A (zh) | 2021-12-31 | 2021-12-31 | 数据存储系统、节点、方法及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111672671.9A CN116414842A (zh) | 2021-12-31 | 2021-12-31 | 数据存储系统、节点、方法及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116414842A true CN116414842A (zh) | 2023-07-11 |
Family
ID=87050068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111672671.9A Pending CN116414842A (zh) | 2021-12-31 | 2021-12-31 | 数据存储系统、节点、方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116414842A (zh) |
-
2021
- 2021-12-31 CN CN202111672671.9A patent/CN116414842A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11500852B2 (en) | Database system with database engine and separate distributed storage service | |
US11120152B2 (en) | Dynamic quorum membership changes | |
JP6522812B2 (ja) | 分散型データベースシステム用高速クラッシュ回復 | |
US11755415B2 (en) | Variable data replication for storage implementing data backup | |
US10229011B2 (en) | Log-structured distributed storage using a single log sequence number space | |
US10534768B2 (en) | Optimized log storage for asynchronous log updates | |
KR101771246B1 (ko) | 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피 | |
EP1918836B1 (en) | Apparatus and method for a hardware-based file system | |
US9424140B1 (en) | Providing data volume recovery access in a distributed data store to multiple recovery agents | |
US10303564B1 (en) | Reduced transaction I/O for log-structured storage systems | |
US10223184B1 (en) | Individual write quorums for a log-structured distributed storage system | |
CN116414842A (zh) | 数据存储系统、节点、方法及存储介质 | |
dos Santos Almeida | Geo-Replication in Large Scale Cloud Computing Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |