CN111290714B - 数据读取方法和装置 - Google Patents
数据读取方法和装置 Download PDFInfo
- Publication number
- CN111290714B CN111290714B CN202010081830.7A CN202010081830A CN111290714B CN 111290714 B CN111290714 B CN 111290714B CN 202010081830 A CN202010081830 A CN 202010081830A CN 111290714 B CN111290714 B CN 111290714B
- Authority
- CN
- China
- Prior art keywords
- page
- data page
- data
- splitting process
- node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 479
- 230000008569 process Effects 0.000 claims abstract description 392
- 238000012545 processing Methods 0.000 claims description 61
- 230000015654 memory Effects 0.000 claims description 23
- 238000007726 management method Methods 0.000 description 48
- 238000010586 diagram Methods 0.000 description 26
- 238000013461 design Methods 0.000 description 14
- 238000003780 insertion Methods 0.000 description 13
- 230000037431 insertion Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004140 cleaning Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据读取方法和装置,涉及分布式存储技术领域。具体实现方案为:从计算节点确定待读取数据页的标识为第一标识,待读取数据页为计算节点中的第一父数据页的子数据页,以及向存储节点发送数据页读取请求,数据页读取请求包括第一标识;存储节点确定在存储节点中标识为第一标识的第一数据页对应有页***过程,根据页***过程的发生时机,向从计算节点发送目标数据页,目标数据页为第一数据页或者第二数据页。本申请实施例可以使得从计算节点中的父数据页与子数据页相匹配,即保证从计算节点从存储节点读取到正确的数据。
Description
技术领域
本申请实施例涉及计算机技术,尤其涉及一种分布式存储技术。
背景技术
在云计算技术和服务的支持下,业务规模快速扩大,这对构建于云端的核心基础设施服务—数据库服务提出了更高的要求,于是出现了新一代云原生数据库架构,极大提升了云数据库的服务能力。
云原生数据库架构包括主计算节点、从计算节点和存储节点,主计算节点负责读写数据,从计算节点只能读取数据。其中,数据不再被直接写入到存储节点,而是主计算节点产生redo日志,并将redo日志传送到存储节点,存储节点将redo日志回放成数据。同时redo日志被传送至从计算节点,在需要时,从计算节点将redo日志回放成数据,以使从计算节点缓存中的数据保持最新。
由于存储节点和从计算节点各自独立回放redo日志来生成数据,所以有可能在某段时间相同的数据页的更新进度不一致,比如从计算节点需要读取某一父数据页的子数据页,而由于存储节点和从计算节点数据页的更新进度不一致,可能存在如下的情况:仅在存储节点或从计算节点中发生了与子数据页相关的页***,这样从计算节点从存储节点读取到的子数据页可能与从计算节点中的父数据页不匹配,即从计算节点可能读取到错误的数据。
发明内容
本申请实施例提供一种数据读取方法和装置,可以使得从计算节点中的父数据页与子数据页相匹配,即保证从计算节点从存储节点读取到正确的数据。
第一方面,本申请实施例提供一种数据读取方法,应用于存储节点,所述方法包括:从计算节点接收数据页读取请求,所述数据页读取请求包括第一标识;确定在所述存储节点中标识为所述第一标识的第一数据页对应有页***过程;根据所述页***过程的发生时机,向所述计算节点发送目标数据页,所述目标数据页为所述第一数据页或者第二数据页。可选地,所述第一标识是所述计算节点确定的待读取数据页的标识,待读取数据页为所述计算节点中的第一父数据页的子数据页。
本方面中,计算节点为从计算节点。本方案中在从计算节点需要读取某一数据页的子数据页时,可根据***信息确定该子数据页是否对应有页***过程,以在该子数据页对应有页***过程的情况下,根据页***过程的发生时机,确定正确的读取数据页,以使从计算节点中的父数据页和子数据页相互匹配,即从计算节点能够读取到正确的数据。
在一种可能的实施方式中,所述存储节点存储有部分***信息;所述部分***信息包括部分页***过程所对应的***数据页的标识以及触发页***过程的日志的日志序列号LSN,所述部分页***过程所对应的***数据页存储在所述存储节点中;确定在所述存储节点中标识为所述第一标识的第一数据页对应有页***过程,包括:确定所述部分***信息包括的***数据页的标识中存在所述第一标识。
本方案中通过***信息确定数据页是否对应有页***过程的具体实现,使得确定数据页是否对应有页***过程简单易实现。
在一种可能的实施方式中,所述数据页读取请求还包括所述第一父数据页的第三LSN;在所述根据所述页***过程的发生时机,向所述计算节点发送所述目标数据页之前,还包括:根据触发所述页***过程的日志的第一LSN、存储节点中的所述第一数据页的第二LSN以及所述第三LSN,确定所述页***过程的发生时机。
本方案给出了确定页***过程的发生时机的具体实现,即通过相应日志的LSN确定,由于数据均是由日志回放得到的,因此根据相应的日志的LSN的大小判断页***过程的发生时机较准确。
在一种可能的实施方式中,所述确定所述页***过程的发生时机,包括:若所述第三LSN小于所述第一LSN且所述第一LSN小于或等于所述第二LSN,则确定所述页***过程发生在所述存储节点得到所述第一父数据页之后;若所述第一LSN小于所述第二LSN且所述第一LSN小于所述第三LSN,则确定所述页***过程发生在所述存储节点得到所述第一父数据页之前;若所述第二LSN小于所述第一LSN且所述第一LSN小于或等于所述第三LSN,则确定所述存储节点的数据回放速度慢于所述计算节点的数据回放速度且在所述存储节点中所述页***过程待发生。
在一种可能的实施方式中,所述页***过程的发生在所述存储节点得到所述第一父数据页之后;向所述计算节点发送目标数据页之前,还包括:向所述计算节点发送第一信息,所述第一信息用于所述计算节点确定目标数据页;接收来自所述计算节点的所述目标数据页的读取请求。
本实施例中给出了在第一数据页对应的页***过程的发生在所述存储节点得到所述第一父数据页之后,如何触发从计算节点确定正确的待读取数据页的具体实现。
在一种可能的实施方式中,所述第一信息包括:触发所述页***过程的日志的第一LSN和指示信息,所述指示信息指示所述页***过程发生在所述存储节点得到所述第一父数据页之后。
在一种可能的实施方式中,所述页***过程发生在所述存储节点得到所述第一父数据页之前,所述目标数据页为所述存储节点中的所述第一数据页。
在一种可能的实施方式中,所述存储节点的数据回放速度慢于所述计算节点的数据回放速度且在所述存储节点中所述页***过程待发生,所述目标数据页为所述存储节点中的所述第一数据页;在向所述计算节点发送标识为所述第一标识的所述第一数据页之前,还包括:确定所述存储节点对LSN为所述第一LSN的日志回放完毕。
第二方面,本申请实施例提供一种数据读取方法,应用于计算节点,所述方法包括:确定待读取数据页的标识为第一标识,所述待读取数据页为所述计算节点中的第一父数据页的子数据页;向存储节点发送数据页读取请求,所述数据页读取请求包括第一标识,所述第一标识用于所述存储节点确定标识为第一标识的第一数据页对应的页***过程的发生时机以及根据所述发生时机向所述计算节点发送目标数据页;从所述存储节点接收目标数据页,所述目标数据页为所述存储节点的所述第一数据页或者第二数据页。
本方面中,计算节点为从计算节点。本方案中,在从计算节点需要读取某一数据页的子数据页时,可根据***信息确定该子数据页是否对应有页***过程,以在该子数据页对应有页***过程的情况下,根据页***过程的发生时机,确定正确的读取数据页,以使从计算节点中的父数据页和子数据页相互匹配,即从计算节点能够读取到正确的数据。
在一种可能的实施方式中,在从所述存储节点接收目标数据页之前,还包括:接收来自所述存储节点的第一信息,所述第一信息包括:触发所述页***过程的日志的第一日志序列号LSN和指示信息,所述指示信息指示所述页***过程发生在所述存储节点得到所述第一父数据页之后;根据所述第一信息,确定目标数据页;向所述存储节点发送读取所述目标数据页的请求。
本方案给出了如何触发计算节点确定目标数据页的方案。
在一种可能的实施方式中,所述根据所述第一信息,确定目标数据页,包括:根据所述第一信息,确定在所述存储节点中所述第一父数据页未对应有页***过程;从所述存储节点读取第二父数据页,所述第二父数据页为所述页***过程发生之后被更新的第一父数据页;根据所述第二父数据页确定所述目标数据页。
本方案可以使得从计算节点得到由于第一数据页对应的页***过程导致的第一父数据页更新后的数据页—第二父数据页,以能够根据第二父数据页确定正确的待读取数据页—目标数据页,进而使得从计算节点中的父数据页和子数据页相互匹配,从计算节点能够读取到正确的数据。
在一种可能的实施方式中,所述根据所述第一信息,确定目标数据页,包括:根据所述第一信息确定在所述存储节点中所述第一父数据页对应有页***过程;从存储节点读取第二父数据页至目标父数据页的各数据页,其中,所述目标父数据页未对应有页***过程且位于根数据页和所述第二父数据页之间或者所述目标父数据页为所述根数据页,所述第二父数据页为所述第一父数据页***后的数据页且所述第二父数据页为所述第一数据页的父数据页;根据所述第二父数据页至所述目标父数据页的各数据页,确定所述目标数据页。可以理解的是,第二父数据页的标识也为第二标识。
本方案可以使得从计算节点得到由于第一数据页对应的页***过程导致的更新的各数据页—所述第二父数据页至所述目标父数据页的各数据页,以能够根据第二父数据页至目标父数据页的各数据页确定正确的待读取数据页—目标数据页,进而使得从计算节点中的父数据页和子数据页相互匹配,从计算节点能够读取到正确的数据。
在一种可能的实施方式中,所述计算节点中存储有全量***信息,所述全量***信息包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;所述根据所述第一信息,确定在所述存储节点中所述第一父数据页对应有页***过程,包括:根据所述指示信息,确定所述全量***信息包括的***数据页的标识中存在所述第二标识且触发相应的页***过程的LSN为所述第一LSN,所述第二标识为所述第一父数据页的标识。
本方案给出了确定在所述存储节点中所述第一父数据页对应有页***过程的一种具体实现,该方案中网络开销较少。
在一种可能的实施方式中,所述计算节点中未存储有全量***信息,管理节点中存储有所述全量***信息;所述全量***信息包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;所述根据所述第一信息,确定在所述存储节点中所述第一父数据页对应有页***过程,包括:根据所述指示信息,向管理节点发送查询请求,所述查询请求包括所述第一LSN和所述第二标识,所述查询请求指示所述管理节点根据所述全量***信息确定在所述存储节点中所述第一父数据页是否对应有页***过程;接收来自所述管理节点的查询结果,所述查询结果指示在所述存储节点中所述第一父数据页对应有页***过程。
本方案给出了确定在所述存储节点中所述第一父数据页对应有页***过程的另一种具体实现,该方案中可以节省从计算节点的存储空间。
第三方面,本申请实施例提供一种数据读取方法,应用于计算节点,所述方法包括:确定待读取数据页的标识为第一标识,所述待读取数据页为所述计算节点中的第一父数据页的子数据页;确定存储节点中标识为所述第一标识的第一数据页对应有页***过程;根据所述页***过程的发生时机,确定目标数据页;从所述存储节点读取所述目标数据页。
本方面中,计算节点为从计算节点。本方案中,在从计算节点需要读取某一数据页的子数据页时,可根据***信息确定该子数据页是否对应有页***过程,以在该子数据页对应有页***过程的情况下,根据页***过程的发生时机,确定正确的读取数据页,以使从计算节点中的父数据页和子数据页相互匹配,即从计算节点能够读取到正确的数据。
在一种可能的实施方式中,所述计算节点中存储有全量***信息,所述全量***信息中包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;确定存储节点中标识为所述第一标识的第一数据页对应有页***过程,包括:确定所述全量***信息包括的***数据页的标识中存在所述第一标识。
本方案中通过***信息确定存储节点中标识为第一标识的第一数据页对应有页***过程,简单易实现,且网络开销少。
在一种可能的实施方式中,所述计算节点中未存储有全量***信息,所述管理节点中存储有全量***信息,所述全量***信息中包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;
本方案中通过***信息确定存储节点中标识为第一标识的第一数据页对应有页***过程,简单易实现。
在一种可能的实施方式中,在所述根据所述页***过程的发生时机,确定目标数据页之前,还包括:根据触发所述页***过程的日志的第一LSN、存储节点中的所述第一数据页的第二LSN以及所述计算节点中的第一父数据页的第三LSN,确定所述页***过程的发生时机。
本方案给出了确定页***过程的发生时机的具体实现,即通过相应日志的LSN确定,由于数据均是由日志回放得到的,因此根据相应的日志的LSN的大小判断页***过程的发生时机较准确。
在一种可能的实施方式中,所述确定所述页***过程的发生时机,包括:若所述第三LSN小于所述第一LSN且所述第一LSN小于或等于所述第二LSN,则确定所述页***过程发生在所述存储节点得到所述第一父数据页之后;若所述第一LSN小于所述第二LSN且所述第一LSN小于所述第三LSN,则确定所述页***过程发生在所述存储节点得到所述第一父数据页之前;若所述第二LSN小于所述第一LSN,所述第一LSN小于或等于所述第三LSN,则确定所述存储节点的数据回放速度慢于所述计算节点的数据回放速度且在所述存储节点中所述页***过程待发生。
在一种可能的实施方式中,若所述页***过程发生在所述存储节点得到所述第一父数据页之后,则所述确定所述目标数据页,包括:确定在所述存储节点中所述第一父数据页未对应有页***过程;从存储节点读取第二父数据页,所述第二父数据页为所述页***发生后被更新的第一父数据页;根据所述第二父数据页确定目标数据页。
本方案可以使得从计算节点得到由于第一数据页对应的页***过程导致的更新的数据页—第二父数据页,以能够根据第二父数据页确定正确的待读取数据页—目标数据页,进而使得从计算节点中的父数据页和子数据页相互匹配,从计算节点能够读取到正确的数据。
在一种可能的实施方式中,若所述页***过程发生在所述存储节点得到第一父数据页之后,则根据所述页***过程的发生时机,确定所述目标数据页,包括:确定在所述存储节点中所述第一父数据页对应有页***过程;从存储节点读取第二父数据页至目标父数据页的各数据页,其中,所述目标父数据页未对应有页***过程且位于根数据页和所述第二父数据页之间或者所述目标父数据页为所述根数据页,所述第二父数据页为所述第一父数据页***后的数据页且所述第二父数据页为所述第一数据页的父数据页;根据所述第二父数据页至所述目标父数据页的各数据页,确定所述目标数据页。
本方案可以使得从计算节点得到由于第一数据页对应的页***过程导致的更新的各数据页—所述第二父数据页至所述目标父数据页的各数据页,以能够根据第二父数据页至目标父数据页的各数据页确定正确的待读取数据页—目标数据页,进而使得从计算节点中的父数据页和子数据页相互匹配,从计算节点能够读取到正确的数据。
在一种可能的实施方式中,若所述页***过程发生在所述存储节点得到所述第一父数据页之前,则所述确定所述目标数据页,包括:确定存储节点中的所述第一数据页为目标数据页。
在一种可能的实施方式中,若存储节点的数据回放速度慢于计算节点的数据回放速度且存储节点中所述页***过程待发生,则所述确定目标数据页包括:确定所述存储节点对所述第一LSN的日志回放完毕;确定存储节点中的所述第一数据页为目标数据页。
第四方面,本申请实施例提供一种数据读取装置,包括:收发模块,用于从计算节点接收数据页读取请求,所述数据页读取请求包括第一标识;处理模块,用于确定在数据读取装置中标识为所述第一标识的第一数据页对应有页***过程;收发模块,还用于根据所述页***过程的发生时机,向所述计算节点发送目标数据页,所述目标数据页为所述第一数据页或者第二数据页。
在一种可能的实施方式中,所述数据读取装置中存储有部分***信息;所述部分***信息包括部分页***过程所对应的***数据页的标识以及触发页***过程的日志的日志序列号LSN,且所述部分页***过程所对应的***数据页均存储在所述数据读取装置中;所述处理模块,具体用于确定所述部分***信息包括的***数据页的标识中存在所述第一标识。
在一种可能的实施方式中,所述第一标识是所述计算节点确定的待读取数据页的标识,待读取数据页为所述计算节点中的第一父数据页的子数据页。
在一种可能的实施方式中,所述数据页读取请求包括所述第一标识和所述计算点中的所述第一父数据页的第三LSN;在所述收发模块根据所述页***过程的发生时机,向所述计算节点发送所述目标数据页之前,所述处理模块还用于:根据触发所述页***过程的日志的第一LSN、数据读取装置中所述第一数据页的第二LSN以及所述第三LSN,确定所述页***过程的发生时机。
在一种可能的实施方式中,所述处理模块具体用于:若所述第三LSN小于所述第一LSN且所述第一LSN小于或等于所述第二LSN,则确定所述页***过程发生在所述数据读取装置得到所述第一父数据页之后;若所述第一LSN小于所述第二LSN且所述第一LSN小于所述第三LSN,则确定所述页***过程发生在所述数据读取装置得到所述第一父数据页之前;若所述第二LSN小于所述第一LSN且所述第一LSN小于或等于所述第三LSN,则确定所述数据读取装置的数据回放速度慢于所述计算节点的数据回放速度且在所述数据读取装置中所述页***过程待发生。
在一种可能的实施方式中,所述页***过程的发生在所述数据读取装置得到所述第一父数据页之后;在所述收发模块向所述计算节点发送目标数据页之前,所述收发模块还用于:向所述计算节点发送第一信息,所述第一信息用于所述计算节点确定待读取的所述目标数据页;接收来自所述计算节点的所述目标数据页的读取请求。
在一种可能的实施方式中,所述第一信息包括:触发所述页***过程的日志的第一LSN和指示信息,所述指示信息指示所述页***过程发生在所述数据读取装置得到第一父数据页之后。
在一种可能的实施方式中,所述页***过程发生在所述数据读取装置得到所述第一父数据页之前,所述目标数据页为所述数据读取装置中的所述第一数据页。
在一种可能的实施方式中,所述数据读取装置的数据回放速度慢于所述计算节点的数据回放速度且在所述数据读取装置中所述页***过程待发生,所述目标数据页为所述数据读取装置中的所述第一数据页。在所述收发模块向所述计算节点发送所述第一数据页之前,所述处理模块还用于:确定所述数据读取装置对LSN为所述第一LSN的日志回放完毕。
第五方面,本申请实施例提供一种数据读取装置,包括:处理模块,用于确定待读取数据页的标识为第一标识,所述待读取数据页为所述数据读取装置中的第一父数据页的子数据页;收发模块,用于向存储节点发送数据页读取请求,所述数据页读取请求包括所述第一标识,所述第一标识用于所述存储节点确定标识为第一标识的第一数据页对应的页***过程的发生时机以及根据所述发生时机向所述数据读取装置发送目标数据页;所述收发模块,还用于从所述存储节点接收目标数据页,所述目标数据页为第二数据页或者所述第一数据页。
在一种可能的实施方式中,在所述收发模块从所述存储节点接收目标数据页之前:所述收发模块,还用于接收来自所述存储节点的第一信息,所述第一信息包括:触发所述页***过程的日志的第一日志序列号LSN和指示信息,所述指示信息指示所述页***过程发生在所述存储节点得到所述第一父数据页之后;所述处理模块,还用于根据所述第一信息,确定目标数据页;所述收发模块,还用于向所述存储节点发送读取所述目标数据页的请求。
在一种可能的实施方式中,所述处理模块具体用于:根据所述第一信息,确定在所述存储节点中第一父数据页未对应有页***过程;从所述存储节点读取第二父数据页,所述第二父数据页为所述页***过程发生之后被更新的第一父数据页;根据所述第二父数据页确定所述目标数据页。
在一种可能的实施方式中,所述处理模块具体用于:根据所述第一信息确定在所述存储节点中所述第一父数据页对应有页***过程;从存储节点读取第二父数据页至目标父数据页的各数据页,其中,所述目标父数据页未对应有页***过程且位于根数据页和所述第二父数据页之间或者所述目标父数据页为所述根数据页,所述第二父数据页为所述第一父数据页***后的数据页且所述第二父数据页为所述第一数据页的父数据页;根据所述第二父数据页至所述目标父数据页的各数据页,确定所述目标数据页。
在一种可能的实施方式中,所述数据存储装置中存储有全量***信息,所述全量***信息包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;所述处理模块,具体用于:根据所述第一信息,确定所述全量***信息包括的***数据页的标识中存在所述第二标识且触发相应的页***过程的LSN为所述第一LSN,所述第二标识为所述第一父数据页的标识。
在一种可能的实施方式中,所述数据存储装置中未存储有全量***信息,管理节点中存储有所述全量***信息;所述全量***信息包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;所述处理模块具体用于:根据所述指示信息,控制所述收发模块向管理节点发送查询请求,所述查询请求包括所述第一LSN和所述第二标识,所述查询请求指示所述管理节点根据所述全量***信息确定在所述存储节点中所述第一父数据页是否对应有页***过程;根据所述收发模块接收的来自所述管理节点的查询结果,确定所述在所述存储节点中所述第一父数据页对应有页***过程,所述查询结果指示在所述存储节点中所述第一父数据页对应有页***过程。
第六方面,本申请实施例提供一种数据读取装置,包括:处理模块,用于确定待读取数据页的标识为第一标识,所述待读取数据页为所述数据读取装置中的第一父数据页的子数据页;确定存储节点中标识为所述第一标识的第一数据页对应有页***过程;根据所述页***过程的发生时机,确定目标数据页;从所述存储节点读取所述目标数据页。
在一种可能的实施方式中,所述数据读取装置中存储有全量***信息,所述全量***信息中包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;所述处理模块,具体用于:确定所述全量***信息包括的***数据页的标识中存在所述第一标识。
在一种可能的实施方式中,还包括收发模块;所述数据读取装置中未存储有全量***信息,所述管理节点中存储有全量***信息,所述全量***信息中包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;所述处理模块,具体用于控制收发模块向所述管理节点发送查询请求,所述查询请求包括所述第一标识,所述查询请求指示所述管理节点根据所述全量***信息确定所述第一数据页在所述存储节点中对应有页***过程;以及根据收发模块接收的来自所述管理节点的查询结果确定所述第一数据页在所述存储节点中对应有页***过程,所述查询结果指示所述第一数据页在所述存储节点中对应有页***过程。
在一种可能的实施方式中,在所述处理模块根据所述页***过程的发生时机,确定目标数据页之前,所述处理模块还用于:根据触发所述页***过程的日志的第一LSN、存储节点中的所述第一数据页的第二LSN以及所述数据读取装置中的第一父数据页的第三LSN,确定所述页***过程的发生时机。
在一种可能的实施方式中,所述处理模块具体用于:若所述第三LSN小于所述第一LSN且所述第一LSN小于或等于所述第二LSN,则确定所述页***过程发生在所述存储节点得到所述第一父数据页之后;若所述第一LSN小于所述第二LSN且所述第一LSN小于所述第三LSN,则确定所述页***过程发生在所述存储节点得到所述第一父数据页之前;若所述第二LSN小于所述第一LSN,所述第一LSN小于或等于所述第三LSN,则确定所述存储节点的数据回放速度慢于所述数据读取装置的数据回放速度且在所述存储节点中所述页***过程待发生。
在一种可能的实施方式中,若所述页***过程发生在所述存储节点得到所述第一父数据页之后,则所述处理模块具体用于:确定在所述存储节点中所述第一父数据页未对应有页***过程;从存储节点读取第二父数据页,所述第二父数据页为所述页***发生后被更新的第一父数据页;根据所述第二父数据页确定目标数据页。
在一种可能的实施方式中,若所述页***过程发生在所述存储节点得到第一父数据页之后,则所述处理模块具体用于:确定在所述存储节点中所述第一父数据页对应有页***过程;从存储节点读取第二父数据页至目标父数据页的各数据页,其中,所述目标父数据页未对应有页***过程且位于根数据页和所述第二父数据页之间或者所述目标父数据页为所述根数据页,所述第二父数据页为所述第一父数据页***后的数据页且所述第二父数据页为所述第一数据页的父数据页;根据所述第二父数据页至所述目标父数据页的各数据页,确定所述目标数据页。
在一种可能的实施方式中,若所述页***过程发生在所述存储节点得到所述第一父数据页之前,则所述处理模块具体用于:确定存储节点中的所述第一数据页为目标数据页。
在一种可能的实施方式中,若存储节点的数据回放速度慢于数据读取装置的数据回放速度且存储节点中所述页***过程待发生,则所述处理模块具体用于:确定所述存储节点对所述第一LSN的日志回放完毕;确定存储节点中的所述第一数据页为目标数据页。
第七方面,本申请实施例提供一种一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面以及第一方面任一可能设计中所述的方法或者执行第二方面以及第二方面任一可能设计中所述的方法或者执行第三方面以及第三方面任一可能设计中所述的方法。
第八方面,本申请提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行第一方面以及第一方面任一可能设计中所述的方法或者执行第二方面以及第二方面任一可能设计中所述的方法或者执行第三方面以及第三方面任一可能设计中所述的方法。
上述申请中的一个实施例具有如下优点或有益效果:可以使得从计算节点中的父数据页与子数据页相匹配,即保证从计算节点从存储节点读取到正确的数据。因为通过确定存储节点中标识为的第一标识的第一数据页是否对应有页***过程(第一标识为计算节点初始确定的待读取的数据页的标识),若是,则根据该页***过程的时机,确定待读取的正确数据页,从存储节点中读取该正确数据页;所以克服了现有技术中由于从计算节点和存储节点将日志回放成数据的速度不一致造成的从计算节点从存储节点中读取数据时,有可能使得从计算节点中的父数据页与子数据页不匹配的技术问题,保证从计算节点中的父数据页与子数据页相匹配,即保证从计算节点从存储节点读取到正确的数据的技术效果。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1为本申请实施例提供的二阶B树的一种结构示意图;
图2为本申请实施例提供的多阶B树的一种结构示意图;
图3为本申请实施例提供的B树的一种页***过程示意图;
图4为本申请实施例提供的B+树一种结构示意图;
图5为本申请实施例提供的B+树的一种页***过程示意图;
图6为本申请实施例提供的***架构图;
图7为本申请实施例提供的数据读取场景示意图;
图8为本申请实施例提供的数据获取方法的流程图一;
图9为本申请实施例提供的数据获取方法的流程图二;
图10为本申请实施例提供的数据获取装置的结构示意图;
图11是用来实现本申请实施例的数据获取方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。本申请中术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
首先对本申请涉及的要素进行说明。
在一些数据存储的场景中,比如分布式数据库中,数据以页的形式存放,每个数据页可以是4k byte(16k或者其他任意大小)。数据被依次添加到数据页中,直到数据填满为止。在数据以B树或者B树的变体(比如B+树、B*树)组织的数据库中,如果数据页被填满,则可能发生页***,即一个数据页***成两个数据页,新数据按照顺序被***到相应的数据页。
在B树或者B树的变体中,包括非叶子结点和叶子结点,所有非叶子结点均拥有儿子,本实施例中称非叶子结点的“儿子”为非叶子结点的子结点,非叶子结点为其儿子的“父结点”。
下面分别对B树、B+树进行简要的说明。
1、二阶B树,即二叉搜索树:(1)所有非叶子结点至多拥有两个子结点(Left和Right);(2)各结点存储一个关键字;(3)非叶子结点的左指针指向小于其关键字的子结点,右指针指向大于其关键字的子结点。图1为本申请实施例提供的B树的一种结构示意图。参见图1,每个结点对应一个数据页,每个数据页被方形框框出;最下方的节点为叶子结点,其余的结点均为非叶子结点,非叶子结点最上方的节点为根结点。比如,结点101为结点102和结点103的父结点,结点102和结点103为结点101的子结点。结点101对应的数据页为结点102对应的数据页和结点103对应的数据页的父数据页,结点102对应的数据页和结点103对应的数据页为结点101对应的数据页的子数据页。
二阶B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询的关键字比结点关键字小,就进入左子结点;如果查询的关键字比结点关键字大,就进入右子结点;如果左子结点或右子结点的指针为空,则报告找不到相应的关键字。
2、多阶B树,是一种多路搜索树(并不是二叉的),对于M阶的B树:(1)任意非叶子结点最多只有M个子结点,且M>2;(2)根结点的子结点数为[2,M];(3)除根结点以外的非叶子结点的子结点数为[M/2,M];(4)每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)(5)非叶子结点的关键字个数等于指向子结点的指针个数减1;(6)非叶子结点的关键字:K1,K2,…,KM-1,且Ki<Ki+1;即M阶B树中每个结点最多具有M-1个关键字;(7)非叶子结点的指针:P[1],P[2],…,P[M],其中,P[1]指向关键字小于K1的子树,P[M]指向关键字大于KM-1的子树,其它P[i]指向关键字属于(Ki-1,Ki)的子树(8)所有叶子结点位于同一层。在M=3时,多阶B树的一种结构示意图如图2所示。参见图2,每个结点对应一个数据页,每个数据页被方形框框出;最下方的节点为叶子结点,其余的结点均为非叶子结点,非叶子结点最上方的节点为根结点。比如:结点201为结点202、结点203和结点204的父结点,结点202、结点203和结点204为结点201的子结点。结点201对应的数据页为结点202对应的数据页、结点203对应的数据页和结点204的对应的数据页的父数据页,结点202对应的数据页、结点203对应的数据页和结点204对应的数据页为结点201对应的数据页的子数据页。
多阶B树的搜索,从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的子结点;重复,直到所对应的子结点指针为空,或已经是叶子结点。
下面以5阶B树的***为例,说明本申请实施例涉及的页***过程。
图3为本申请实施例提供的B树的一种页***过程示意图。
如图3中的A图所示,在空树中***39(即***关键字key为39的数据,***“Y”在本申请实施例中的含义为***关键字为Y的数据记录),此时根结点包括一个关键字,根结点也是叶子结点。参见图3中的B图,继续***22,97和41,此时根结点包括4个关键字(即包括4条数据记录,每条数据记录对应一个关键字)。参见图3中的C图,继续***53,***53后超过了结点最大允许包括的关键字的数目4,以41为中心进行页***,***后如图3中的D图所示,其中,包括关键字为22和39的数据记录的数据页的标识与***53之前包括39、22、41和97的数据记录的数据页的标识相同。
依次***13,21,40,同样会造成***,如图3中的E图所示,接着依次***30、27、33、36、35、34、24、29,如图3中的F图所示。如图3中的G图所示所示,继续***26,26所在的结点包括的关键字超过4个,需要以27为中心进行页***,并向父结点进位27,***后的结果如图3中的H图所示,其中包括关键字为24和26的页的标识与***26之前包括24、26、29和30的数据记录的数据页的标识相同;进位后导致当前的根结点也需要进行页***,***的结果如图3中的I图所示,其中包括关键字为22和27的数据记录的数据页的标识与***27之前包括22、33、36和41的数据记录的数据页的标识相同。
3、B+树:B+树是B树的变体,也是一种多路搜索树:其定义基本与B树相同,除了具有如下的几点区别:(1)非叶子结点的子结点指针与关键字的个数相同,非叶子结点子结点指针P[i]指向关键字属于[Ki,Ki+1]的子结点;(3)所有叶子结点增加一个链指针;(4)所有关键字都在叶子结点出现。此外,B+树还具有如下的特性:(1)所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰是有序的;(2)搜索时不可能在非叶子结点命中:这是因为非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储数据的数据层。
在本实施例中为了表述的方便,虽然B+树中的非叶子结点中未存储有数据,但是由于叶子结点中会出现所有的关键字,因此,本实施例中也认为B+树中的每个非叶子结点对应一个数据页,即每个结点对应一个数据页。
图4为本申请实施例提供的B+树的一种结构示意图,如图4所示。参见图4,最下方的节点为叶子结点,其余的结点均为非叶子结点,非叶子结点最上方的节点为根结点。比如:结点401为结点402、结点403和结点404的父结点,结点402、结点403和结点404为结点401的子结点。结点401对应的数据页为结点402对应的数据页、结点403对应的数据页和结点404的对应的数据页的父数据页,结点402对应的数据页、结点403对应的数据页和结点404对应的数据页为结点401对应的数据页的子数据页。
图4中的B+树的关键字个数和子结点个数相同,为4阶的B+树。在另一种方式中,B+树的关键字个数比子结点个数小1。
下面以5阶B+树的***为例,说明本申请实施例涉及的页***过程。
图5为本申请实施例提供的B+树的页***过程示意图。
如图5中的A图所示,在空树中***5,此时根结点包括一个关键字,根结点也是叶子结点。参见图5中的B图,继续***8,10和15,此时根结点包括4个关键字。参见图5中的C图,继续***16,***16后超过了结点最大允许包括的关键字的数目4,所以要进行页***。在叶子结点***时,***出来的左结点2个数据记录,右边3个数据记录,中间关键字成为索引结点中的关键字,***后如图5中的D图所示,其中,包括关键字为5和8的数据记录的数据页的标识与***16之前包括5、8、10和15的数据记录的数据页的标识相同。
如图5中的E图所示,接着***17。如图5F所示,继续***18,18所在的结点包括的关键字超过4个,需要进行页***,***出来的左结点2个数据记录,右结点3个数据记录,关键字16进位到父结点(索引类型)中,***后的结果如图5中的G图所示,其中包括关键字为10和15的数据记录的数据页的标识与***18之前包括10、15、16和17的数据记录的数据页的标识相同。
***若干数据后,得到如图5中的H图所示的B+树。接着,如图5中的I图和图5中的J图所示,继续***7,7所在的结点包括的关键字超过4个,需要进行页***,***出来的左结点2个数据记录,右结点3个数据记录,关键字7进位到父结点,其中包括关键字为5和6的数据记录的数据页的标识与***7之前包括5、6、8和9的数据记录的数据页的标识相同;进位后导致当前的根结点也需要***,***的结果如图5中的K图所示,其中包括关键字为7和10的数据记录的数据页的标识与***7之前包括10、16、18和20的数据记录的数据页的标识相同。
在对B树、B+树进行说明之后,接着对本申请涉及的***架构进行说明。
图6为本申请实施例提供的***架构图,参见图6,本实施例的***架构包括计算层和分布式存储层,还可包括管理层。计算层可包括多个节点,多个节点中包括主计算节点和从计算节点,主计算节点用于读写数据,其它从计算节点可从分布式存储层读取数据。分布式存储层包括多个存储节点,用于存储数据。管理层包括一个或多个管理节点。
在上述***架构中,数据不再被直接写入到主计算节点进行本地存储,也不再被直接写入到存储节点,而是主计算节点产生redo日志,并将redo日志传送到存储节点,存储节点将redo日志回放成数据。同时redo日志被传送至从计算节点,若有需要,从计算节点会将redo日志回放成数据,以使从计算节点缓存中的数据保持最新。其中,redo日志可用一个唯一的值来标识,这个值叫做日志序列号(log sequence number,简称LSN),先产生的日志的LSN小于后产生的日志的LSN。
即从计算节点和存储节点中以B树或B树的变体组织的数据页中的数据均是由redo日志回放后得到的,若数据1由redo日志1回放得到,则数据1和redo日志1对应。若数据页中包括的数据所对应的各redo日志中第一日志的LSN最大,则第一redo日志的LSN为该数据页的LSN。相应地,若触发上述页***过程的数据记录所对应的各redo日志中第二日志的LSN最大,则第二redo日志即为触发上述页***过程的redo日志。
如上所述,存储节点和从计算节点各自独立回放redo日志来生成数据,所以有可能在某段时间相同的数据页的更新进度不一致,比如从计算节点需要读取某一父数据页的子数据页,而由于存储节点和从计算节点数据页的更新进度不一致,可能存在如下的情况:仅在存储节点或从计算节点中发生了与子数据页相关的页***,这样从计算节点从存储节点读取到的子数据页可能与从计算节点中的父数据页不匹配,即从计算节点可能读取到错误的数据。比如从计算节点和存储节点均是以5阶B树的形式组织数据或者数据页,如图7中的(a)图所示,从计算节点中存储有数据页601,但是未存储有数据页601的子数据页,子数据页存储在存储节点中,从计算节点需要读取数据页601的子数据页。若存储节点中的B树为图7中的(b)图所示,此时存储节点中存储的数据页601的子数据页与从计算节点存储的数据页601相匹配。但是,若存储节点的回放速度快于从计算节点的回放速度,如图7中的(c)~(e)图所示,由于26的***,存储节点中发生了页***,最终存储节点中的B树如图7中的(e)图所示,此时,从计算节点无法从存储节点读取到与从计算节点中的父数据页601相匹配的子数据页,因为存储节点中的B树已经不再存在如601所示的数据页。
为了解决上述技术问题,提出了本实施例中的数据获取方法。下面采用具体的实施例对本申请的数据获取方法进行说明。
首先采用具体的实施例对存储节点中存储有***信息,从计算节点和/或管理节点中存储有全量***信息所对应的数据读取方法进行说明。
图8为本申请实施例提供的数据获取方法的流程图一。参见图8,本实施例的方法包括:
步骤S801、从计算节点确定待读取数据页的标识为第一标识,待读取数据页为从计算节点中的第一父数据页的子数据页。
从计算节点中存储有第一父数据页,在需要读取第一父数据页的子数据页,确定该子数据页的标识为第一标识。
步骤S802、从计算节点向存储节点发送数据页读取请求,数据页读取请求包括第一标识。
从计算节点确定其缓存中是否包括标识为第一标识的该子数据页,若包括,则从缓存中获取该子数据页,并应用该子数据页。其中,应用该子数据页比如可为发送至终端设备以显示该子数据页所对应的数据。
若计算节点确定其缓存中不包括该子数据页,则向存储节点发送数据页读取请求,其中,数据页读取请求指示包括第一标识。在一种方式中,数据页读取请求中还包括从计算节点中的第一父数据页的LSN(为了后续表述的方便,后续称第一父数据页的LSN为第三LSN)。
步骤S803、存储节点确定在存储节点中标识为第一标识的第一数据页对应有页***过程。
存储节点接收来自从计算节点的数据页读取请求,确定在存储节点中标识为第一标识的第一数据页是否对应有页***过程,若否,则存储节点发送存储的标识为第一标识的第一数据页至从计算节点;若是,则执行步骤S804。
在一种方式中:存储节点确定在存储节点中标识为第一标识的第一数据页是否对应有页***过程,包括:存储节点根据***信息,确定在存储节点中标识为第一标识的第一数据页是否对应有页***过程。其中,***信息包括页***过程所对应的***数据页的标识以及触发页***过程的redo日志的LSN;还可包括***数据页的父数据页的标识。
表1为***信息中包括的至少部分内容。
表1
参见表1,页***过程为原数据页C***成新数据页C和新数据页D,原数据页C***成新数据页C的标识相同,新数据页C和新数据页D的父数据页为P,触发此次页***过程的日志的LSN为24。如图3中的D图和E图中所示,***13、21、40(假设40是该3个关键字中最后一个***的)后,包括关键字22、39、13和21的数据记录的数据页***成包括关键字13和21的数据记录的数据页以及包括关键字39和40的数据记录的数据页,包括关键字22和41的数据记录的数据页为***后的两个数据页的父数据页。
也就是说,对于一次页***过程,***信息中可包括该页***过程所对应的***数据页的标识以及触发该页***过程的日志的LSN,其中,该页***过程所对应的***数据页的标识可包括该页***过程涉及的两个数据页(如上的C和D)的标识。此外,***信息中还可包括该两个数据页的父数据页的标识。
如果某个数据页在发生***之后又再次发生页***过程,那么***信息中还包括该再次发生的页***过程对应的***数据页的标识以及触发该再次发生的页***过程的日志的LSN,相应地***信息中的至少部分内容可如表2所示:
表2
参见表2,页***过程为原数据页C***成新数据页C和新数据页D,原数据页C与***成的新数据页C的标识相同,新数据页C和新数据页D的父数据页为P,触发此次页***过程的日志的LSN为24。新数据页C又***成更新的数据页C和新数据页D2,更新的数据页C与新数据页C的标识相同,更新的数据页C和新数据页D2的父数据页为P,触发此次页***过程的日志的LSN为24。
如果一次页***过程导致其父数据页也发生了***,那么***信息中还包括父数据页的页***过程对应的***数据页的标识以及触发父数据页的页***过程的日志的LSN。如果每次页***都同时导致了父数据页的***,那么就会一致循环到根数据页,相应的***信息中的至少部分内容可如表3所示:
表3
***数据页的标识 | ***数据页的标识 | 父数据页的标识 | 触发页***的日志的LSN |
C | D | P1 | 24 |
P1 | P2 | PP1 | 24 |
PP1 | PP2 | PP3 | 24 |
…… | …… | …… | 24 |
PPPPP1 | PPPPP2 | Root | 24 |
因此,若存储节点确定***信息包括的***数据页的标识中存在第一标识,则确定第一数据页对应有页***过程。
此外,***信息可分为部分***信息和全量***信息。
全量***信息包括:所有页***过程所对应的***数据页的标识以及触发各页***过程的redo日志的LSN;还可包括各***数据页的父数据页的标识。全量***信息可存储在从计算节点和/或管理节点中,还可存储在存储节点中。
全量***信息的至少部分内容可如表4所示:
表4
***数据页的标识 | ***数据页的标识 | 父数据页的标识 | 触发页***的日志的LSN |
100 | 101 | 12 | 24 |
110 | 111 | 15 | 39 |
201 | 202 | 18 | 89 |
210 | 211 | 19 | 99 |
部分***信息可包括部分页***过程所对应的***数据页的标识以及触发部分页***过程的redo日志的LSN;还可包括***数据页的父数据页的标识。部分***信息可存储在存储节点中,相应地,存储节点中存储的部分***信息中包括的部分页***过程所对应的***数据页存储在该存储节点中,即部分***信息包括的***数据页的标识所指示的数据页存储在该存储节点中;或者说,存储节点中存储的部分***信息中包括的部分页***过程为存储在该存储节点的数据页中的至少部分数据页的页***过程。
存储节点中可存储全量***信息,还可存储部分***信息。在存储节点中存储的是部分***信息时,可以节省存储节点的存储空间,还可以提高确定第一数据页是否对应有页***过程的效率。
在全量***信息的至少部分内容如表4所示时,部分***信息可如表5和表6所示:
表5
表6
步骤S804、存储节点根据第一数据页对应的页***过程的发生时机,向从计算节点发送目标数据页,目标数据页为存储节点中的第一数据页或者第二数据页。
其中,存储节点在根据第一数据页对应的页***过程的发生时机,向从计算节点发送目标数据页之前,还包括:存储节点确定第一数据页对应的页***过程的发生时机。
在一种方案中,存储节点确定第一数据页对应的页***过程的发生时机,包括:根据触发该页***过程的日志的第一LSN、存储节点中标识为第一标识的数据页的第二LSN以及从计算节点中的第一父数据页的第三LSN,确定第一数据页对应的页***过程的发生时机。
其中,若第三LSN小于第一LSN且第一LSN小于或等于第二LSN,则确定第一数据页对应的页***过程发生在存储节点得到第一父数据页之后。若第一LSN小于第二LSN且第一LSN小于第三LSN,则确定第一数据页对应的页***过程发生在从存储节点得到第一父数据页之前。若第二LSN小于第一LSN且第一LSN小于或等于第三LSN,则确定存储节点的数据回放速度慢于计算节点的数据回放速度,在存储节点中第一数据页对应的页***过程待发生(即将发生)。
可以理解的是,若第一数据页对应的页***过程发生在存储节点得到第一父数据页之前,则说明在从存储节点得到第一父数据页之后,存储节点中第一数据页并没有对应页***过程,即存储节点中的标识为第一标识的第一数据页是与第一父数据页匹配的子数据页,存储节点直接向从计算节点发送标识为第一标识的数据页,能够使得从计算节点得到正确的数据。即此时目标数据页为存储节点中标识为第一标识的数据页。
若第一数据页对应的页***过程的发生时机包括:存储节点的数据回放速度慢于从计算节点的数据回放速度,在存储节点中第一数据页对应的页***过程待发生,则在确定存储节点对第一LSN的日志回放完毕后,向从计算节点发送标识为第一标识的数据页。此时目标数据页为存储节点中标识为第一标识的数据页。
其中,由于第一LSN的日志为触发第一数据页对应的页***过程的日志,因此存储节点对第一LSN的日志回放完毕后,第一数据页对应的页***过程也进行完毕,此时,向从计算节点发送标识为第一标识的数据页,从计算节点可以得到与第一父数据页匹配的子数据页,也就是能够得到正确的数据。
若第一数据页对应的页***过程的发生在存储节点得到第一父数据页之后,则在存储节点根据第一数据页对应的页***过程的发生时机,向从计算节点发送目标数据页之前,还包括如下的步骤S805~步骤S808:
步骤S805、存储节点向从计算节点发送第一信息。
其中,第一信息可包括:触发第一数据页对应的页***过程的日志的第一LSN和指示信息,指示信息指示第一数据页对应的页***过程发生在存储节点得到第一父数据页之后。
步骤S806、从计算节点根据第一信息,确定目标数据页。
一种方案中:从计算节点根据第一信息,确定目标数据页,包括如下的a1~a3:
a1、从计算节点根据第一信息,确定在存储节点中第一父数据页未对应有页***过程。
若从计算节点中存储有全量***信息,则根据第一信息,确定在存储节点中第一父数据页未对应有页***过程,包括:根据指示信息的指示,判断全量***信息包括的***数据页的标识中是否存在第二标识且触发相应的页***过程的LSN为上述的第一LSN,第二标识为第一父数据页的标识,得到的判断结果为否。
若从计算节点中未存储有全量***信息,管理节点中存储有全量***信息,则从计算节点根据第一信息,确定在存储节点中第一父数据页未对应有页***过程,包括:从计算节点根据指示信息的指示,向管理节点发送查询请求,查询请求包括第一父数据页的第二标识和上述的第一LSN,查询请求指示管理节点根据全量***信息确定第一父数据页是否对应有页***过程;从计算节点接收来自管理节点的查询结果,查询结果指示第一父数据页未对应有页***过程。其中,管理节点接收到查询请求后,判断全量***信息包括的***数据页的标识中是否存在第二标识且触发相应的页***过程的LSN为上述的第一LSN,得到的判断结果为否。
a2、从计算节点从存储节点读取第二父数据页。第二父数据页为第一数据页对应的页***过程发生后被更新的第一父数据页,也就是存储节点中标识为第二标识第二父数据页,第二标识为第一父数据页的标识。可以理解的是,第二父数据页的标识也为第二标识。
虽然存储节点中第一父数据页未对应有页***过程,但是在从存储节点得到第一父数据页之后存储节点中的第一数据页对应有页***过程,存储节点中在该第一数据页对应的页***过程未发生之前,标识为第一标识的数据页对应的父数据页为第一父数据页,在该第一数据页对应的页***过程发生之后,第一父数据页会更新为第二父据页,因此,计算节点需从存储节点读取第二父数据页,第二父数据页的标识和第一父数据页的标识相同。例如图5中的F图到G图中所示,***18后,包括关键字10、15、16、17的数据记录的数据页***成包括关键字10和15的数据记录的数据页以及包括关键字10、16、17的数据记录的数据页,父数据页由包括关键字10的数据记录的数据页更新为包括关键字10和16的数据记录的数据页。
其中,从计算节点从存储节点读取第二父数据页,包括:从计算节点向存储节点发送数据读取请求,该数据读取请求中包括第一父数据页的标识(即上述的第二标识),从计算节点接收来自存储节点的第二父数据页。
a3、从计算节点根据第二父数据页确定目标数据页。
从计算节点根据第二父数据页确定的目标数据页可能为存储节点中标识为第一标识的第一数据页,也可能存储节点为不同于第一数据页的第二数据页。
可按照目前的B树或B树的变体的搜索方法,根据第二父数据页确定目标数据页,此处不再赘述。
另一种方案中:从计算节点根据第一信息,确定目标数据页,包括如下的b1~b3:
b1、从计算节点根据第一信息,确定在存储节点中第一父数据页对应有页***过程。
其中,第一数据页对应有页***过程,第一父数据页也对应有页***过程的一种示意图可如图3中的G图到I图所示,或者,图5中的I图到K图所示。
若从计算节点中存储有全量***信息,则根据第一信息,确定在存储节点中第一父数据页对应有页***过程,包括:根据指示信息的指示,判断全量***信息包括的***数据页的标识中是否存在第二标识且触发相应的页***过程的LSN为上述的第一LSN,第二标识为第一父数据页的标识,得到的判断结果为是。
若从计算节点中未存储有全量***信息,管理节点中存储有全量***信息,则从计算节点根据第一信息,确定在存储节点中第一父数据页对应有页***过程,包括:从计算节点根据指示信息的指示,向管理节点发送查询请求,查询请求包括第一父数据页的第二标识和上述的第一LSN,查询请求指示管理节点根据全量***信息确定第一父数据页是否对应有页***过程;从计算节点接收来自管理节点的查询结果,查询结果指示第一父数据页对应有页***过程。其中,管理节点接收到查询请求后,判断全量***信息包括的***数据页的标识中是否存在第二标识且触发相应的页***过程的LSN为上述的第一LSN,得到的判断结果为是。
可以理解的是,第一父数据页对应有页***过程,则第一父数据页***成第二父数据页和第三父数据页,第二父数据页的标识和第一父数据页的标识相同,第二父数据页为第一数据页***后的数据页的父数据页。若在第一父数据页***前第一父数据页为根数据页,则在第一父数据页***后会生成新的根父数据页,新的根父数据页为第二父数据页和第三父数据页的父数据页。若在第一父数据页***前第一父数据页不为根数据页,则第二父数据页和第三父数据页的父数据页至少会发生更新,还有可能发生页***过程。
b2、从计算节点从存储节点读取第二父数据页至目标父数据页的各数据页,其中,目标父数据页未对应有页***过程且位于根数据页和第二父数据页之间或者目标父数据页为根数据页,第二父数据页为第一父数据页***后的数据页且第二父数据页为第一数据页的父数据页。
具体地,在从计算节点确定在存储节点中第一父数据页对应有页***过程之后,继续确定第一父数据页***成的第二父数据页的父数据页(后续称为第四父数据页)是否发生页***(参照确定第一父数据页是否对应有页***过程的方法),若第四父数据页未对应有页***过程,则获取第二父数据页和第四父数据页(此时第四父数据页为目标父数据页),若第四父数据页对应有页***过程,则继续确定第四父数据页的父数据页(后续称为第五父数据页)是否发生页***;重复上述过程,直至确定目标父数据页未对应有页***过程。可以理解的是,存在目标父数据页为根结点对应的根数据页的情况。
b3、从计算节点根据第二父数据页至目标父数据页的各数据页,确定目标数据页。
同样的,从计算节点根据第二父数据页确定的目标数据页可能为存储节点中标识为第一标识的第一数据页,也可能存储节点为不同于第一数据页的第二数据页。
可按照目前的B树或B树的变体的搜索方法,根据第二父数据页至目标父数据页的各数据页,确定目标数据页,此处不再赘述。
步骤S807、从计算节点向存储节点发送目标数据页的读取请求。
其中,目标数据页的读取请求可包括目标数据页的标识。
步骤S808、存储节点根据读取目标数据页的请求,获取目标数据页。
存储节点根据目标数据页的标识,获取目标数据页。
存储节点获取目标数据页后,向从计算节点发送目标数据页,从计算节点接收目标数据页,该目标数据页与从计算节点获取到的第二父数据页相匹配或者第二父数据页至目标父数据页的各数据页相匹配,从计算机节点可以获取到正确的数据。
本实施例中,在从计算节点需要读取某一数据页的子数据页时,可根据***信息确定该子数据页是否对应有页***过程,以在该子数据页对应有页***过程的情况下,根据页***过程的发生时机,确定正确的读取数据页,以使从计算节点中的父数据页和子数据页相互匹配,即从计算节点能够读取到正确的数据。
其次,采用具体的实施例对存储节点中未存储有***信息,从计算节点和/或管理节点中存储有全量***信息所对应的数据读取方法进行说明。
图9为本申请实施例提供的数据读取方法的流程图二,参见图9,本实施例的方法,包括:
步骤S901、从计算节点确定待读取数据页的标识为第一标识,待读取数据页为从计算节点中的第一父数据页的子数据页。
从计算节点中存储有第一父数据页,在需要读取第一父数据页的子数据页,确定该子数据页的标识为第一标识。从计算节点确定其缓存中是否包括标识为第一标识的该子数据页,若包括,则从缓存中获取该子数据页,并应用该子数据页。其中,应用该子数据页比如可为发送至终端设备以显示该子数据页所对应的数据。若从计算节点确定其缓存中不包括标识为第一标识的该子数据页,则从计算节点确定从存储节点中读取该子数据页。
步骤S902、从计算节点确定在存储节点中标识为第一标识的第一数据页对应有页***过程。
在一种方式中,从计算节点中存储有全量***信息。相应地,从计算节点确定在存储节点中第一数据页对应有页***过程,包括:确定全量***信息包括的***数据页的标识中存在第一标识。
该种方式可以提高数据读取效率,减少网络开销。
在另一种方式中,从计算节点中未存储有全量***信息,管理节点中存储有全量***信息。相应地,从计算节点确定第一数据页对应有页***过程,包括:从计算节点向管理节点发送查询请求,查询请求包括第一标识,查询请求指示管理节点根据全量***信息确定第一数据页是否对应有页***过程;从计算节点接收来自管理节点的查询结果,查询结果指示第一数据页对应有页***过程。其中,管理节点接收到查询请求后,确定全量***信息包括的***数据页的标识中是否存在第一标识,得到的确定结果为是。
该种方式可以节省从计算节点的存储空间。
步骤S903、从计算节点根据第一数据页对应的页***过程的发生时机,确定目标数据页。
其中,从计算节点确定第一数据页对应的页***过程的发生时机的具体实现参照图8所示的实施例中的存储节点确定根据第一数据页对应的页***过程的发生时机的具体实现。
若第一数据页对应的页***过程发生在存储节点得到第一父数据页之后,在一种方式中,则从计算节点确定目标数据页,包括:从计算节点确定在存储节点中第一父数据页未对应有页***过程;从存储节点读取第二父数据页,第二父数据页为第一数据页对应的页***过程发生之后被更新的第一父数据页;根据第二父数据页确定目标数据页。该种方式中的各步的具体实现参见图8所示的实施例中的阐述。
若第一数据页对应的页***过程发生在存储节点得到第一父数据页之后,第一数据页为第一父数据页的子数据页,在一种方式中,则从计算节点确定目标数据页,包括:从计算节点确定在存储节点中第一父数据页对应有页***过程;从存储节点读取第二父数据页至目标父数据页的各数据页,其中,目标父数据页未对应有页***过程且位于根数据页和第二父数据页之间或者目标父数据页为所述根数据页,第二父数据页为第一父数据页***后的数据页且第二父数据页为第一数据页的父数据页;根据第二父数据页至目标父数据页的各数据页,确定目标数据页。该种方式中的各步的具体实现参见图8所示的实施例中的阐述。
若第一数据页对应的页***过程发生在存储节点得到第一父数据页之前,则确定目标数据页,包括:确定存储节点中的第一数据页为目标数据页。
若第一数据页对应的页***过程的发生时机包括:存储节点的数据回放速度慢于从计算节点的数据回放速度且存储节点中第一数据页对应的页***过程待发生,则包括:确定存储节点对第一LSN的日志回放完毕;确定存储节点中的第一数据页为目标数据页。
步骤S904、从计算节点从存储节点读取目标数据页。
本实施例中,在从计算节点需要读取某一数据页的子数据页时,可根据***信息确定该子数据页是否对应有页***过程,以在该子数据页对应有页***过程的情况下,根据页***过程的发生时机,确定正确的读取数据页,以使从计算节点中的父数据页和子数据页相互匹配,即从计算节点能够读取到正确的数据。
综上,对于图9所示的实施例中,若全量***信息存储在管理节点,未存储在从计算节点,存储节点中也未存储有全量***信息或部分***信息,从计算节点每次需要从存储节点中读取数据均需要向管理节点请求要读取的数据页是否对应有页***过程,网络开销很大。一种改进的方式为图9所示的实施例中全量***信息存储在从计算节点的情况,此时,从计算节点无需向管理节点请求要读取的数据页是否对应有页***过程,降低了网络开销。另一种改进的方式为图8所示的实施例中存储节点中存储有部分***信息,此时,在存储节点接收到从计算节点发送的数据页读取请求时,根据存储的部分***信息确定待读取数据页是否对应有页***过程,且在待读取数据页对应有页***过程且页***过程在一定的发生时机下才会使用到全量***信息,无论全量***信息存储在从计算节点还是管理节点,均相对于“全量***信息存储在管理节点、未存储在从计算节点以及存储节点中也未存储有全量***信息或部分***信息”的方案的网络开销少。
接着,采用具体的实施例对***信息的创建和清理过程进行说明。
由于所有的写操作均在主计算节点进行,当一个数据页发生***时,所有涉及到的数据页均应当在主计算节点的缓存中,所以主计算节点存储有所有相关数据页的信息,因此,***信息可以是由主计算节点创建的,初始过程中,主计算节点向其它的节点发送新创建的***信息,比如向从计算节点或管理节点发送全量***信息,向存储节点发送部分***信息。在后续过程中,主节点发送新增的***信息至存储有***信息的节点,以更新节点中存储的***信息。
随着数据的增多,页***的情况的会不断发生,那么***信息中的信息量会越来越多,因此我们需要对***信息进行清理。清理过程可由管理节点控制。
其中,在从计算节点和存储节点中,redo日志的回放是按照LSN大小的顺序回放,所以LSN小于当前回放过的LSN的日志将不会被看到。基于这样的事实,可以根据从计算节点和存储节点当前回放的日志的LSN来进行清理。比如在一种方案中,管理节点确定从计算节点最新回放的日志的LSN和存储节点最新回放的日志的LSN中较小的LSN,并将该较小的LSN发送至存储有***信息的各节点,以使存储有***信息的各节点删除***信息中小于该较小的LSN所对应的信息。例如从计算节点已经应用到了LSN为100的日志,存储节点应用到了LSN为120的日志,那么我们就可以清理***信息中触发页***过程的日志的LSN小于100的页***过程的信息。
本实施例给出了***信息的生成和删除的具体实现,以用于上述的数据读取过程。
以上对本申请实施里的数据读取方法进行了说明,下面对本申请实施例涉及的装置进行说明。
图10为本申请实施例提供的一种数据读取装置的结构示意图。如图10所示,该数据读取装置1000可以是如上的从计算节点,也可以是如上的从计算节点的部件(例如,集成电路,芯片等等)。该数据读取装置1000还可以是如上的存储节点,也可以是如上的存储节点的部件(例如,集成电路,芯片等等)。该数据读取装置1000可以包括:处理模块1002(处理单元)。可选的,还可以包括收发模块1001(收发单元)和存储模块1003(存储单元)。
在一种可能的设计中,如图10中的一个或者多个模块可能由一个或者多个处理器来实现,或者由一个或者多个处理器和存储器来实现;或者由一个或多个处理器和收发器实现;或者由一个或者多个处理器、存储器和收发器实现,本申请实施例对此不作限定。所述处理器、存储器、收发器可以单独设置,也可以集成。
所述数据读取装置具备实现本申请实施例描述的从计算节点的功能,比如,所述数据读取装置包括从计算节点执行本申请实施例描述的从计算节点涉及步骤所对应的模块或单元或手段(means),所述功能或单元或手段(means)可以通过软件实现,或者通过硬件实现,也可以通过硬件执行相应的软件实现,还可以通过软件和硬件结合的方式实现。详细可进一步参考前述对应方法实施例中的相应描述。
或者所述数据读取装置具备实现本申请实施例描述的存储节点的功能,比如,所述数据读取装置包括所述存储节点执行本申请实施例描述的存储节点涉及步骤所对应的模块或单元或手段(means),所述功能或单元或手段(means)可以通过软件实现,或者通过硬件实现,也可以通过硬件执行相应的软件实现,还可以通过软件和硬件结合的方式实现。详细可进一步参考前述对应方法实施例中的相应描述。
可选的,本申请实施例中的数据读取装置1000中各个模块可以用于执行本申请方法实施例中描述的方法。
在第一种可能的设计中,一种数据读取装置1000可包括收发模块1001和处理模块1002。
收发模块1001,用于从计算节点接收数据页读取请求,所述数据页读取请求包括第一标识;处理模块1002,用于确定在数据读取装置中标识为所述第一标识的第一数据页对应有页***过程;收发模块1001,还用于根据所述页***过程的发生时机,向所述计算节点发送目标数据页,所述目标数据页为所述第一数据页或者第二数据页。
可选地,所述数据读取装置中存储有部分***信息;所述部分***信息包括部分页***过程所对应的***数据页的标识以及触发页***过程的日志的日志序列号LSN,且所述部分页***过程所对应的***数据页均存储在所述数据读取装置中;所述处理模块1002,具体用于确定所述部分***信息包括的***数据页的标识中存在所述第一标识。
可选地,所述第一标识是所述计算节点确定的待读取数据页的标识,待读取数据页为所述计算节点中的第一父数据页的子数据页。
可选地,所述数据页读取请求包括所述第一标识和所述计算点中的所述第一父数据页的第三LSN;在所述收发模块1001根据所述页***过程的发生时机,向所述计算节点发送所述目标数据页之前,所述处理模块1002还用于:根据触发所述页***过程的日志的第一LSN、数据读取装置中所述第一数据页的第二LSN以及所述第三LSN,确定所述页***过程的发生时机。
可选地,所述处理模块1002具体用于:若所述第三LSN小于所述第一LSN且所述第一LSN小于或等于所述第二LSN,则确定所述页***过程发生在所述数据读取装置得到所述第一父数据页之后;若所述第一LSN小于所述第二LSN且所述第一LSN小于所述第三LSN,则确定所述页***过程发生在所述数据读取装置得到所述第一父数据页之前;若所述第二LSN小于所述第一LSN且所述第一LSN小于或等于所述第三LSN,则确定所述数据读取装置的数据回放速度慢于所述计算节点的数据回放速度且在所述数据读取装置中所述页***过程待发生。
可选地,所述页***过程的发生在所述数据读取装置得到所述第一父数据页之后;在所述收发模块1001向所述计算节点发送目标数据页之前,所述收发模块1001还用于:向所述计算节点发送第一信息,所述第一信息用于所述计算节点确定待读取的所述目标数据页;接收来自所述计算节点的所述目标数据页的读取请求。
可选地,所述第一信息包括:触发所述页***过程的日志的第一LSN和指示信息,所述指示信息指示所述页***过程发生在所述数据读取装置得到第一父数据页之后。
可选地,所述页***过程发生在所述数据读取装置得到所述第一父数据页之前,所述目标数据页为所述数据读取装置中的所述第一数据页。
可选地,所述数据读取装置的数据回放速度慢于所述计算节点的数据回放速度且在所述数据读取装置中所述页***过程待发生,所述目标数据页为所述数据读取装置中的所述第一数据页。在所述收发模块1001向所述计算节点发送所述第一数据页之前,所述处理模块1002还用于:确定所述数据读取装置对LSN为所述第一LSN的日志回放完毕。
上述第一种可能设计中的数据读取装置可为上述图8所示的方法实施中的存储节点或者存储节点的一部分。
在第二种可能的设计中,一种数据读取装置1000可包括收发模块1001和处理模块1002。
处理模块1002,用于确定待读取数据页的标识为第一标识,所述待读取数据页为所述计算节点中的第一父数据页的子数据页;收发模块1001,用于向存储节点发送数据页读取请求,所述数据页读取请求包括所述第一标识,所述第一标识用于所述存储节点确定标识为第一标识的第一数据页对应的页***过程的发生时机以及根据所述发生时机向所述数据读取装置发送目标数据页;所述收发模块1001,还用于从所述存储节点接收目标数据页,所述目标数据页为第二数据页或者所述第一数据页。
可选地,在所述收发模块1001从所述存储节点接收目标数据页之前:所述收发模块1001,还用于接收来自所述存储节点的第一信息,所述第一信息包括:触发所述页***过程的日志的第一日志序列号LSN和指示信息,所述指示信息指示所述页***过程发生在所述存储节点得到所述第一父数据页之后;所述处理模块1002,还用于根据所述第一信息,确定目标数据页;所述收发模块1001,还用于向所述存储节点发送读取所述目标数据页的请求。
可选地,所述处理模块1002具体用于:根据所述第一信息,确定在所述存储节点中第一父数据页未对应有页***过程;从所述存储节点读取第二父数据页,所述第二父数据页为所述页***过程发生之后被更新的第一父数据页;根据所述第二父数据页确定所述目标数据页。
可选地,所述处理模块1002具体用于:根据所述第一信息确定在所述存储节点中所述第一父数据页对应有页***过程;从存储节点读取第二父数据页至目标父数据页的各数据页,其中,所述目标父数据页未对应有页***过程且位于根数据页和所述第二父数据页之间或者所述目标父数据页为所述根数据页,所述第二父数据页为所述第一父数据页***后的数据页且所述第二父数据页为所述第一数据页的父数据页;根据所述第二父数据页至所述目标父数据页的各数据页,确定所述目标数据页。
可选地,所述数据存储装置中存储有全量***信息,所述全量***信息包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;所述处理模块1002,具体用于:根据所述第一信息,确定所述全量***信息包括的***数据页的标识中存在所述第二标识且触发相应的页***过程的LSN为所述第一LSN,所述第二标识为所述第一父数据页的标识。
可选地,所述数据存储装置中未存储有全量***信息,管理节点中存储有所述全量***信息;所述全量***信息包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;所述处理模块1002具体用于:根据所述指示信息,控制所述收发模块1001向管理节点发送查询请求,所述查询请求包括所述第一LSN和所述第二标识,所述查询请求指示所述管理节点根据所述全量***信息确定在所述存储节点中所述第一父数据页是否对应有页***过程;根据所述收发模块1001接收的来自所述管理节点的查询结果,确定所述在所述存储节点中所述第一父数据页对应有页***过程,所述查询结果指示在所述存储节点中所述第一父数据页对应有页***过程。
上述第二种可能设计中的数据读取装置可为上述方法实施中的从计算节点或者从计算节点的一部分。
在第三种可能的设计中,一种数据读取装置1000可包括收发模块1001和处理模块1002。
处理模块1002,用于确定待读取数据页的标识为第一标识,所述待读取数据页为所述数据读取装置中的所述第一父数据页的子数据页;确定存储节点中标识为所述第一标识的第一数据页对应有页***过程;根据所述页***过程的发生时机,确定目标数据页;从所述存储节点读取所述目标数据页。
可选地,所述数据读取装置中存储有全量***信息,所述全量***信息中包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;所述处理模块1002,具体用于:确定所述全量***信息包括的***数据页的标识中存在所述第一标识。
可选地,还包括收发模块1001;所述数据读取装置中未存储有全量***信息,所述管理节点中存储有全量***信息,所述全量***信息中包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;所述处理模块1002,具体用于控制收发模块1001向所述管理节点发送查询请求,所述查询请求包括所述第一标识,所述查询请求指示所述管理节点根据所述全量***信息确定所述第一数据页在所述存储节点中对应有页***过程;以及根据收发模块1001接收的来自所述管理节点的查询结果确定所述第一数据页在所述存储节点中对应有页***过程,所述查询结果指示所述第一数据页在所述存储节点中对应有页***过程。
可选地,在所述处理模块1002根据所述页***过程的发生时机,确定目标数据页之前,所述处理模块1002还用于:根据触发所述页***过程的日志的第一LSN、存储节点中的所述第一数据页的第二LSN以及所述数据读取装置中的第一父数据页的第三LSN,确定所述页***过程的发生时机。
可选地,所述处理模块1002具体用于:若所述第三LSN小于所述第一LSN且所述第一LSN小于或等于所述第二LSN,则确定所述页***过程发生在所述存储节点得到所述第一父数据页之后;若所述第一LSN小于所述第二LSN且所述第一LSN小于所述第三LSN,则确定所述页***过程发生在所述存储节点得到所述第一父数据页之前;若所述第二LSN小于所述第一LSN,所述第一LSN小于或等于所述第三LSN,则确定所述存储节点的数据回放速度慢于所述数据读取装置的数据回放速度且在所述存储节点中所述页***过程待发生。
可选地,若所述页***过程发生在所述存储节点得到所述第一父数据页之后,则所述处理模块1002具体用于:确定在所述存储节点中所述第一父数据页未对应有页***过程;从存储节点读取第二父数据页,所述第二父数据页为所述页***发生后被更新的第一父数据页;根据所述第二父数据页确定目标数据页。
可选地,若所述页***过程发生在所述存储节点得到第一父数据页之后,则所述处理模块1002具体用于:确定在所述存储节点中所述第一父数据页对应有页***过程;从存储节点读取第二父数据页至目标父数据页的各数据页,其中,所述目标父数据页未对应有页***过程且位于根数据页和所述第二父数据页之间或者所述目标父数据页为所述根数据页,所述第二父数据页为所述第一父数据页***后的数据页且所述第二父数据页为所述第一数据页的父数据页;根据所述第二父数据页至所述目标父数据页的各数据页,确定所述目标数据页。
可选地,若所述页***过程发生在所述存储节点得到所述第一父数据页之前,则所述处理模块1002具体用于:确定存储节点中的所述第一数据页为目标数据页。
可选地,若存储节点的数据回放速度慢于数据读取装置的数据回放速度且存储节点中所述页***过程待发生,则所述处理模块1002具体用于:确定所述存储节点对所述第一LSN的日志回放完毕;确定存储节点中的所述第一数据页为目标数据页。
上述第三种可能设计中的数据读取装置可为上述图9所示的方法实施中的从计算节点或者从计算节点的一部分。
本实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图11所示,是实现本申请实施例的数据读取方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图11所示,该电子设备包括:一个或多个处理器1101、存储器1102,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器***)。图11中以一个处理器1101为例。
存储器1102即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据读取方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据读取方法。
存储器1102作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据读取方法对应的程序指令/模块(例如,附图10所示的处理模块1002和收发模块1001)。处理器1101通过运行存储在存储器1102中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据读取方法。
存储器1102可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储实现数据读取方法的电子设备的使用所创建的数据等。此外,存储器1102可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1102可选包括相对于处理器1101远程设置的存储器,这些远程存储器可以通过网络连接至实现数据读取方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实现数据读取方法的电子设备还可以包括:输入装置1103和输出装置1104。处理器1101、存储器1102、输入装置1103和输出装置1104可以通过总线或者其他方式连接,图11中以通过总线连接为例。
输入装置1103可接收输入的数字或字符信息,以及产生与实现数据读取方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1104可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
本申请中在需要读取存储节点中某一数据页的子数据页时,可根据***信息确定该子数据页是否对应有页***过程,以在该子数据页对应有页***过程的情况下,根据页***过程的发生时机,确定待读取的数据页,以使从计算节点得到父数据页和子数据页相互匹配,即从计算节点能够读取到正确的数据。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (25)
1.一种数据读取方法,其特征在于,应用于存储节点,所述方法包括:
从计算节点接收数据页读取请求,所述数据页读取请求包括第一标识;
确定在所述存储节点中标识为所述第一标识的第一数据页对应有页***过程;
根据所述页***过程的发生时机,向所述计算节点发送目标数据页,所述目标数据页为所述第一数据页或者第二数据页;
所述存储节点存储有部分***信息;所述部分***信息包括部分页***过程所对应的***数据页的标识以及触发页***过程的日志的日志序列号LSN,所述部分页***过程所对应的***数据页存储在所述存储节点中;
确定在所述存储节点中标识为所述第一标识的第一数据页对应有页***过程,包括:确定所述部分***信息包括的***数据页的标识中存在所述第一标识;
所述第一标识是所述计算节点确定的待读取数据页的标识,待读取数据页为所述计算节点中的第一父数据页的子数据页;
所述数据页读取请求还包括所述第一父数据页的第三LSN;
在所述根据所述页***过程的发生时机,向所述计算节点发送所述目标数据页之前,还包括:根据触发所述页***过程的日志的第一LSN、存储节点中的所述第一数据页的第二LSN以及所述第三LSN,确定所述页***过程的发生时机。
2.根据权利要求1所述的方法,其特征在于,所述确定所述页***过程的发生时机,包括:
若所述第三LSN小于所述第一LSN且所述第一LSN小于或等于所述第二LSN,则确定所述页***过程发生在所述存储节点得到所述第一父数据页之后;
若所述第一LSN小于所述第二LSN且所述第一LSN小于所述第三LSN,则确定所述页***过程发生在所述存储节点得到所述第一父数据页之前;
若所述第二LSN小于所述第一LSN且所述第一LSN小于或等于所述第三LSN,则确定所述存储节点的数据回放速度慢于所述计算节点的数据回放速度且在所述存储节点中所述页***过程待发生。
3.根据权利要求1或2所述的方法,其特征在于,所述页***过程的发生在所述存储节点得到所述第一父数据页之后,在向所述计算节点发送目标数据页之前,还包括:
向所述计算节点发送第一信息,所述第一信息用于所述计算节点确定目标数据页;
接收来自所述计算节点的所述目标数据页的读取请求。
4.根据权利要求3所述的方法,其特征在于,所述第一信息包括:触发所述页***过程的日志的第一LSN和指示信息,所述指示信息指示所述页***过程发生在所述存储节点得到所述第一父数据页之后。
5.根据权利要求1或2所述的方法,其特征在于,所述页***过程发生在所述存储节点得到所述第一父数据页之前,所述目标数据页为所述存储节点中的所述第一数据页。
6.根据权利要求1或2所述的方法,其特在于,所述存储节点的数据回放速度慢于所述计算节点的数据回放速度且在所述存储节点中所述页***过程待发生,所述目标数据页为所述存储节点中的所述第一数据页;在向所述计算节点发送标识为所述第一标识的所述第一数据页之前,还包括:
确定所述存储节点对LSN为所述第一LSN的日志回放完毕。
7.一种数据读取方法,其特征在于,应用于计算节点,所述方法包括:
确定待读取数据页的标识为第一标识,所述待读取数据页为所述计算节点中的第一父数据页的子数据页;
向存储节点发送数据页读取请求,所述数据页读取请求包括所述第一标识,所述第一标识用于所述存储节点确定标识为第一标识的第一数据页对应的页***过程的发生时机以及根据所述发生时机向所述计算节点发送目标数据页;
从所述存储节点接收目标数据页,所述目标数据页为第二数据页或者所述第一数据页;
在从所述存储节点接收目标数据页之前,还包括:
接收来自所述存储节点的第一信息,所述第一信息包括:触发所述页***过程的日志的第一日志序列号LSN和指示信息,所述指示信息指示所述页***过程发生在所述存储节点得到所述第一父数据页之后;
根据所述第一信息,确定目标数据页;
向所述存储节点发送读取所述目标数据页的请求。
8.根据权利要求7所述的方法,其特征在于,所述根据所述第一信息,确定目标数据页,包括:
根据所述第一信息,确定在所述存储节点中所述第一父数据页未对应有页***过程;
从所述存储节点读取第二父数据页,所述第二父数据页为所述页***过程发生之后被更新的第一父数据页;
根据所述第二父数据页确定所述目标数据页。
9.根据权利要求7所述的方法,其特在于,所述根据所述第一信息,确定目标数据页,包括:
根据所述第一信息确定在所述存储节点中所述第一父数据页对应有页***过程;
从存储节点读取第二父数据页至目标父数据页的各数据页,其中,所述目标父数据页未对应有页***过程且位于根数据页和所述第二父数据页之间或者所述目标父数据页为所述根数据页,所述第二父数据页为所述第一父数据页***后的数据页且所述第二父数据页为所述第一数据页的父数据页;
根据所述第二父数据页至所述目标父数据页的各数据页,确定所述目标数据页。
10.根据权利要求9所述的方法,其特征在于,所述计算节点中存储有全量***信息,所述全量***信息包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;
所述根据所述第一信息,确定在所述存储节点中所述第一父数据页对应有页***过程,包括:根据所述指示信息,确定所述全量***信息包括的***数据页的标识中存在所述第二标识且触发相应的页***过程的LSN为所述第一LSN,所述第二标识为所述第一父数据页的标识。
11.根据权利要求9所述的方法,其特征在于,所述计算节点中未存储有全量***信息,管理节点中存储有所述全量***信息;所述全量***信息包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;
所述根据所述第一信息,确定在所述存储节点中所述第一父数据页对应有页***过程,包括:
根据所述指示信息,向管理节点发送查询请求,所述查询请求包括所述第一LSN和所述第二标识,所述查询请求指示所述管理节点根据所述全量***信息确定在所述存储节点中所述第一父数据页是否对应有页***过程;
接收来自所述管理节点的查询结果,所述查询结果指示在所述存储节点中所述第一父数据页对应有页***过程。
12.一种数据读取方法,其特征在于,应用于计算节点,所述方法包括:
确定待读取数据页的标识为第一标识,所述待读取数据页为所述计算节点中的第一父数据页的子数据页;
确定存储节点中标识为所述第一标识的第一数据页对应有页***过程;
根据所述页***过程的发生时机,确定目标数据页;
从所述存储节点读取所述目标数据页;
所述计算节点中存储有全量***信息,所述全量***信息中包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;
确定存储节点中标识为所述第一标识的第一数据页对应有页***过程,包括:确定所述全量***信息包括的***数据页的标识中存在所述第一标识;
所述计算节点中未存储有全量***信息,所述管理节点中存储有全量***信息,所述全量***信息中包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;
确定存储节点中标识为所述第一标识的第一数据页对应有页***过程,包括:
向所述管理节点发送查询请求,所述查询请求包括所述第一标识,所述查询请求指示所述管理节点根据所述全量***信息确定所述第一数据页在所述存储节点中对应有页***过程;
接收来自所述管理节点的查询结果,所述查询结果指示所述第一数据页在所述存储节点中对应有页***过程。
13.一种数据读取装置,其特征在于,包括:
收发模块,用于从计算节点接收数据页读取请求,所述数据页读取请求包括第一标识;
处理模块,用于确定在数据读取装置中标识为所述第一标识的第一数据页对应有页***过程;
收发模块,还用于根据所述页***过程的发生时机,向所述计算节点发送目标数据页,所述目标数据页为所述第一数据页或者第二数据页;
所述数据读取装置中存储有部分***信息;所述部分***信息包括部分页***过程所对应的***数据页的标识以及触发页***过程的日志的日志序列号LSN,且所述部分页***过程所对应的***数据页均存储在所述数据读取装置中;
所述处理模块,具体用于确定所述部分***信息包括的***数据页的标识中存在所述第一标识;
所述第一标识是所述计算节点确定的待读取数据页的标识,待读取数据页为所述计算节点中的第一父数据页的子数据页;
所述数据页读取请求还包括所述计算节点中的所述第一父数据页的第三LSN;
在所述收发模块根据所述页***过程的发生时机,向所述计算节点发送所述目标数据页之前,所述处理模块还用于:
根据触发所述页***过程的日志的第一LSN、数据读取装置中的所述第一数据页的第二LSN以及所述第三LSN,确定所述页***过程的发生时机。
14.根据权利要求13所述的装置,其特征在于,所述处理模块具体用于:
若所述第三LSN小于所述第一LSN且所述第一LSN小于或等于所述第二LSN,则确定所述页***过程发生在所述数据读取装置得到所述第一父数据页之后;
若所述第一LSN小于所述第二LSN且所述第一LSN小于所述第三LSN,则确定所述页***过程发生在所述数据读取装置得到所述第一父数据页之前;
若所述第二LSN小于所述第一LSN且所述第一LSN小于或等于所述第三LSN,则确定所述数据读取装置的数据回放速度慢于所述计算节点的数据回放速度且在所述数据读取装置中所述页***过程待发生。
15.根据权利要求13或14所述的装置,其特征在于,所述页***过程的发生在所述数据读取装置得到所述第一父数据页之后;在所述收发模块向所述计算节点发送目标数据页之前,所述收发模块还用于:
向所述计算节点发送第一信息,所述第一信息用于所述计算节点确定所述目标数据页;
接收来自所述计算节点的所述目标数据页的读取请求。
16.根据权利要求15所述的装置,其特征在于,所述第一信息包括:触发所述页***过程的日志的第一LSN和指示信息,所述指示信息指示所述页***过程发生在所述数据读取装置得到所述第一父数据页之后。
17.根据权利要求13或14所述的装置,其特征在于,所述页***过程发生在所述数据读取装置得到所述第一父数据页之前,所述目标数据页为所述数据读取装置中的所述第一数据页。
18.根据权利要求13所述的装置,其特在于,所述数据读取装置的数据回放速度慢于所述计算节点的数据回放速度且在所述数据读取装置中所述页***过程待发生,所述目标数据页为所述数据读取装置中的所述第一数据页;在所述收发模块向所述计算节点发送所述第一数据页之前,所述处理模块还用于:确定所述数据读取装置对LSN为所述第一LSN的日志回放完毕。
19.一种数据读取装置,其特征在于,包括:
处理模块,用于确定待读取数据页的标识为第一标识,所述待读取数据页为所述计算节点中的第一父数据页的子数据页;
收发模块,用于向存储节点发送数据页读取请求,所述数据页读取请求包括所述第一标识,所述第一标识用于所述存储节点确定标识为第一标识的第一数据页对应的页***过程的发生时机以及根据所述发生时机向所述数据读取装置发送目标数据页;
所述收发模块,还用于从所述存储节点接收目标数据页,所述目标数据页为第二数据页或者所述第一数据页;
在所述收发模块从所述存储节点接收目标数据页之前:
所述收发模块,还用于接收来自所述存储节点的第一信息,所述第一信息包括:触发所述页***过程的日志的第一日志序列号LSN和指示信息,所述指示信息指示所述页***过程发生在所述存储节点得到第一父数据页之后;
所述处理模块,还用于根据所述第一信息,确定目标数据页;
所述收发模块,还用于向所述存储节点发送读取所述目标数据页的请求。
20.根据权利要求19所述的装置,其特征在于,所述处理模块具体用于:
根据所述第一信息,确定在所述存储节点中所述第一父数据页未对应有页***过程;
从所述存储节点读取第二父数据页,所述第二父数据页为所述页***过程发生之后被更新的第一父数据页;
根据所述第二父数据页确定所述目标数据页。
21.根据权利要求19所述的装置,其特在于,所述处理模块具体用于:
根据所述第一信息确定在所述存储节点中所述第一父数据页对应有页***过程;
从存储节点读取第二父数据页至目标父数据页的各数据页,其中,所述目标父数据页未对应有页***过程且位于根数据页和所述第二父数据页之间或者所述目标父数据页为所述根数据页,所述第二父数据页为所述第一父数据页***后的数据页且所述第二父数据页为所述第一数据页的父数据页;
根据所述第二父数据页至所述目标父数据页的各数据页,确定所述目标数据页。
22.根据权利要求21所述的装置,其特征在于,所述数据读取装置中存储有全量***信息,所述全量***信息包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;
所述处理模块,具体用于:根据所述第一信息,确定所述全量***信息包括的***数据页的标识中存在所述第二标识且触发相应的页***过程的LSN为所述第一LSN,所述第二标识为所述第一父数据页的标识。
23.根据权利要求21所述的装置,其特征在于,所述数据读取装置中未存储有全量***信息,管理节点中存储有所述全量***信息;所述全量***信息包括各页***过程所对应的***数据页的标识以及触发各页***过程的日志的LSN;
所述处理模块具体用于:
根据所述指示信息,控制所述收发模块向管理节点发送查询请求,所述查询请求包括所述第一LSN和所述第二标识,所述查询请求指示所述管理节点根据所述全量***信息确定在所述存储节点中所述第一父数据页是否对应有页***过程;
根据所述收发模块接收的来自所述管理节点的查询结果,确定所述在所述存储节点中所述第一父数据页对应有页***过程,所述查询结果指示在所述存储节点中所述第一父数据页对应有页***过程。
24.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法或者7-11中任一项所述的方法或者12中任一项所述的方法。
25.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-6中任一项所述的方法或者7-11中任一项所述的方法或者12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010081830.7A CN111290714B (zh) | 2020-02-06 | 2020-02-06 | 数据读取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010081830.7A CN111290714B (zh) | 2020-02-06 | 2020-02-06 | 数据读取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111290714A CN111290714A (zh) | 2020-06-16 |
CN111290714B true CN111290714B (zh) | 2023-09-05 |
Family
ID=71024539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010081830.7A Active CN111290714B (zh) | 2020-02-06 | 2020-02-06 | 数据读取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111290714B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112379844A (zh) * | 2020-11-25 | 2021-02-19 | 深圳市华宝电子科技有限公司 | 一种数据保护方法、装置、电子终端及存储介质 |
CN115114370B (zh) * | 2022-01-20 | 2023-06-13 | 腾讯科技(深圳)有限公司 | 主从数据库的同步方法、装置、电子设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5915254A (en) * | 1994-10-20 | 1999-06-22 | Fujitsu Limited | File storing system for managing a relational data base including information of a parental relationship |
CN1612112A (zh) * | 2003-10-30 | 2005-05-04 | 微软公司 | 用于地址翻译控制的阴影页表 |
CN105122241A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库*** |
CN105550345A (zh) * | 2015-12-25 | 2016-05-04 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
CN105631035A (zh) * | 2016-01-04 | 2016-06-01 | 北京百度网讯科技有限公司 | 数据存储方法和装置 |
CN105989140A (zh) * | 2015-02-27 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种数据块处理方法和设备 |
US9519664B1 (en) * | 2013-09-20 | 2016-12-13 | Amazon Technologies, Inc. | Index structure navigation using page versions for read-only nodes |
CN109299067A (zh) * | 2018-08-22 | 2019-02-01 | 北京百度网讯科技有限公司 | 页面访问方法、装置和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8805800B2 (en) * | 2010-03-14 | 2014-08-12 | Microsoft Corporation | Granular and workload driven index defragmentation |
US10229009B2 (en) * | 2015-12-16 | 2019-03-12 | Netapp, Inc. | Optimized file system layout for distributed consensus protocol |
-
2020
- 2020-02-06 CN CN202010081830.7A patent/CN111290714B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5915254A (en) * | 1994-10-20 | 1999-06-22 | Fujitsu Limited | File storing system for managing a relational data base including information of a parental relationship |
CN1612112A (zh) * | 2003-10-30 | 2005-05-04 | 微软公司 | 用于地址翻译控制的阴影页表 |
CN105122241A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库*** |
CN109933597A (zh) * | 2013-03-15 | 2019-06-25 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库*** |
US9519664B1 (en) * | 2013-09-20 | 2016-12-13 | Amazon Technologies, Inc. | Index structure navigation using page versions for read-only nodes |
CN105989140A (zh) * | 2015-02-27 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种数据块处理方法和设备 |
CN105550345A (zh) * | 2015-12-25 | 2016-05-04 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
CN105631035A (zh) * | 2016-01-04 | 2016-06-01 | 北京百度网讯科技有限公司 | 数据存储方法和装置 |
CN109299067A (zh) * | 2018-08-22 | 2019-02-01 | 北京百度网讯科技有限公司 | 页面访问方法、装置和存储介质 |
Non-Patent Citations (1)
Title |
---|
Na, Gap oo等.Dynamic In-Page Logging for B+-tree Index.IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING.2012,第24卷(第24期),第1231-1243页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111290714A (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10891264B2 (en) | Distributed, scalable key-value store | |
US10628449B2 (en) | Method and apparatus for processing database data in distributed database system | |
US9934324B2 (en) | Index structure to accelerate graph traversal | |
US20160147809A1 (en) | Exporting and Importing Database Tables in a Multi-User Database Environment | |
CN111241108B (zh) | 基于键值对kv***的索引方法、装置、电子设备和介质 | |
CN105630864A (zh) | 存储行标识符值的字典的强制排序 | |
US10127254B2 (en) | Method of index recommendation for NoSQL database | |
US10002142B2 (en) | Method and apparatus for generating schema of non-relational database | |
US10783142B2 (en) | Efficient data retrieval in staged use of in-memory cursor duration temporary tables | |
US20190179933A1 (en) | Generating sub-indexes from an index to compress the index | |
CN111290714B (zh) | 数据读取方法和装置 | |
US11573961B2 (en) | Delta graph traversing system | |
CN111966633A (zh) | 用于查询目录下子节点的方法、装置、电子设备及介质 | |
EP3869339B1 (en) | Data storage method and apparatus for blockchain, device, and medium | |
CN111523001A (zh) | 用于存储数据的方法、装置、设备以及存储介质 | |
US20170169027A1 (en) | Determining a Display Order for Values in a Multi-Value Field of an Application Card | |
CN111259107A (zh) | 行列式文本的存储方法、装置以及电子设备 | |
Urbani et al. | Adaptive low-level storage of very large knowledge graphs | |
CN109933589B (zh) | 用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法 | |
US10303672B2 (en) | System and method for search indexing | |
CN103593442A (zh) | 日志数据的去重方法及装置 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 | |
CN111459882B (zh) | 分布式文件***的命名空间事务处理方法和装置 | |
CN111523000A (zh) | 用于导入数据的方法、装置、设备以及存储介质 | |
CN112084141A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |