CN111651455A - 基于机器学习的高效并发索引数据结构 - Google Patents
基于机器学习的高效并发索引数据结构 Download PDFInfo
- Publication number
- CN111651455A CN111651455A CN202010456178.2A CN202010456178A CN111651455A CN 111651455 A CN111651455 A CN 111651455A CN 202010456178 A CN202010456178 A CN 202010456178A CN 111651455 A CN111651455 A CN 111651455A
- Authority
- CN
- China
- Prior art keywords
- cache
- value pair
- key
- node
- request
- 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
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于机器学习的并发索引数据结构的索引方法,所述索引方法包括:组节点定位步骤:将请求中的键作为根节点的机器学习模型的输入,计算得出该键所在的组节点范围,继续在该组节点范围内将请求的键与根节点中保存的组节点的键的范围比较,找到目标键值对所在的组节点。本发明使用RCU技术和两层缓存数据结构,支持并发的缓存合并操作和索引操作,减少因索引操作被阻塞导致的性能波动,同时保障了索引数据的一致性。本发明使用两层索引结构,足够适应大数据索引请求,避免多层索引结构的节点跳转带来的性能开销。
Description
技术领域
本发明涉及数据存储系统数据索引领域,具体地,涉及一种基于机器学习的高效并发索引数据结构。
背景技术
随着云计算、大数据等技术的蓬勃发展,数据库越来越多地运用在现代计算机系统中,对于数据库的性能的要求也越来越高。在数据库中,低延时、高吞吐索引的需求十分重要。索引是一种加速数据查询操作的数据结构。索引包括许多关键词,每个关键词指向一项数据。索引可以快速地查询某个关键词对应的数据,因此被广泛应用于数据库的高效查询。近年来,随着索引技术的不断发展,出现了机器学习与索引结合的尝试。
机器学习是人工智能的一个分支,是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法的方法。按照学习形式的不同,机器学习可以分为监督学习、无监督学习、半监督学习、增强学习等等。其具体算法又包括线性回归、支持向量机、决策树、深度神经网络等等。一个机器学习模型由属于决策核心的计算算法和组成决策的变量和特征组成。要使用机器学习技术,首先使用现有数据,按照模型的计算算法对模型进行训练,得到组成决策的变量和特征,之后便可以对新的数据进行推理。由于具有良好的泛化能力,机器学习技术被广泛应用于各个领域。
近年来、利用机器学习技术优化索引结构的概念被提出。其核心思想是将索引视为一个关键词到数据位置的函数,即一个累计分布函数,而这样的线性函数能够很好的使用线性回归、深度神经网络等机器学习模型进行拟合。使用机器学习模型能够一次计算出关键词对应的大致的数据位置范围,然后在范围内进行搜索,避免了传统索引系统的多次内存或者磁盘中的数据查询操作,从而实现更好的读性能。
现有的基于机器学习的索引方法提出了一种分层结构,结构中的每一层中的模型被单独训练。每一层中的机器学习模型选择下一层要使用哪个模型,而最后一层模型对关键词对应的数据位置进行预测,得到一个误差范围。之后便可以在误差范围内进行二分搜索,从而得到最终的数据。
然而,现有的基于机器学习的索引仍然存在着许多的不足。具体有以下两方面原因:
首先,索引很难在存在并发的更新操作时保证数据的一致性和高性能。由于机器学习模型是不能实时更新的,所以对基于机器学习的索引进行更新具有一定难度。有研究者提出将新增的数据保存在缓存中,然后定时将缓存与原数据合并,并且更新机器学习模型。然而这些方法没有考虑在并发场景下,即存在多个更新操作时的数据一致性问题。另一方面,如果让某个操作阻塞其他的操作以保证数据一致性,又会影响索引的性能。总之,现有方法很难同时实现数据的一致性与读写的高性能。
另外,基于机器学习的索引的性能非常依赖机器学习模型预测。新插入缓存中的数据通常使用B树等非机器学习索引数据结构存储,这些数据无法通过机器学习模型找到,无法发挥基于机器学习的索引的高性能优势。当新插入数据量过大时,对这些新插入数据的操作会对整体的索引性能有显著负面影响。因此为保证索引的高性能,必须及时将缓存中的新插入数据与数组数据合并,并且根据新插入数据重新训练机器学习模型。
目前,还没有一种基于机器学习的索引的工作,能够实现高效的读写请求和内部更新操作的并发,并根据新插入数据重新训练机器学习模型。因此,先前的工作对于基于机器学习的索引的研究并不全面,还有一定的空白。
CN109407978A(申请号:201811129622.9)本发明公开了一种高并发索引B+链表数据结构的设计与实现方法,该方法包括:同时使用基于数组的和基于元素得到数据结构;对于数据结构的非叶子节点,采用预设的B+树数据结构,置放于DRAM中,使位于DRAM上的非叶子节点保证访问的局部性;对于数据结构的叶子节点,采用单向链表数据结构,置放于NVM中,使位于NVM上的叶子节点避免排序和平衡的开销。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于机器学习的高效并发索引数据结构。
根据本发明提供的一种基于机器学习的并发索引数据结构的索引方法,所述索引方法包括:
组节点定位步骤:将请求中的键作为根节点的机器学习模型的输入,计算得出该键所在的组节点范围,继续在该组节点范围内将请求的键与根节点中保存的组节点的键的范围比较,找到目标键值对所在的组节点;
数组数据查找步骤:在定位得到的组节点中,根据请求的键找到在组节点中负责对应数据段的机器学习模型,预测目标键值对在数组中的位置以及误差范围;在该误差范围内使用二分搜索查找目标键值对;若找到目标键值对则执行完成请求步骤,否则执行缓存数据查找步骤;
缓存数据查找步骤:查找过程中,首先在插入缓存中查找目标键值对:若找到目标键值对则立即执行完成请求步骤;若未找到则判断是否正在缓存:若正在缓存合并则检查临时缓存是否初始化,若已初始化则继续在临时缓存中查找目标键值对,若未初始化则返回从组节点定位步骤重新执行,读请求未找到目标键值对;若未正在缓存合并则未找到目标键值对,执行完成请求步骤;
完成请求步骤:根据是否找到目标键值对及请求类型,执行相应的请求处理步骤并返回结果至索引的调用者,请求处理完成,流程结束;
执行数组数据查找步骤、缓存数据查找步骤和请求处理步骤时均有并发访问控制。
优选地,所述节点包括一个机器学习模型和其所存储的键值对及键范围,输入请求键,得到节点输出的目标键值对的预测位置和误差范围;
整个索引结构共两层,第一层仅有一个根节点,第二层有多个组节点,同一层的组节点指针存在组节点指针数组中,可遍历查找该数组找到组节点。
优选地,所述目标键值对存储于数组中,新插入的键值对存储于缓存中;
所述缓存包括两层缓存:插入缓存和临时缓存;
所述插入缓存用于缓存新插入的键值对;
所述临时缓存用于缓存合并操作中,插入缓存不可用时缓存新插入的键值对;
对每个键值对,该索引数据结构连续存储其键、值、元数据,作为键值对结构;
所述元数据包括:
指针标记位,标记该键值对结构的值是实际值或指向实际值的指针;
逻辑删除位,标记该键值对是否已被逻辑删除;
版本号和锁,用于读、写、或删除键值对时的并发控制。
优选地,所述完成请求步骤中找到目标键值对后的请求处理步骤包括:
读请求处理步骤:返回找到的目标键值对。
写请求处理步骤:更新目标键值对,将目标键值对的值更新为请求的写入值。
删除请求处理步骤:删除目标键值对,将目标键值对标记为逻辑删除状态;
所述请求类型包括:读、写及删除。
优选地,所述完成请求步骤中未找到目标键值对后的请求处理步骤包括:
读请求处理步骤:目标键值对不存在,返回空数据,表示操作失败。
写请求处理步骤:若当前节点正在进行缓存合并操作,插入缓存不可用,临时缓存已被初始化,则将请求键值对插入临时缓存,否则将请求键值对插入插入缓存。
删除请求处理步骤:不作额外处理。
优选地,所述并发访问控制包括缓存数据使用细粒度乐观并发控制进行并发访问控制;数组数据使用数组项元数据中的互斥锁和版本号进行并发控制,写或删除请求和缓存合并时都需获得键值对元数据中的互斥锁并递增版本号;
读请求不需获得互斥锁,但若请求返回时互斥锁被其他请求使用或版本号与请求开始时的版本号不同,则需重试。
优选地,所述缓存合并方法包括:
新节点创建步骤:分配新组节点和新组节点数组;
合并缓存步骤:将原组节点数组和插入缓存的键值对结构写入新组节点数组。且新组节点数组的每个数组项的值均为指针,指向原组节点的数组和插入缓存中的键值对结构的值;
模型训练步骤:根据新组节点的数组数据重新训练机器学习模型;
新节点生效步骤:将根节点指向原组节点的指针原子地换为指向新组节点,此时新组节点生效。
优选地,所述缓存合并方法在后台执行,遍历所有组节点,找到插入缓存中数据量超过阈值的组节点后执行缓存合并方法。
优选地,所述新节点创建步骤中,分配新组节点后原组节点的插入缓存变为不可用状态,此时新插入键值对插入原组节点的临时缓存,新组节点的插入缓存引用原组节点的临时缓存。
优选地,所述缓存合并方法基于RCU(Read-Copy-Update)思想完成并保障数据一致性;
所述数组项是键值对结构,其值既可以是实际值,又可以是指针,实现方法是数组项的元数据保存了指针标记位,根据其值为0或1判断该键值对结构的值是指针或实际值;
所述新节点生效步骤中,还会利用新组节点中数组项的元数据中的锁和指针标记位将数组项的值从指针原子地换为该指针当前指向的实际值。
与现有技术相比,本发明具有如下的有益效果:
1.与现有非机器学习索引相比,引入机器学习模型,大幅提升索引性能。
2.与现有机器学习索引相比,本系统使用细粒度的并发控制,使得并发的索引操作保持高性能。
3.与现有机器学习索引相比,本系统会重新训练机器学习模型,在缓存数据量过大时将缓存中数据与数组数据合并,使机器学习模型适应新插入的数据,保持索引高性能。
4.与现有机器学习索引相比,本系统使用RCU(Read-Copy-Update)技术和两层缓存数据结构,支持并发的缓存合并操作和索引操作,减少因索引操作被阻塞导致的性能波动,同时保障了索引数据的一致性。
5.与现有机器学习索引相比,本系统使用两层索引结构,足够适应大数据索引请求,避免多层索引结构的节点跳转带来的性能开销。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的索引实施流程示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种基于机器学习的并发索引数据结构的索引方法,所述索引方法包括:
组节点定位步骤:将请求中的键作为根节点的机器学习模型的输入,计算得出该键所在的组节点范围,继续在该组节点范围内将请求的键与根节点中保存的组节点的键的范围比较,找到目标键值对所在的组节点;
数组数据查找步骤:在定位得到的组节点中,根据请求的键找到在组节点中负责对应数据段的机器学习模型,预测目标键值对在数组中的位置以及误差范围;在该误差范围内使用二分搜索查找目标键值对;若找到目标键值对则执行完成请求步骤,否则执行缓存数据查找步骤;
缓存数据查找步骤:查找过程中,首先在插入缓存中查找目标键值对:若找到目标键值对则立即执行完成请求步骤;若未找到则判断是否正在缓存:若正在缓存合并则检查临时缓存是否初始化,若已初始化则继续在临时缓存中查找目标键值对,若未初始化则返回从组节点定位步骤重新执行,读请求未找到目标键值对;若未正在缓存合并则未找到目标键值对,执行完成请求步骤;
完成请求步骤:根据是否找到目标键值对及请求类型,执行相应的请求处理步骤并返回结果至索引的调用者,请求处理完成,流程结束;
执行数组数据查找步骤、缓存数据查找步骤和请求处理步骤时均有并发访问控制。
具体地,所述节点包括一个机器学习模型和其所存储的键值对及键范围,输入请求键,得到节点输出的目标键值对的预测位置和误差范围;
整个索引结构共两层,第一层仅有一个根节点,第二层有多个组节点,同一层的组节点指针存在组节点指针数组中,可遍历查找该数组找到组节点。
具体地,所述目标键值对存储于数组中,新插入的键值对存储于缓存中;
所述缓存包括两层缓存:插入缓存和临时缓存;
所述插入缓存用于缓存新插入的键值对;
所述临时缓存用于缓存合并操作中,插入缓存不可用时缓存新插入的键值对;
对每个键值对,该索引数据结构连续存储其键、值、元数据,作为键值对结构;
所述元数据包括:
指针标记位,标记该键值对结构的值是实际值或指向实际值的指针;
逻辑删除位,标记该键值对是否已被逻辑删除;
版本号和锁,用于读、写、或删除键值对时的并发控制。
具体地,所述完成请求步骤中找到目标键值对后的请求处理步骤包括:
读请求处理步骤:返回找到的目标键值对。
写请求处理步骤:更新目标键值对,将目标键值对的值更新为请求的写入值。
删除请求处理步骤:删除目标键值对,将目标键值对标记为逻辑删除状态;
所述请求类型包括:读、写及删除。
具体地,所述完成请求步骤中未找到目标键值对后的请求处理步骤包括:
读请求处理步骤:目标键值对不存在,返回空数据,表示操作失败。
写请求处理步骤:若当前节点正在进行缓存合并操作,插入缓存不可用,临时缓存已被初始化,则将请求键值对插入临时缓存,否则将请求键值对插入插入缓存。
删除请求处理步骤:不作额外处理。
具体地,所述并发访问控制包括缓存数据使用细粒度乐观并发控制进行并发访问控制;数组数据使用数组项元数据中的互斥锁和版本号进行并发控制,写或删除请求和缓存合并时都需获得键值对元数据中的互斥锁并递增版本号;
读请求不需获得互斥锁,但若请求返回时互斥锁被其他请求使用或版本号与请求开始时的版本号不同,则需重试。
具体地,所述缓存合并方法包括:
新节点创建步骤:分配新组节点和新组节点数组;
合并缓存步骤:将原组节点数组和插入缓存的键值对结构写入新组节点数组。且新组节点数组的每个数组项的值均为指针,指向原组节点的数组和插入缓存中的键值对结构的值;
模型训练步骤:根据新组节点的数组数据重新训练机器学习模型;
新节点生效步骤:将根节点指向原组节点的指针原子地换为指向新组节点,此时新组节点生效。
具体地,所述缓存合并方法在后台执行,遍历所有组节点,找到插入缓存中数据量超过阈值的组节点后执行缓存合并方法。
具体地,所述新节点创建步骤中,分配新组节点后原组节点的插入缓存变为不可用状态,此时新插入键值对插入原组节点的临时缓存,新组节点的插入缓存引用原组节点的临时缓存。
具体地,所述缓存合并方法基于RCU(Read-Copy-Update)思想完成并保障数据一致性;
所述数组项是键值对结构,其值既可以是实际值,又可以是指针,实现方法是数组项的元数据保存了指针标记位,根据其值为0或1判断该键值对结构的值是指针或实际值;
所述新节点生效步骤中,还会利用新组节点中数组项的元数据中的锁和指针标记位将数组项的值从指针原子地换为该指针当前指向的实际值。
下面通过优选例对本发明进行更为具体地说明。
优选例1:
根据本发明提供的一种基于机器学习的高效并发索引数据结构,该数据结构接收并发的读请求,写请求和删除请求。根据该高效并发索引数据结构,系统在接收并发的请求后返回读请求的键值对,写入写请求的键值对或将删除请求的键值对逻辑删除,其特征在于,这三种请求会依次执行以下步骤:
1、组节点定位步骤:在根节点使用机器学习模型根据请求的键查找目标键值对所在的组节点范围,继续在该组节点范围内将请求的键与根节点中保存的组节点的键的范围比较,找到目标键值对所在的组节点。执行数组数据查找步骤(2)。这里的机器学习模型是通过被索引的数据(键-值对)训练得到。可以使用不同类型的机器学习模型,比如线性回归、神经网络等等,因此没有详细指定具体一种类型的模型。
2、数组数据查找步骤:使用定位得到的组节点中负责对应数据段的机器学习模型预测目标键值对在数组中的位置以及误差范围,在误差范围内使用二分搜索查找目标键值对。若找到目标键值对则执行完成请求步骤(4),否则执行缓存数据查找步骤(3)。
3、缓存数据查找步骤:查找过程中,若找到目标键值对则立即执行完成请求步骤(4)。首先在插入缓存中查找目标键值对;若未找到则,若正在缓存合并则检查临时缓存是否初始化,若已初始化则继续在临时缓存中查找目标键值对,若未初始化则写请求需要从组节点定位步骤(1)重新执行,读请求未找到目标键值对;若未正在缓存合并则未找到目标键值对。执行完成请求步骤(4)。
4、完成请求步骤:根据是否找到目标键值对及请求类型,执行相应的读请求处理步骤(5)或写请求处理步骤(6)或删除请求处理步骤(7)并返回。执行数组数据查找步骤、缓存数据查找步骤和请求处理步骤时均有并发访问控制。
5、读请求处理步骤:若找到目标键值对,则返回目标键值对,否则返回空数据,表示操作失败。执行结束步骤(8)。
6、写请求处理步骤:若找到目标键值对,则将目标键值对的值更新为请求的写入值,否则若当前节点正在进行缓存合并操作,插入缓存不可用,临时缓存已被初始化,则将请求键值对插入临时缓存,否则将请求键值对插入插入缓存。执行结束步骤(8)。
7、删除请求处理步骤:若找到目标键值对,则删除目标键值对,将目标键值对标记为逻辑删除状态,否则不作额外处理。执行结束步骤(8)。
8、结束步骤:请求处理完成,流程结束。
具体地,所述节点包括一个机器学习模型和其所存储的键值对及键范围,输入请求键,得到节点输出的目标键值对的预测位置和误差范围。整个索引结构共两层,第一层仅有一个根节点,第二层有多个组节点,同一层的组节点指针存在组节点指针数组中,可遍历查找该数组找到组节点。
具体地,所述目标键值对主要存储于数组中,新插入的键值对存储于缓存中。所述缓存包括两层缓存,插入缓存和临时缓存。所述插入缓存用于缓存新插入的键值对。所述临时缓存用于缓存合并操作中,插入缓存不可用时缓存新插入的键值对。对每个键值对,该索引数据结构连续存储其键、值、元数据,作为键值对结构。所述元数据包括指针标记位,标记该键值对结构的值是实际值或指向实际值的指针;逻辑删除位,标记该键值对是否已被逻辑删除;版本号和锁,用于读、写或删除键值对时的并发控制。
具体地,所述的完成请求步骤(4)描述的并发访问控制包括缓存数据使用细粒度乐观并发控制进行并发访问控制;数组数据使用数组项元数据中的互斥锁和版本号进行并发控制,写或删除请求和缓存合并时都需获得键值对元数据中的互斥锁并递增版本号。读请求不需获得互斥锁,但若请求返回时互斥锁被其他请求使用或版本号与请求开始时的版本号不同,则需重试。
根据本发明提供的一种基于机器学习的高效并发索引数据结构,其缓存合并方法会依次执行以下步骤:
1、新节点创建步骤:分配新组节点和新组节点数组。执行合并缓存步骤(2)
2、合并缓存步骤:将原组节点数组和插入缓存的键值对结构写入新组节点数组。且新组节点数组的每个数组项的值均为指针,指向原组节点的数组和插入缓存中的键值对结构的值。执行模型训练步骤(3)。
3、模型训练步骤:根据新组节点的数组数据重新训练机器学习模型。执行新节点生效步骤(4)。
4、新节点生效步骤:将根节点指向原组节点的指针原子地换为指向新组节点,此时新组节点生效,缓存合并方法结束。
具体地,所述缓存合并方法在后台执行,遍历所有组节点,找到插入缓存中数据量超过阈值的组节点后执行缓存合并方法。
具体地,所述的新节点创建步骤(1)中描述的分配新组节点后,原组节点的插入缓存变为不可用状态,此时新插入键值对插入原组节点的临时缓存,新组节点的插入缓存引用原组节点的临时缓存。
具体地,所述缓存合并方法基于RCU(Read-Copy-Update)思想完成并保障数据一致性。所述数组项是键值对结构,其值既可以是实际值,又可以是指针。该实现方法是数组项的元数据保存了指针标记位,根据其值为0或1判断该键值对结构的值是指针或实际值。所述新节点生效步骤(4)中,还会利用新组节点中数组项的元数据中的锁和指针标记位将数组项的值从指针原子地换为该指针当前指向的实际值。
本发明提供了一种基于机器学习的高效并发索引数据结构。在键值存储索引方法的基础上,引入机器学习模型,大幅提升索引性能。与现有的基于机器学习的索引方法相比,本发明使用细粒度的并发控制,使得并发的索引操作保持高性能。本发明会重新训练机器学习模型,在缓存数据量过大时将缓存中数据与数组数据合并,使机器学习模型适应新插入的数据,保持索引高性能。本发明使用RCU技术和两层缓存数据结构,支持并发的缓存合并操作和索引操作,减少因索引操作被阻塞导致的性能波动,同时保障了索引数据的一致性。本发明使用两层索引结构,足够适应大数据索引请求,避免多层索引结构的节点跳转带来的性能开销。
优选例2:
一种基于机器学习的高效并发索引数据结构,其索引方法包括:
组节点定位步骤:在根节点使用机器学习模型根据请求的键查找目标键值对所在的组节点范围,继续在该组节点范围内将请求的键与根节点中保存的组节点的键的范围比较,找到目标键值对所在的组节点。
数组数据查找步骤:使用定位得到的组节点中负责对应数据段的机器学习模型预测目标键值对在数组中的位置以及误差范围。在该误差范围内使用二分搜索查找目标键值对。若找到目标键值对则执行完成请求步骤,否则执行缓存数据查找步骤。
缓存数据查找步骤:查找过程中,若找到目标键值对则立即执行完成请求步骤。首先在插入缓存中查找目标键值对;若未找到则,若正在缓存合并则检查临时缓存是否初始化,若已初始化则继续在临时缓存中查找目标键值对,若未初始化则写请求需要从组节点定位步骤重新执行,读请求未找到目标键值对;若未正在缓存合并则未找到目标键值对。执行完成请求步骤。
完成请求步骤:根据是否找到目标键值对及请求类型,执行相应的请求处理步骤并返回。请求处理完成,流程结束。其中,执行数组数据查找步骤、缓存数据查找步骤和请求处理步骤时均有并发访问控制。
优选地,所述节点包括一个机器学习模型和其所存储的键值对及键范围,输入请求键,得到节点输出的目标键值对的预测位置和误差范围。整个索引结构共两层,第一层仅有一个根节点,第二层有多个组节点,同一层的组节点指针存在组节点指针数组中,可遍历查找该数组找到组节点。
优选地,所述目标键值对主要存储于数组中,新插入的键值对存储于缓存中。所述缓存包括两层缓存,插入缓存和临时缓存。所述插入缓存用于缓存新插入的键值对。所述临时缓存用于缓存合并操作中,插入缓存不可用时缓存新插入的键值对。对每个键值对,该索引数据结构连续存储其键、值、元数据,作为键值对结构。所述元数据包括指针标记位,标记该键值对结构的值是实际值或指向实际值的指针;逻辑删除位,标记该键值对是否已被逻辑删除;版本号和锁,用于读、写、或删除键值对时的并发控制。
优选地,所述完成请求步骤中找到目标键值对后的请求处理步骤包括:
读请求处理步骤:返回找到的目标键值对。
写请求处理步骤:更新目标键值对,将目标键值对的值更新为请求的写入值。
删除请求处理步骤:删除目标键值对,将目标键值对标记为逻辑删除状态。
优选地,所述完成请求步骤中未找到目标键值对后的请求处理步骤包括:
读请求处理步骤:目标键值对不存在,返回空数据,表示操作失败。
写请求处理步骤:若当前节点正在进行缓存合并操作,插入缓存不可用,临时缓存已被初始化,则将请求键值对插入临时缓存,否则将请求键值对插入插入缓存。
删除请求处理步骤:不作额外处理。
优选地,所述并发访问控制包括缓存数据使用细粒度乐观并发控制进行并发访问控制;数组数据使用数组项元数据中的互斥锁和版本号进行并发控制,写或删除请求和缓存合并时都需获得键值对元数据中的互斥锁并递增版本号。读请求不需获得互斥锁,但若请求返回时互斥锁被其他请求使用或版本号与请求开始时的版本号不同,则需重试。
根据本发明提供的一种基于机器学习的高效并发索引数据结构,其缓存合并方法包括:
新节点创建步骤:分配新组节点和新组节点数组。
合并缓存步骤:将原组节点数组和插入缓存的键值对结构写入新组节点数组。且新组节点数组的每个数组项的值均为指针,指向原组节点的数组和插入缓存中的键值对结构的值。
模型训练步骤:根据新组节点的数组数据重新训练机器学习模型。
新节点生效步骤:将根节点指向原组节点的指针原子地换为指向新组节点,此时新组节点生效。
优选地,所述缓存合并方法在后台执行,遍历所有组节点,找到插入缓存中数据量超过阈值的组节点后执行缓存合并方法。
优选地,所述新节点创建步骤中,分配新组节点后原组节点的插入缓存变为不可用状态,此时新插入键值对插入原组节点的临时缓存,新组节点的插入缓存引用原组节点的临时缓存。
优选地,所述缓存合并方法基于RCU(Read-Copy-Update)思想完成并保障数据一致性。所述数组项是键值对结构,其值既可以是实际值,又可以是指针。该实现方法是数组项的元数据保存了指针标记位,根据其值为0或1判断该键值对结构的值是指针或实际值。所述新节点生效步骤中,还会利用新组节点中数组项的元数据中的锁和指针标记位将数组项的值从指针原子地换为该指针当前指向的实际值。
本领域技术人员知道,除了以读程序代码方式实现本发明提供的基于机器学习的高效并发索引方法及系统及其各个步骤、模块以外,完全可以通过将各个步骤、模块进行逻辑编程来使得本发明提供的并发控制方法及系统及其各个步骤、模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序逻辑。所以,本发明提供的基于机器学习的高效并发索引数据结构及其各个步骤、模块可以被认为是一种硬件组件,而对其内包括的用于实现各种程序逻辑的步骤、模块也可以视为硬件组件内的结构;也可以将用于实现各种功能的步骤、模块视为既可以是实现方法的软件程序又可以是硬件组件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种基于机器学习的并发索引数据结构的索引方法,其特征在于,所述索引方法包括:
组节点定位步骤:将请求中的键作为根节点的机器学习模型的输入,计算得出该键所在的组节点范围,继续在该组节点范围内将请求的键与根节点中保存的组节点的键的范围比较,找到目标键值对所在的组节点;
数组数据查找步骤:在定位得到的组节点中,根据请求的键找到在组节点中负责对应数据段的机器学习模型,预测目标键值对在数组中的位置以及误差范围;在该误差范围内使用二分搜索查找目标键值对;若找到目标键值对则执行完成请求步骤,否则执行缓存数据查找步骤;
缓存数据查找步骤:查找过程中,首先在插入缓存中查找目标键值对:若找到目标键值对则立即执行完成请求步骤;若未找到则判断是否正在缓存:若正在缓存合并则检查临时缓存是否初始化,若已初始化则继续在临时缓存中查找目标键值对,若未初始化则返回从组节点定位步骤重新执行,读请求未找到目标键值对;若未正在缓存合并则未找到目标键值对,执行完成请求步骤;
完成请求步骤:根据是否找到目标键值对及请求类型,执行相应的请求处理步骤并返回结果至索引的调用者,请求处理完成,流程结束;
执行数组数据查找步骤、缓存数据查找步骤和请求处理步骤时均有并发访问控制。
2.根据权利要求1所述的基于机器学习的并发索引数据结构的索引方法,其特征在于,所述节点包括一个机器学习模型和其所存储的键值对及键范围,输入请求键,得到节点输出的目标键值对的预测位置和误差范围;
整个索引结构共两层,第一层仅有一个根节点,第二层有多个组节点,同一层的组节点指针存在组节点指针数组中,能够遍历查找该数组找到组节点。
3.根据权利要求1所述的基于机器学习的并发索引数据结构的索引方法,其特征在于,所述目标键值对存储于数组中,新插入的键值对存储于缓存中;
所述缓存包括两层缓存:插入缓存和临时缓存;
所述插入缓存用于缓存新插入的键值对;
所述临时缓存用于缓存合并操作中,插入缓存不可用时缓存新插入的键值对;
对每个键值对,该索引数据结构连续存储其键、值、元数据,作为键值对结构;
所述元数据包括:
指针标记位,标记该键值对结构的值是实际值或指向实际值的指针;
逻辑删除位,标记该键值对是否已被逻辑删除;
版本号和锁,用于读、写、或删除键值对时的并发控制。
4.根据权利要求1所述的基于机器学习的并发索引数据结构的索引方法,其特征在于,所述完成请求步骤中找到目标键值对后的请求处理步骤包括:
读请求处理步骤:返回找到的目标键值对。
写请求处理步骤:更新目标键值对,将目标键值对的值更新为请求的写入值;
删除请求处理步骤:删除目标键值对,将目标键值对标记为逻辑删除状态;
所述请求类型包括:读、写及删除。
5.根据权利要求1所述的基于机器学习的并发索引数据结构的索引方法,其特征在于,所述完成请求步骤中未找到目标键值对后的请求处理步骤包括:
读请求处理步骤:目标键值对不存在,返回空数据,表示操作失败。
写请求处理步骤:若当前节点正在进行缓存合并操作,插入缓存不可用,临时缓存已被初始化,则将请求键值对插入临时缓存,否则将请求键值对插入插入缓存。
删除请求处理步骤:不作额外处理。
6.根据权利要求1所述的基于机器学习的并发索引数据结构的索引方法,其特征在于,所述并发访问控制包括缓存数据使用细粒度乐观并发控制进行并发访问控制;数组数据使用数组项元数据中的互斥锁和版本号进行并发控制,写或删除请求和缓存合并时都需获得键值对元数据中的互斥锁并递增版本号;
读请求不需获得互斥锁,但若请求返回时互斥锁被其他请求使用或版本号与请求开始时的版本号不同,则需重试。
7.根据权利要求1所述的基于机器学习的并发索引数据结构的索引方法,其特征在于,所述缓存合并方法包括:
新节点创建步骤:分配新组节点和新组节点数组;
合并缓存步骤:将原组节点数组和插入缓存的键值对结构写入新组节点数组,且新组节点数组的每个数组项的值均为指针,指向原组节点的数组和插入缓存中的键值对结构的值;
模型训练步骤:根据新组节点的数组数据重新训练机器学习模型;
新节点生效步骤:将根节点指向原组节点的指针原子地换为指向新组节点,此时新组节点生效。
8.根据权利要求7所述的基于机器学习的并发索引数据结构的索引方法,其特征在于,所述缓存合并方法在后台执行,遍历所有组节点,找到插入缓存中数据量超过阈值的组节点后执行缓存合并方法。
9.根据权利要求7所述的基于机器学习的并发索引数据结构的索引方法,其特征在于,所述新节点创建步骤中,分配新组节点后原组节点的插入缓存变为不可用状态,此时新插入键值对插入原组节点的临时缓存,新组节点的插入缓存引用原组节点的临时缓存。
10.根据权利要求7所述的基于机器学习的并发索引数据结构的索引方法,其特征在于,所述缓存合并方法基于RCU思想完成并保障数据一致性;
所述数组项是键值对结构,其值包括实际值或指针,实现方法是数组项的元数据保存了指针标记位,根据其值为0或1判断该键值对结构的值是指针或实际值;
所述新节点生效步骤中,还会利用新组节点中数组项的元数据中的锁和指针标记位将数组项的值从指针原子地换为该指针当前指向的实际值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010456178.2A CN111651455A (zh) | 2020-05-26 | 2020-05-26 | 基于机器学习的高效并发索引数据结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010456178.2A CN111651455A (zh) | 2020-05-26 | 2020-05-26 | 基于机器学习的高效并发索引数据结构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111651455A true CN111651455A (zh) | 2020-09-11 |
Family
ID=72348606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010456178.2A Pending CN111651455A (zh) | 2020-05-26 | 2020-05-26 | 基于机器学习的高效并发索引数据结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111651455A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112364093A (zh) * | 2020-11-11 | 2021-02-12 | 天津大学 | 一种学习型大数据可视化方法及系统 |
CN112434035A (zh) * | 2020-11-20 | 2021-03-02 | 上海交通大学 | 基于机器学习的并发哈希索引数据结构的索引方法及系统 |
CN113268457A (zh) * | 2021-05-24 | 2021-08-17 | 华中科技大学 | 一种支持高效写的自适应学习索引方法和系统 |
CN113742350A (zh) * | 2021-09-09 | 2021-12-03 | 北京中安智能信息科技有限公司 | 基于机器学习模型的时空索引构建方法和装置及查询方法 |
CN113779154B (zh) * | 2021-09-18 | 2024-04-23 | 华中科技大学 | 一种分布式学习索引模型的构建方法及应用 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109407978A (zh) * | 2018-09-27 | 2019-03-01 | 清华大学 | 高并发索引b+链表数据结构的设计与实现方法 |
CN109407979A (zh) * | 2018-09-27 | 2019-03-01 | 清华大学 | 多线程持久性b+树数据结构设计与实现方法 |
CN109683811A (zh) * | 2018-11-22 | 2019-04-26 | 华中科技大学 | 一种混合内存键值对存储系统的请求处理方法 |
CN110888886A (zh) * | 2019-11-29 | 2020-03-17 | 华中科技大学 | 一种索引结构及构建方法、键值存储系统及请求处理方法 |
-
2020
- 2020-05-26 CN CN202010456178.2A patent/CN111651455A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109407978A (zh) * | 2018-09-27 | 2019-03-01 | 清华大学 | 高并发索引b+链表数据结构的设计与实现方法 |
CN109407979A (zh) * | 2018-09-27 | 2019-03-01 | 清华大学 | 多线程持久性b+树数据结构设计与实现方法 |
CN109683811A (zh) * | 2018-11-22 | 2019-04-26 | 华中科技大学 | 一种混合内存键值对存储系统的请求处理方法 |
CN110888886A (zh) * | 2019-11-29 | 2020-03-17 | 华中科技大学 | 一种索引结构及构建方法、键值存储系统及请求处理方法 |
Non-Patent Citations (1)
Title |
---|
CHUZHE TANG: "XIndex: A Scalable Learned Index for Multicore Data Storage", 《PPOPP ’20, FEBRUARY 22–26, 2020, SAN DIEGO, CA, USA》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112364093A (zh) * | 2020-11-11 | 2021-02-12 | 天津大学 | 一种学习型大数据可视化方法及系统 |
CN112364093B (zh) * | 2020-11-11 | 2023-04-04 | 天津大学 | 一种学习型大数据可视化方法及系统 |
CN112434035A (zh) * | 2020-11-20 | 2021-03-02 | 上海交通大学 | 基于机器学习的并发哈希索引数据结构的索引方法及系统 |
CN112434035B (zh) * | 2020-11-20 | 2022-09-23 | 上海交通大学 | 基于机器学习的并发哈希索引数据结构的索引方法及系统 |
CN113268457A (zh) * | 2021-05-24 | 2021-08-17 | 华中科技大学 | 一种支持高效写的自适应学习索引方法和系统 |
CN113268457B (zh) * | 2021-05-24 | 2022-07-08 | 华中科技大学 | 一种支持高效写的自适应学习索引方法和系统 |
CN113742350A (zh) * | 2021-09-09 | 2021-12-03 | 北京中安智能信息科技有限公司 | 基于机器学习模型的时空索引构建方法和装置及查询方法 |
CN113779154B (zh) * | 2021-09-18 | 2024-04-23 | 华中科技大学 | 一种分布式学习索引模型的构建方法及应用 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111651455A (zh) | 基于机器学习的高效并发索引数据结构 | |
Achtert et al. | DeLi-Clu: boosting robustness, completeness, usability, and efficiency of hierarchical clustering by a closest pair ranking | |
US10042914B2 (en) | Database index for constructing large scale data level of details | |
Ferragina et al. | Learned data structures | |
Papenbrock et al. | A hybrid approach for efficient unique column combination discovery | |
Hadian et al. | Interp olation-friendly B-tr ees: Bridging the Gap Betw een AlgorithmicandLearnedInde xes | |
Li et al. | ASLM: Adaptive single layer model for learned index | |
US20200293509A1 (en) | Technique for log records management in database management system | |
Li et al. | A scalable learned index scheme in storage systems | |
CN113779154B (zh) | 一种分布式学习索引模型的构建方法及应用 | |
CN113297136A (zh) | 一种面向lsm树的键值存储方法和存储系统 | |
Liu et al. | EI-LSH: An early-termination driven I/O efficient incremental c-approximate nearest neighbor search | |
Qu et al. | Hybrid indexes by exploring traditional B-tree and linear regression | |
Tian et al. | A learned index for exact similarity search in metric spaces | |
CN112434035B (zh) | 基于机器学习的并发哈希索引数据结构的索引方法及系统 | |
Sun | Personalized music recommendation algorithm based on spark platform | |
CN111309982A (zh) | 机器学习数据索引结构的自适应结构调整方法及系统 | |
US20060122963A1 (en) | System and method for performing a data uniqueness check in a sorted data set | |
CN113268457A (zh) | 一种支持高效写的自适应学习索引方法和系统 | |
US8660974B2 (en) | Inference over semantic network with some links omitted from indexes | |
CN110515897B (zh) | Lsm存储系统读性能的优化方法及系统 | |
CN115827651B (zh) | 一种低能耗的机载嵌入式数据库内存事务管理方法及系统 | |
CN114896250B (zh) | 一种键值分离的键值存储引擎索引优化方法及装置 | |
Wang et al. | The concurrent learned indexes for multicore data storage | |
CN115878625A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200911 |