CN113722319A - 基于学习索引的数据存储方法 - Google Patents
基于学习索引的数据存储方法 Download PDFInfo
- Publication number
- CN113722319A CN113722319A CN202110898898.9A CN202110898898A CN113722319A CN 113722319 A CN113722319 A CN 113722319A CN 202110898898 A CN202110898898 A CN 202110898898A CN 113722319 A CN113722319 A CN 113722319A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- key
- target
- layer
- 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 56
- 238000013500 data storage Methods 0.000 title claims abstract description 51
- 238000003672 processing method Methods 0.000 claims abstract description 7
- 238000012549 training Methods 0.000 claims description 12
- 238000003491 array Methods 0.000 claims 1
- 239000000126 substance Substances 0.000 claims 1
- 230000003068 static effect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/061—Improving I/O performance
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种提高数据写入速度的数据存储方法及基于所述数据存储方法的数据读取和写入请求处理方法。所述数据存储方法包括构造一个三层的树形数据索引结构以存储数据,所述树形数据索引结构包括:模型层、解构层和数据存储层。所述模型层由两层学习索引模型组成,第一层学习索引模型为一个RMI模型,第二层学习索引模型为多个PLA模型。所述解构层中的索引节点数组包含一个或多个索引节点,每个所述索引节点中包含N个数据索引。所述数据存储层以数据块的形式存储数据。该方法能够在NVM设备上执行,利用相对静态的解构层减少写入引起的模型重新训练,使得该数据存储方法能够提高写入性能。
Description
技术领域
本申请属于信息存储技术领域,更具体地,涉及基于学习索引的数据存储方法。
背景技术
数字时代下,急剧增长的数据量对存储系统提出了更高的容量和性能要求。一方面,传统DRAM内存面临着容量和能耗等方面的问题,另一方面,经典的范围索引结构B+树索引的时间和空间效率都直接与数据量成负相关,其空间复杂度更是与数据量成线性负相关。
为了解决上述问题,在硬件方面,现在工业界推出了新型非易失性内存NVM(Non-Volatile Memory),它具有按字节寻址、快速访问、掉电非易失、高存储密度和静态功耗低等优良特性,是最有希望的DRAM(Dynamic Random Access Memory)内存的替代者。在软件方面,近两年学术界积极利用机器学习对传统数据索引结构进行探索性优化,被称为学习索引(learned index)。学习索引的核心思想是借助机器学习模型来构建一个由键(key)到存储地址的一一映射,构建好的模型可以通过计算,在常规数据量级别的时间复杂度内预测出与一个键相对应的存储位置,很好地解决了传统数据索引结构在数据规模变大时性能下降的问题。目前在应用适应NVM设备的B+树索引方面已经有非常多的工作了,然而学习索引作为新型的数据索引结构并未被应用到NVM设备中。相比经典范围索引结构B+树索引,学习索引更适合部署在NVM设备上。因为NVM设备的读写性能略微逊色于DRAM设备,每次访问数据存储地址的时间延迟较高,而学习索引拥有恒定的查找操作,所以在数据量大的时候,学习索引拥有更短的访问路径,这会天然的减轻访问时间延迟的影响。并且,现有学习索引结构拥有读写不对称性,其更侧重于数据的读取过程,拥有较好的读取性能。
发明内容
本申请提供了一种提高数据写入速度的数据存储方法及基于所述数据存储方法的数据读取和写入请求处理方法,其目的在于构建一种基于学习索引结构的数据存储方法,该方法能够在NVM设备上运行,相比现有技术能够更充分地利用NVM设备大容量、非易失、可字节寻址等优良特性,并能利用学习索引结构的高性能查询功能弥补NVM设备写入性能相比DRAM设备的不足,使得该数据存储方法拥有很好的写入性能。
为实现上述目的,本申请提供了一种数据存储方法,该方法包括构造一个三层的树形数据索引结构以存储数据,该树形数据索引结构包括:模型层、解构层和数据存储层。其中,所述模型层由两层学习索引模型组成,第一层学习索引模型为一个RMI(RecursiveModel Index)模型,第二层学习索引模型为多个PLA(Piecewise Linear Approximation)模型。所述解构层包括由按键(key)的数值范围分段的多个索引节点(index-node)。所述数据存储层以多个数据块的方式存储所述数据。
进一步地,基于该RMI模型将全局键空间分为包括多个群组(group)的群组数组,其中每个所述群组包含一个所述PLA模型和一个或多个所述索引节点,所述PLA模型对应于所述一个或多个包含在同一所述群组中的索引节点。所述一个或多个索引节点构成索引节点数组。所述数据存储层中的多个数据块中的每一个数据块分别对应于一个所述索引节点并存储一个子数值范围内的所述数据。
进一步地,该方法还包括使用该RMI模型预测该键在该群组数组中的位置,把该键定位到该群组数组中的一个群组。在把该键定位到该群组后,使用该群组包含的PLA模型针对该键进行训练。然后,使用该PLA模型预测出该键在该群组的索引节点数组中的位置。
该解构层中的索引节点数组包含一个或多个索引节点,每个索引节点中包含N个数据索引存储位置,其中N>=1,通常可以默认N=4。当某一个索引节点中实际存储的数据索引的个数M小于N时,该索引节点中为数据索引预留N-M个空存储位置。该数据索引将全局键空间划分为多个连续相邻的子键空间。
该数据存储层存储数据,该数据以数据块的形式被存储,每一个该数据块对应一个该子键空间。在该数据存储层的数据块内部,该数据被无序存储,并在该数据块中使用迭代器用于执行顺序遍历。
该解构层的数据索引和该数据存储层的数据块中的头部元数据长度都为8字节。
本申请的第二方面提供了一种根据第一方面所述数据存储方法的数据读取请求处理方法。
本申请的第三方面提供了一种基于第一方面所述数据存储方法的数据写入请求处理方法。
通过本申请提供的以上技术方案,能够取得以下有益效果:
(1)本申请提出了一种基于学习索引结构的数据存储方法,能够在NVM设备上有效地以学习索引结构代替B+树索引结构,该数据存储方法综合了非易失性内存NVM容量大、非易失、可字节寻址的优势以及学习索引查询速度快的优势。
(2)本申请使用一层RMI模型和一层PLA模型作为学习索引模型,使得该学习索引结构能够快速完成预测,同时完成模型训练所用时间不会很长。
(3)本申请使用具有预留空存储位置机制的解构层,减少了模型层的重新训练次数,提高了该学习索引结构的性能。
附图说明
为了容易理解本发明的优点,将通过参考附图中示出的特定实施例来对以上简要描述的本发明进行更具体的描述。理解这些附图仅描述了本发明的典型实施例,因此不应认为是对本发明范围的限制,将通过使用附图以附加的特征和细节来描述和解释本发明,其中:
图1为本申请实施例提供的网络环境示意图;
图2为本申请实施例提供的基于非易失性内存的学习索引结构示意图;
图3为本申请实施例提供的数据量大于阈值时的结构变化示意图;
图4为本申请实施例提供的数据存储层扩展示意图;
图5为本申请实施例提供的解构层扩展示意图;
图6为本申请实施例提供的全局扩展示意图。
具体实施方式
将容易理解,如本文的附图中一般性描述和示出的,本发明的部件可以以各种不同的配置来布置和设计。因此,如附图所示,对本发明的实施例的以下更详细的描述并非旨在限制所要求保护的本发明的范围,而仅是根据本发明的当前设想的实施例的某些示例的代表。参考附图,将最好地理解当前描述的实施例,其中,相同的部分始终用相同的数字表示。
本发明可以体现为系统、方法和/或计算机程序产品。所述计算机程序产品可以包括其上具有用于使处理器执行本发明的方面的计算机可读程序指令的计算机可读存储介质。
计算机可读存储介质可以是有形设备,其可以保留和存储由指令执行设备使用的指令。计算机可读存储介质可以是例如但不限于电子存储系统、磁存储系统、光存储系统、电磁存储系统、半导体存储系统或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下内容:便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器。仅内存(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)、记忆棒、软盘、机械编码设备,例如打孔卡或凹槽中的凸起结构,上面记录了指令,以及上述内容的任何合适组合。如本文所使用的,计算机可读存储介质不应被理解为本身是瞬态信号,例如无线电波或其他自由传播的电磁波、通过波导传播的电磁波或其他传输介质(例如,穿过的光脉冲光纤电缆)或通过电线传输的电信号。
本文所述的计算机可读程序指令可以经由网络(例如,因特网、局域网、广域网)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储系统、局域网和/或无线网络。该网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应的计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或任一源以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和常规过程编程语言(例如“C”编程语言或类似编程语言)的任何组合编写的代码或目标代码。
计算机可读程序指令可以完全在用户计算机上、部分在用户计算机上、作为独立软件包执行、部分在用户计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以与外部计算机建立连接(用于例如,通过使用Internet服务提供商的Internet)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令来个性化电子电路,以执行本发明的各个方面。
在此可以参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。将理解的是,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令来实现。
可以将这些计算机可读程序指令提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机制,使得该指令经由计算机或其他处理器执行可编程数据处理设备,创建用于实现流程图和/或框图方框中指定的功能/动作的装置。这些计算机可读程序指令也可以存储在计算机可读存储介质中,该计算机可读存储介质可以指导计算机、可编程数据处理装置和/或其他设备以特定方式起作用,从而使得其中存储有指令的计算机可读存储介质。包括指令的制品,该制品包括用于实现流程图和/或框图方框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理设备或其他设备上,以使得在计算机、其他可编程设备或其他设备上执行一系列操作步骤以产生计算机实现过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图方框中指定的功能/动作。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。此外,下面所描述的本申请各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
首先,对本申请涉及的术语进行解释如下:
NVM:Non-Volatile Memory,非易失性内存。
DRAM:Dynamic Random-Access Memory,动态随机访问内存。
RMI:Recursive Model Index,近年来新提出的一种线性学习索引模型。
PLA:Piecewise Linear Approximation,近年来新提出的一种线性学习索引模型。
参照图1,示出了网络环境100的一个示例。呈现网络环境100以示出其中可以实现根据本发明的系统和方法的环境的一个示例。网络环境100通过示例而非限制的方式呈现。实际上,除了所示的网络环境100之外,本文公开的系统和方法可以适用于多种不同的网络环境或者单独的计算机。
如图所示,网络环境100包括通过网络104互连的一台或多台计算机102、106。网络104可以包括例如局域网(LAN)104、广域网(WAN)104、Internet104、Intranet104等。在某些实施例中,计算机102、106可以包括客户端计算机102和服务器计算机106(在本文中也称为“主机”106或“主机系统”106)。通常,客户端计算机102发起通信会话,而服务器计算机106等待并响应来自客户端计算机102的请求。在某些实施例中,计算机102和/或服务器106可以连接到一个或多个内部或外部直接连接的附加存储系统109(例如,硬盘驱动器、固态驱动器、磁带驱动器等阵列)。这些计算机102、106和直接连接的存储系统109可以使用诸如ATA、SATA、SCSI、SAS、光纤通道等协议进行通信。
在某些实施例中,网络环境100可以包括服务器106后面的存储网络108,例如存储区域网络(SAN)108或LAN108(例如,当使用网络附加存储时)。该网络108可以将服务器106连接到一个或多个存储系统,例如硬盘驱动器或固态驱动器的阵列110、磁带库112、单个硬盘驱动器114或固态驱动器114、磁带驱动器116、CD-ROM库等。为了访问存储系统110、112、114、116,主机系统106可以通过从主机106上的一个或多个端口到存储系统110、112、114和116上的一个或多个端口的物理连接进行通信。连接可以通过交换机、结构、直接连接等进行。在某些实施例中,服务器106和存储系统110、112、114、116可以使用诸如光纤通道(FC)或iSCSI之类的联网标准或协议进行通信。
如图2所示,本申请提供一种适用于非易失性内存NVM的基于学习索引结构的数据存储方法,其特征是构建具有三层的树形数据索引结构以存储数据,该树形数据索引结构包括:模型层、解构层和数据存储层。
具体地,该模型层由第一层的RMI模型和第二层的多个PLA模型构成。RMI模型和PLA模型是近年来使用广泛的两种学习索引模型,其中,RMI模型可以快速预测数据的对应位置,但训练时间较长;PLA模型训练时间很短,但数据位置预测速度较慢。本申请使用该模型层的RMI模型将与被存储的全部数据相对应的全局键空间分为包括多个群组(group)的群组数组,每个所述群组包含一个PLA模型和一个或多个解构层中的索引节点(index-node)。使用该RMI模型可以快速定位一个键在所述群组数组中的位置,即把该键定位到该群组数组中的某一个群组。然后,本申请再在该群组内使用该群组中的PLA模型,预测该键在与该PLA模型相对应的群组中的索引节点数组中的具体位置。RMI模型具有预测快的特点,但在数据量很大时需要很长训练时间;而PLA模型在数据量很大时仍能保持很快的训练速度,但预测速度较慢。在第一层使用RMI模型,因为群组数量较少,因而可以迅速预测;在群组内部,由于数据量较多,使用PLA模型可以加快训练。采用这样的方法,使得本方法能够迅速预测到键在解构层中对应的索引节点位置,又保证了整个模型层完成一次训练的时间不会过长。
具体地,解构层由按键的数值范围分段的多个索引节点构成,用于实现模型预测与数据位置之间的解耦合。每个索引节点中,包含一个或多个索引节点数据项,每个索引节点数据项中通常包含N个(例如,N=4)数据索引以及对应每个数据索引的存储位置,每个数据索引存储位置可能为空也可能存储有数据。在某一个索引节点中实际存储的数据索引的个数M小于N时,该索引节点中会为数据索引预留N-M个空存储位置。根据数据索引将全局键空间划分为多个连续相邻的子键空间。每个数据索引包含最小键(min-key)、元数据(metadata)和数据块指针(datablock pointer)。其中最小键是该数据索引对应的子键空间的数据块(datablock)中的最小键值;元数据包含了与该数据索引相应的子键空间的头部元数据,数据块指针是指向数据存储层中与该数据索引相应的相应子键空间的指针。每个数据索引指向一个数据存储层中的数据块。通过解构层能够将模型层的学习索引模型与数据存储层的数据解耦合,同时解构层中的数据索引预留空存储位置减少了数据写入时扩展过程中进行学习索引模型重训练的次数,大大提高了整个索引结构的写入性能。
具体地,键在数据索引之间是有序的。
具体地,数据存储层以有序数据块的方式存储了数据。数据存储层的每个数据块对应于一个特定的子键空间,并用来存储一个子范围内的数据。在每个数据块内部的数据无序存储。虽然数据存储层的数据块中数据无序存储,但因为解构层中每一个数据索引包含的最小键,可以保证数据在数据索引间有序存储,又因为每个数据块中使用了迭代器,使得整个数据索引结构可以支持范围查询。数据块按照键值对方式存储数据,且键大小不固定,键对应的值大小也不固定。如果该键对应的值小于等于8字节则存储该键对应的值的真实值,否则存储指向该键对应的值的指针。在数据块中每次更新数据时以追加写入方式进行更新。数据存储层的数据块包含头部元数据、由多个记录(record)构成的记录数组以及指向下一个数据块的指针。每个数据块的读写锁建立在数据存储层中每个记录上。记录数组中每个记录包括lock、key-size、key、value。lock表示读写锁,key-size表示键的大小,key表示键,value表示该键对应的数据。
如图3所示,当数据的总量<S1(S1是本申请提出的三层树形数据学习索引结构相比B+树索引结果出现优势的极限数据总量)时,本申请的学习索引结构替换为传统的B+树索引结构,其中数据存储层作为传统B+树的叶子结点层,模型层、解构层会变为和B+树的中间结点完全一样。这是为了充分利用B+树在较小数据量下的优势。在本申请的某些实施例中,B+树的叶子节点部分结构采用数据块的格式,而非原生的叶子节点结构。当数据量>=S1时,将B+树索引结构变为本申请的学习索引结构,其中数据存储层保持不变,只是将B+树索引结构的最后一层索引节点变为本申请的解构层结构,并将其它索引节点用本申请的学习索引模型替代。在本申请的某些实施例中,当数据量<S1时(S1是该学习索引结构相比B+树出现优势的极限数据量)该学习索引结构被替换为B+树索引结构。当数据量>=S1时,将B+树结构重新替换为该学习索引结构,其中数据存储层不变,只是将B+树的最后一层索引节点变为所述解构层结构,并将其它索引节点用所述学习索引模型替代。
进一步地,为了支持在NVM设备上使用,解构层的数据索引和数据存储层的数据块中的头部元数据都为8字节,每次写入新数据时,先写入数据,然后更新头部元数据。如果该头部元数据未更新成功则视为写入失败,需重新写入。由于NVM设备上小于等于8字节的写入操作具有原子性,这样做可保证NVM设备上的数据一致性。
本申请的第二方面提供了一种根据所述基于学习索引结构的数据存储方法的数据读取请求处理方法。
具体地,在接受到读取请求后,遵循以下步骤:
(1)进入所述模型层的RMI模型,预测得到与该读取请求对应的键在所述群组数组中对应的群组,例如,在可接受的误差范围内可以用二分查找法寻找该对应的(也是正确的)群组;
(2)进入该对应的群组中,经过该对应的群组中的PLA模型预测得到该键在该对应的群组包含的所述解构层中的多个索引节点中的位置(即对应的/正确的一个索引节点),例如,在可接受的误差范围内可以用二分查找法寻找该对应的索引节点;
(3)如果找到对应的索引节点,转到步骤(4),否则返回空,该读取过程结束;
(4)进入步骤(2)中找到的该正确的索引节点包含的数据索引数组中,因为该目标键在数据索引之间有序,所以在其中可以用二分查找法查找到对应于该目标键的目标数据索引;
(5)进入步骤(4)中查找到的目标数据索引,根据其中包含的数据指针定位到正确的目标数据块,进入该正确的目标数据块进行遍历查找,如果查找到目标数据则返回该目标数据,否则返回空,该读取过程结束。
为实现上述目的,按照本申请的第三方面,提供了一种根据所述基于学习索引结构的数据存储方法的新数据写入请求处理方法。
具体地,在接受到新数据写入请求后,遵循以下步骤:
(1)进入所述模型层的RMI模型,预测得到与该新数据写入请求对应的目标键在所述群组数组中对应的群组,例如,在可接受的误差范围内可以用二分查找法寻找该对应的(也是正确的)群组;
(2)进入该对应的群组中,经过该对应的群组中的PLA模型预测得到该新数据写入请求对应的目标键在该对应的群组所包含的所述解构层中的多个索引节点中的正确位置(即对应的一个目标索引节点),例如,在可接受的误差范围内可以用二分查找法寻找该对应的目标索引节点;
(3)如果找到对应的目标索引节点,转到步骤(4),否则返回空,该读取过程结束;
(4)进入步骤(2)中找到的该正确的目标索引节点包含的数据索引数组中,因为该目标键在数据索引之间有序,所以在其中可以用二分查找法查找到对应于该目标键的目标数据索引;
(5)进入步骤(4)中查找到的目标数据索引,根据其中包含的数据指针定位到正确的目标数据块,在该正确的目标数据块中遍历查找该目标键,如果找到该目标键则转到步骤(6),否则转到步骤(8);
(6)把该目标键对应的数据更新为该新数据,如果更新成功,该写入过程结束;否则转到步骤(7),
(7)如果该更新失败,意味着该数据正在被另外的线程更新所以被加上了写入锁,因此转到步骤(1)重试整个新数据写入操作;
(8)如果找不到该键,说明该目标键不存在,则执行插入操作,在该正确的目标数据块中以追加写入方式写入该新数据,该写入过程结束。
进一步的,本申请提供的学习索引结构具有三种扩展方法,主要包括:
(1)仅扩展数据存储层。当写入新数据时,若数据存储层的目标数据块中没有空间容纳新数据,但与该目标数据块对应的解构层中的目标索引节点还预留有数据索引空存储位置时,此时进行数据存储层中数据块的内部扩展从该目标数据块分裂出一个新数据块,并在对应的解构层的预留数据索引空存储位置上追加写入与该新数据块相应的数据索引。如图4所示,插入数据25时,数据存储层的目标数据块已满,此时由于与该目标数据块对应的目标索引节点中仍然预留有数据索引空存储位置(包含20、30两个数据,仍留有1个空存储位置),因此可以直接从该目标数据块分裂出一个新数据块,并在该对应的目标索引节点中为分裂后得到的该新数据块追加对应的数据索引。此扩展过程中模型层仍保持不变。
(2)扩展解构层和数据存储层。当插入新数据时,若数据存储层的目标数据块没有空间容纳新数据且解构层中与该目标数据块对应的索引节点中也没有预留数据索引空存储位置,但与该对应的索引节点相邻的其它索引节点仍有预留的数据索引空存储位置时,则将与该目标数据块对应的索引节点扩展至该相邻的其它索引节点,例如,将与该新数据对应的新建数据索引追加入该目标索引节点相邻的索引节点中的预留数据索引空存储位置,只要保证该其它索引节点中数据索引空存储位置未满即可。如图5所示,插入数据16时,数据存储层的目标数据块已满,且解构层中对应的目标索引节点(包含10、15、17三个数据)也已满,但解构层对应的目标索引节点右边的索引节点并未满(包含20、30两个数据,仍留有一个数据索引空存储位置),此时将与该新数据对应的新建数据索引追加入该目标索引节点相邻的索引节点中的预留数据索引空存储位置,只要保证最终每个索引节点中数据索引的数量不超过存储位置的预设阈值(例如,阈值为4)即可。此扩展过程中模型层仍保持不变。
(3)全局扩展。当插入新数据时,若数据存储层没有空间容纳新数据,并且与该新数据对应的目标索引节点中没有数据索引空存储位置,而且该对应的目标索引节点相邻的索引节点也没有数据索引空存储位置时,此时需要进行全局扩展,将该模型层的模型重训练。在本申请的某些实施例中,所述全局扩展可以对该目标键所属的群组中的所有索引节点的数据索引进行重分配,为每个索引节点分配X个数据索引,默认X为1。这样做是为了稀释数据索引,从而在每个索引节点中留出多个空存储位置。此时,1)若该群组中的PLA模型重训练后依然能保证在最小误差范围内,则对该PLA模型进行增量训练,模型层的RMI模型和其他PLA模型不变;2)若该群组中该PLA模型重训练后不能保证在最小误差范围内,则对该PLA模型进行分裂,将该PLA模型分裂为两个键连续但不重叠的子模型,并递归训练模型层中的RMI模型,其他PLA模型不变。
如图6所示,当插入新数据9时,数据存储层的目标数据块的存储位置已满,解构层中与新数据9对应的索引节点以及与该索引节点相邻的索引节点的数据索引存储位置也都满了,此时需要判断模型层中与该新数据对应的子模型重训练后是否依然能保证在最小误差范围内。若能保证在最小误差范围内,则对该子模型进行增量训练,而根模型和其他子模型不变。其中,根模型是模型层中的RMI模型,而子模型是模型层中的PLA模型;若不能保证在最小误差范围内,则对该子模型进行分裂,将该子模型分裂为两个键连续但不重叠的子模型,并递归训练根模型,其他子模型不变。
附图中的流程图和/或框图示出了根据本发明的各个实施例的系统、方法和计算机可用介质的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以代表代码的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应注意,在一些替代实施方式中,方框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上同时执行连续示出的两个框,或者有时可以以相反的顺序执行这些框。还应注意,框图和/或流程图说明的每个方框以及框图和/或流程图说明中的方框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现,或专用硬件和计算机指令的组合。
本领域的技术人员容易理解,以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据存储方法,其特征在于,所述方法包括:
构造一个树形数据索引结构以存储数据,所述树形数据索引结构包括:模型层、解构层和数据存储层;其中,
所述模型层由两层学习索引模型组成,第一层学习索引模型为一个RMI模型,第二层学习索引模型为多个PLA模型;
所述解构层包括由按键的数值范围分段的多个索引节点;
所述数据存储层以多个数据块的方式存储所述数据。
2.如权利要求1所述的方法,其特征在于:
基于所述RMI模型将全局键空间分为包括多个群组的群组数组,其中每一个所述群组包含一个所述PLA模型和一个或多个所述索引节点;
所述PLA模型对应于所述一个或多个所述索引节点;以及
所述多个数据块中的每一个数据块分别对应于一个所述索引节点并存储一个子数值范围内的所述数据。
3.如权利要求2所述的方法,其特征在于:
所述方法还包括:
使用所述RMI模型预测所述键在所述群组数组中的位置,把所述键定位到所述群组数组中的一个群组;
使用所述一个群组包含的所述PLA模型针对所述键进行训练;以及
使用所述PLA模型预测出所述键在所述一个群组的多个索引节点中的位置。
4.如权利要求2或3所述的方法,其特征在于:
每一个所述索引节点中包含N个数据索引的存储位置,其中N>=1,根据所述数据索引将所述全局键空间划分为多个连续相邻的子键空间;以及
当所述索引节点中实际存储的数据索引个数M小于N时,所述索引节点中预留N-M个数据索引空存储位置。
5.如权利要求4所述的方法,其特征在于:
所述数据索引包含最小键、元数据、数据块指针,其中
所述最小键是所述数据索引所在的所述索引节点指向所述数据块中的最小键值;
所述元数据包含了所述子键空间的头部元数据;以及
所述数据块指针是指向所述子键空间的指针。
6.如权利要求1至5所述的方法,其特征在于:
所述数据在所述数据块内部无序存储;
所述数据块内使用迭代器用于所述数据的顺序遍历;
所述数据块用键值对方式存储所述数据,且所述键大小不固定,所述键对应的值大小也不固定,当所述键对应的值小于等于8字节时存储所述键对应的值的真实值,否则存储指向所述键对应的值的指针;
在所述数据块中以追加写入方式更新所述数据;
所述数据块包含头部元数据、由多个记录构成的记录数组以及指向下一个所述数据块的指针;
所述数据块的读写锁建立在每个所述记录上;以及
每个所述记录包括所述读写锁、所述键的大小、所述键以及所述值或者所述指向所述键对应的值的指针。
7.如权利要求1所述的方法,其特征在于:
当所述数据的总量<S1时,其中S1是所述树形数据索引结构相比B+树索引结构出现优势的极限数据量,所述树形数据索引结构被替换为所述B+树索引结构。
8.一种根据权利要求4至7任一项所述的数据存储方法的数据读取请求处理方法,其特征在于包括以下步骤:
使用所述RMI模型预测得到与所述数据读取请求相应的目标键在所述群组数组中对应的群组;
使用所述对应的群组内的所述PLA模型预测以寻找与所述目标键相对应的所述索引节点;
如果找到对应的所述索引节点,进入对应的所述索引节点所包含的所述数据索引查找到与所述目标键相对应的目标数据索引;
进入查找到的所述目标数据索引,根据所述目标数据索引中包含的所述数据块指针定位到目标数据块;以及
进入所述目标数据块,查找到目标数据则返回所述目标数据,否则返回空值。
9.一种根据权利要求4至7任一项所述的数据存储方法的新数据的写入请求处理方法,其特征在于,所述新数据的写入请求处理方法包括以下步骤:
使用所述RMI模型预测得到与所述新数据的写入请求相应的目标键在所述群组数组中对应的群组;
使用所述对应的群组内的所述PLA模型预测以寻找与所述目标键相对应的所述索引节点;
如果找到对应的所述索引节点,进入对应的所述索引节点所包含的所述数据索引查找到与所述目标键相对应的目标数据索引;
进入查找到的所述目标数据索引,根据所述目标数据索引中包含的所述数据块指针定位到目标数据块;
进入所述目标数据块,在所述目标数据块中遍历查找所述目标键;
如果查找到所述目标键,把所述目标键对应的数据更新为所述新数据;以及
如果未查找到所述目标键,在所述目标数据块中以追加写入方式写入所述新数据。
10.如权利要求9所述的方法,其特征在于所述树形数据索引结构具有三种扩展方法,所述扩展方法包括:当写入新数据时,
如果所述目标数据块中没有空间容纳所述新数据但与所述目标数据块对应的所述解构层中的所述目标索引节点还预留有所述数据索引空存储位置时,从所述目标数据块分裂出一个新数据块,并在所述预留数据索引存储位置上追加写入与所述新数据块相应的新建数据索引,所述模型层保持不变;
如果所述目标数据块中没有空间容纳所述新数据且与所述目标数据块对应的所述解构层中的所述索引节点未预留有所述数据索引空存储位置,但与所述目标索引节点相邻的索引节点还预留有所述数据索引空存储位置,则将与所述新数据对应的新建数据索引追加写入与所述目标索引节点相邻的索引节点中的所述预留数据索引空存储位置,只要保证最终每个索引节点中数据索引的数量不超过数据索引存储位置的预设阈值,所述模型层保持不变;以及
如果所述目标数据块中没有空间容纳所述新数据且与所述目标数据块对应的所述解构层中的所述目标索引节点以及与其相邻的索引节点未预留有所述数据索引空存储位置,则扩展所述解构层中的所述索引节点并为所述解构层分配更大的存储空间,将所述索引节点重新分布并预留出新数据索引空存储位置,将与所述新数据对应的新建数据索引写入所述新数据索引存储位置,以及将模型层重新进行训练。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110898898.9A CN113722319A (zh) | 2021-08-05 | 2021-08-05 | 基于学习索引的数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110898898.9A CN113722319A (zh) | 2021-08-05 | 2021-08-05 | 基于学习索引的数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113722319A true CN113722319A (zh) | 2021-11-30 |
Family
ID=78675009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110898898.9A Pending CN113722319A (zh) | 2021-08-05 | 2021-08-05 | 基于学习索引的数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113722319A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4191395A1 (en) * | 2021-12-03 | 2023-06-07 | Samsung Electronics Co., Ltd. | Two-level indexing for key-value persistent storage device |
WO2023246566A1 (zh) * | 2022-06-20 | 2023-12-28 | 中兴通讯股份有限公司 | 数据存储方法、读取方法、数据库系统、设备及介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145502A (zh) * | 2017-03-20 | 2017-09-08 | 中山大学 | 一种海量图片存储和搜索的方法 |
CN109416636A (zh) * | 2016-06-17 | 2019-03-01 | 惠普发展公司,有限责任合伙企业 | 共享的机器学习数据结构 |
CN109726257A (zh) * | 2018-12-18 | 2019-05-07 | 北京艾瑞思机器人技术有限公司 | 索引地图的构建方法、自主导航的方法、装置和电子设备 |
US20190303753A1 (en) * | 2018-03-28 | 2019-10-03 | Ca, Inc. | Insertion tolerant learned index structure through associated caches |
CN111061788A (zh) * | 2019-11-26 | 2020-04-24 | 江苏瑞中数据股份有限公司 | 一种基于云架构的多源异构数据转换整合系统及其实现方法 |
CN111126625A (zh) * | 2019-12-20 | 2020-05-08 | 华中科技大学 | 一种可扩展的学习索引方法及系统 |
CN111309982A (zh) * | 2020-03-05 | 2020-06-19 | 上海交通大学 | 机器学习数据索引结构的自适应结构调整方法及系统 |
US20200234134A1 (en) * | 2019-01-17 | 2020-07-23 | Capital One Services, Llc | Systems providing a learning controller utilizing indexed memory and methods thereto |
CN112035586A (zh) * | 2020-08-28 | 2020-12-04 | 南京航空航天大学 | 基于可扩展学习索引的空间范围查询方法 |
US20210019665A1 (en) * | 2019-07-18 | 2021-01-21 | International Business Machines Corporation | Machine Learning Model Repository Management and Search Engine |
CN112506486A (zh) * | 2020-12-15 | 2021-03-16 | 康键信息技术(深圳)有限公司 | 搜索系统建立方法、装置、电子设备及可读存储介质 |
CN113032390A (zh) * | 2021-02-05 | 2021-06-25 | 浙江大学 | 一种内存数据库中的工作负载自适应学习型索引方法 |
CN113204559A (zh) * | 2021-05-25 | 2021-08-03 | 东北大学 | 一种gpu上的多维kd树优化方法 |
-
2021
- 2021-08-05 CN CN202110898898.9A patent/CN113722319A/zh active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416636A (zh) * | 2016-06-17 | 2019-03-01 | 惠普发展公司,有限责任合伙企业 | 共享的机器学习数据结构 |
CN107145502A (zh) * | 2017-03-20 | 2017-09-08 | 中山大学 | 一种海量图片存储和搜索的方法 |
US20190303753A1 (en) * | 2018-03-28 | 2019-10-03 | Ca, Inc. | Insertion tolerant learned index structure through associated caches |
CN109726257A (zh) * | 2018-12-18 | 2019-05-07 | 北京艾瑞思机器人技术有限公司 | 索引地图的构建方法、自主导航的方法、装置和电子设备 |
US20200234134A1 (en) * | 2019-01-17 | 2020-07-23 | Capital One Services, Llc | Systems providing a learning controller utilizing indexed memory and methods thereto |
US20210019665A1 (en) * | 2019-07-18 | 2021-01-21 | International Business Machines Corporation | Machine Learning Model Repository Management and Search Engine |
CN111061788A (zh) * | 2019-11-26 | 2020-04-24 | 江苏瑞中数据股份有限公司 | 一种基于云架构的多源异构数据转换整合系统及其实现方法 |
CN111126625A (zh) * | 2019-12-20 | 2020-05-08 | 华中科技大学 | 一种可扩展的学习索引方法及系统 |
CN111309982A (zh) * | 2020-03-05 | 2020-06-19 | 上海交通大学 | 机器学习数据索引结构的自适应结构调整方法及系统 |
CN112035586A (zh) * | 2020-08-28 | 2020-12-04 | 南京航空航天大学 | 基于可扩展学习索引的空间范围查询方法 |
CN112506486A (zh) * | 2020-12-15 | 2021-03-16 | 康键信息技术(深圳)有限公司 | 搜索系统建立方法、装置、电子设备及可读存储介质 |
CN113032390A (zh) * | 2021-02-05 | 2021-06-25 | 浙江大学 | 一种内存数据库中的工作负载自适应学习型索引方法 |
CN113204559A (zh) * | 2021-05-25 | 2021-08-03 | 东北大学 | 一种gpu上的多维kd树优化方法 |
Non-Patent Citations (5)
Title |
---|
CHUZHE TANG等: "XIndex: A Scalable Learned Index for Multicore Data Storage", 《THE 25TH ACM SIGPLAN SYMPOSIUM ON PRINCIPLES AND PRACTICE OF PARALLEL PROGRAMMING》, pages 308 - 320 * |
DING, JL等: "ALEX: An Updatable Adaptive Learned Index", 《ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA (SIGMOD)》, pages 969 - 984 * |
MARCUS, R等: "CDFShop: Exploring and Optimizing Learned Index Structures", 《THE 2020 ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA》, pages 2789 - 2792 * |
张洲等: "学习索引: 现状与研究展望", 《软件学报》, vol. 32, no. 4, pages 1129 - 1150 * |
高远宁等: "基于中间层的可扩展学习索引技术", 《软件学报》, vol. 31, no. 3, pages 620 - 633 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4191395A1 (en) * | 2021-12-03 | 2023-06-07 | Samsung Electronics Co., Ltd. | Two-level indexing for key-value persistent storage device |
US11954345B2 (en) | 2021-12-03 | 2024-04-09 | Samsung Electronics Co., Ltd. | Two-level indexing for key-value persistent storage device |
WO2023246566A1 (zh) * | 2022-06-20 | 2023-12-28 | 中兴通讯股份有限公司 | 数据存储方法、读取方法、数据库系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8225029B2 (en) | Data storage processing method, data searching method and devices thereof | |
US7933938B2 (en) | File storage system, file storing method and file searching method therein | |
US8996799B2 (en) | Content storage system with modified cache write policies | |
JP6329247B2 (ja) | ジュークボックスに基づくデータベース記憶システム及びそれを用いた方法 | |
US9996557B2 (en) | Database storage system based on optical disk and method using the system | |
CN109558084B (zh) | 一种数据处理方法以及相关设备 | |
CN113722319A (zh) | 基于学习索引的数据存储方法 | |
KR20200122994A (ko) | 키 값 첨부 | |
CN113535670B (zh) | 一种虚拟化资源镜像存储系统及其实现方法 | |
WO2013140612A1 (ja) | ストレージ装置及びデータ記憶方法 | |
KR101438667B1 (ko) | 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법 | |
CN107153512A (zh) | 一种数据迁移方法和装置 | |
WO2022205544A1 (zh) | 基于Cuckoo哈希的文件系统目录管理方法及系统 | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
US9542402B2 (en) | Computing devices with multi-layer file systems | |
WO2023249753A1 (en) | File system metadata layout for append-only storage | |
CN114281242B (zh) | 存储器负载均衡的方法、装置和设备 | |
CN115904255A (zh) | 一种数据请求方法、装置、设备及存储介质 | |
KR100502106B1 (ko) | 스트라이핑 기법을 이용한 레이드 시스템에서의 데이터재구성 방법 | |
KR20110042576A (ko) | 차세대 대용량 저장장치에 적합한 동적 색인 관리 시스템 및 그 방법과 그 소스 프로그램을 기록한 기록매체 | |
CN111880739A (zh) | 一种面向超融合设备的近数据处理系统 | |
CN109783032A (zh) | 一种基于异构计算的分布式存储加速方法及装置 | |
US9513826B2 (en) | Storage apparatus and storage apparatus control method | |
US11880593B2 (en) | Host, operating method of host and storage system | |
WO2022033099A1 (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 |