CN116186085A - 一种基于缓存梯度冷热数据分层机制的键值存储系统及方法 - Google Patents
一种基于缓存梯度冷热数据分层机制的键值存储系统及方法 Download PDFInfo
- Publication number
- CN116186085A CN116186085A CN202310047424.2A CN202310047424A CN116186085A CN 116186085 A CN116186085 A CN 116186085A CN 202310047424 A CN202310047424 A CN 202310047424A CN 116186085 A CN116186085 A CN 116186085A
- Authority
- CN
- China
- Prior art keywords
- key
- hot
- data
- cold
- cache
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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
- 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/2255—Hash tables
-
- 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/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/0643—Management of files
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开一种基于缓存梯度冷热数据分层机制的键值存储系统及方法,系统包括内存组件、设备组件和磁盘组件,方法为:过滤器筛选Key分流冷热数据;热数据进入热缓存模块,冷数据进入冷缓存模块;热缓存模块淘汰过时数据进入冷缓存模块,冷数据达到数量后进入GPUsort组件排序同时备份到GPU缓存区组件,冷数据经GPUsort组件排序存储到磁盘组件,同时,对磁盘文件热度值总和小于预定值的文件向系统下层迁移,大于预定值的文件向系统上层迁移。本发明优化了内存组件,增加了梯度分级的冷热数据机制,替换了内存数据结构,优化了内存缓存数据的读写机制,设置了“热数据上涌”机制,能够用更好、更准确的缓存策略对读写进行优化。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种基于缓存梯度冷热数据分层机制的键值存储系统及方法。
背景技术
NoSQL伴随着超大规模并发的需求而诞生的非关系型数据库,而键值对(Key-Value)存储数据库是可以应对分布式大规模数据的高效管理方案,由于磁盘I/O的开销是数据库效率瓶颈之一,因此产生了很多减少磁盘I/O的方案;LSM树就是为了解决频繁磁盘读写的方案之一,日志结构的合并树(LSM-tree)是一种基于缓存梯度冷热数据分层机制的键值存储系统及方法,基于LSM-tree结构的分布式键值对存储数据库成为工业界主流数据库方案,如经典的KV数据库LevelDB,多重优化的多线程数据库RocksDB,基于键值分离的WiscKey,基于分区思想的PebblesDB等。LSM-Tree的本质是基于不在原地更新(out-placeupdate)策略,数据更新操作直接将新值追加到文件末尾,将随机写转换为顺序写,写性能提高的同时会造成冗余数据,造成写放大。同时,LSM-tree的设计原则是要求先内存再磁盘,LSM在数据写入时,不直接写到磁盘中,而是在内存中保留一段时间,并使用预写式日志WAL(Write-aheadlogging)来保证数据不丢失。
采用键值分离策略很好的控制了LSM-tree的写放大,但是同时对于读取的要求提高了,并且没有优化内存的缓存结构,使得在典型的WPI工作负载中,点查找读占75%写入占25%(75%pointlookups,25%writes),没有利用好缓存数据做到加速读,现有的内存组件结构大多采用B/B+树结构来替换内存跳表,因为B/B+树是一个读写速度均衡的结构,但是引入B/B+树会带来内存空间的开销,针对一些热点数据,B/B+树也会带来倾斜等问题。
键值存储数据库是许多分布式系统管理大规模数据的首选方案,对于LSM-Tree结构的改进以及各种优化方案有很多,但是对于缓存的改进工作有限。并且,现有的内存数据库和LSM-tree数据库没有很好的结合,因此有必要优化现有键值存储数据库内存组件。
现实中需要一种更好、更精确的缓存热数据的策略以提高读性能,构建一个系统能够同时对读写进行优化。
发明内容
本发明的目的在于提供一种基于缓存梯度冷热数据分层机制的键值存储系统及方法,能够优化缓存组件,增加梯度分级的冷热数据机制,替换内存数据结构,优化内存缓存数据的读写机制,能够用更好、更准确的缓存策略对读写进行优化。
本发明的目的可以通过以下技术方案实现:一种基于缓存梯度冷热数据分层机制的键值存储系统,包括有序分层Key-Value数据的内存组件、设备组件和磁盘组件,所述内存组件包括级联BloomFilter模块、冷HashTable缓存模块和热HashTable缓存模块,所述设备组件包括GPUsort组件、GPU缓存区组件和驱动模块;
所述级联BloomFilter模块用于精确筛选Key-Value中的Key,分流热数据和冷数据;
所述冷HashTable缓存模块和热HashTable缓存模块分别用于缓存热数据和冷数据;
所述GPUsort组件用于对进入GPUsort组件的冷数据进行排序;
所述GPU缓存区组件用于对进入GPUsort组件进行排序的冷数据进行备份;
所述驱动模块用于协调内存组件调用GPUsort组件。
一种基于缓存梯度冷热数据分层机制的键值存储方法,所述方法应用于基于缓存梯度冷热数据分层机制的键值存储系统,所述方法包括以下工作步骤:
S1、级联循环BloomFilter精确筛选Key-Value中的Key,分流热数据和冷数据;
S2、所述热数据进入热HashTable缓存模块,所述冷数据进入冷HashTable缓存模块;
S3、所述冷HashTable缓存模块内的冷数据积达到设定数量后进入GPUsort组件进行排序,所述冷数据积达到设定数量后同时备份到GPU缓存区组件;
S4、所述冷数据经GPUsort组件排序后存储到磁盘组件。
作为本发明再进一步的方案:所述级联循环BloomFilter为三层级联循环。
作为本发明再进一步的方案:所述三层级联循环BloomFilter精确筛选Key步骤包括:
S11、第一层BloomFilter筛选Key,如果当前Key不存在,那么则加入,Key热度值设置为0,如果Key存在;
S12、查找第二层BloomFilter,如果第二层BloomFilter不存在Key,则直接插入Key,并将Key热度值设置为1,如果Key存在;
S13、查找第三层BloomFilter,如果第三层BloomFilter不存在Key,则插入Key,设置Key热度值为3,如果Key依然存在;
S14、Key热度值直接设置为最大值128。
作为本发明再进一步的方案:所述热数据Key热度值为1、3、128;所述冷数据Key热度值为0。
作为本发明再进一步的方案:所述GPU缓存区组件用于热数据读优化操作,所述GPU缓存区组件用于读优化操作的步骤包括:
S31、判断搜索数据是否为热数据,如果是热数据;
S32、根据查询在内存组件搜索,如果搜索到,则直接返回;
S33、如果没有搜索到,到GPU缓存区组件内并行搜索,如果搜索到,则返回结果;
S34、如果没有搜索到,到磁盘组件搜索。
作为本发明再进一步的方案:所述热HashTable缓存模块和冷HashTable缓存模块中HashTable中记录着Key偏移量、Value偏移量和Key的热度值。
作为本发明再进一步的方案:所述磁盘组件采用热层和冷层的结构管理Key的元数据磁盘SSTable文件,所述热层采用hash函数管理,所述冷层采用有序管理。
作为本发明再进一步的方案:所述热层采用hash函数管理包括以下步骤:
S41、记录写入磁盘SSTable文件中的热度值总和,以此区分冷文件和热文件;
S42、所述磁盘SSTable文件中热层采用Hash函数进行分区,将前缀相似的Key数据分入到一个分区中;
S43、将热度值总和低的数据存放到慢的存储系统逻辑下层中存储,将热度值总和高的数据存放到快的存储系统逻辑上层中存储。
作为本发明再进一步的方案:所述Key-Value中Value文件采用Value文件原地更新的策略,所述Value文件原地更新的策略包括以下步骤:
S21、对键值分离后的存储的Value文件,进行无效空间的Key追踪;
S22、如果Key是直接插入的无更新,采用append方法进行Value文件插入;
S23、如果Key有更新,查找Value偏移量,定位到失效Value文件的位置,并且将新Value文件插入;
S24、如果原地址的Value文件空间不够插入本次Value文件,继续进行append方法插入。
本发明的有益效果:
1、本发明通过一种基于缓存梯度冷热数据分层机制的键值存储系统及方法通过一套精确冷热梯度分层的冷热数据甄别机制,并且利用冷热数据的不同进行不同处理,使得数据读写更加高效,利用GPUsort和HashTabl替换原方式内存组件中的SkipList,采用HashTable方式来达到同时提高读写性能的目的,无序的数据可以在卸载到GPU上利用其超高的算力进行数据排序,优化了缓存组件,增加梯度分级的冷热数据机制,替换内存数据结构,优化内存缓存数据的读写机制,用更好、更准确的缓存策略对读写进行优化,在内存里做到尽可能存储热数据以供用户使用,而冷数据则下沉到磁盘上,加快读取,减少磁盘I/O,通过对读写进行优化,更好、更精确缓存热数据提高读性能。
2、增加磁盘文件冷热数据分层主动感知技术,在磁盘上进行冷热文件分层主动感知,使热层文件尽可能存储在存储系统逻辑上层,通过冷热分层的结构来管理磁盘组件中SSTable文件,记录热度值总和,区分冷热文件,将前缀相似的Key分入到一个分区中,实现分区中无序,分区间有序,用热度值来支持冷数据下沉、热数据上涌的操作,利用存储介质速度不同的,进行数据的分级存储,对数据有序分层,对读写进行优化,提高了数据读性能。
3、对于Value文件采用原地更新的策略,对于键值分离后的存储Value的文件,进行无效空间的追踪,通过原地更新的策略既可以避免一次性大量GC导致的用户端操作受阻,也可以降低空间放大,也可以避免一次性GC导致瞬时的算力竞争以及高的空间放大。
附图说明
图1为本发明一种基于缓存梯度冷热数据分层机制的键值存储系统及方法工作流程图;
图2为本发明级联循环BloomFilter的工作流程图;
图3为本发明磁盘组件采用热层和冷层结构管理Key的元数据磁盘SSTable文件的工作流程图;
图4为本发明Value文件原地更新的策略的工作流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中表示,其中自始至终相同或类似的符号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解对本发明的限制。
为便于对本发明的准确理解,首先对本发明中涉及的术语及其英文缩写进行说明:BloomFilter为布隆过滤器,一般用于检索一个元素是否在一个集合中;Key-Value为键值对,包括Key键和Value值,是一种数据库存储系统的数据结构;HashTable为哈希表,是根据Key-Value直接进行访问的数据结构;Hash为哈希函数,为HashTable中的一种函数;SkipList为跳表;GPUsort为GPU排序;O(1)为程序的时间复杂度;SSTable文件为磁盘排序的字符串表,SSTable文件里面的Key-Value是有序保存的;append方法为传统追加写方法;GC为垃圾数据回收。
如图1-4所示,一种基于缓存梯度冷热数据分层机制的键值存储系统,系统包括有序分层Key-Value数据的内存组件、设备组件和磁盘组件,所述内存组件包括级联BloomFilter模块、冷HashTable缓存模块和热HashTable缓存模块,所述设备组件包括GPUsort组件、GPU缓存区组件和驱动模块;
所述级联BloomFilter模块用于精确筛选Key-Value中的Key,分流热数据和冷数据;
所述冷HashTable缓存模块和热HashTable缓存模块分别用于缓存热数据和冷数据;
所述GPUsort组件用于对进入GPUsort组件的冷数据进行排序;
所述GPU缓存区组件用于对进入GPUsort组件进行排序的冷数据进行备份;
所述驱动模块用于协调内存组件调用GPUsort组件。
一种基于缓存梯度冷热数据分层机制的键值存储方法,所述方法应用于基于缓存梯度冷热数据分层机制的键值存储系统,方法包括以下工作步骤:
S1、级联循环BloomFilter精确筛选Key-Value中的Key,分流热数据和冷数据;
S2、所述热数据进入热HashTable缓存模块,所述冷数据进入冷HashTable缓存模块;
S3、所述冷HashTable缓存模块内的冷数据积达到设定数量后进入GPUsort组件进行排序,所述冷数据积达到设定数量后同时备份到GPU缓存区组件;
S4、所述冷数据经GPUsort组件排序后存储到磁盘组件。
级联循环BloomFilter承担着整个系统最重要的冷数据热数据识别,其他组件依靠着Key冷热值来决定做何种操作,通过级联循环BloomFilter为一个Key标注好冷热值之后,通过冷热值判断这个Key数据为热数据和冷数据,应该落入热HashTable缓存模块还是冷HashTable缓存模块,热HashTable缓存模块会淘汰过时数据进入冷HashTable缓存模块内,冷HashTable缓存模块缓存达到设定值满了后,系统会调用GPUsort来执行数据排序和缓存的功能,GPUsort利用了超大的算力和超大的显存来进行排序和缓存数据,当排好序后,由CPU组装数据并写入磁盘组件。
系统工作的流程图如图1所示,内存组件分为级联BloomFilter模块和冷HashTable缓存模块和热HashTable缓存模块,用户通过put接口传入一次请求,当一个Key-Value键值对到达内存组件时,Key首先通过级联循环BloomFilter模块,级联循环BloomFilter分为三层,三个级联循环BloomFilter组成一个循环过滤队列,队头由current指针标志,队头到队尾的权重是由系统设定的,并且不是等值的权重,因此可以过滤出不同Key的频次。
三层级联循环BloomFilter精确筛选Key步骤包括:对每一个级联循环BloomFilter设置一定大小的Key数量限制,首先验证current指针指向的第一层BloomFilter是否数量已经超过限制,如果超过限制,则将当前BloomFilter的内容全部清0,将current指针指向第二层BloomFilter。如图2所示,当一个Key到来时,需要给它一个精确的热值,我们会先查看第一层BloomFilter中是否存在这个Key,如果不存在,则直接赋热值为0,如果存在,则会去第二层BloomFilter中查找Key,如果第二层BloomFilter中不存在,则可以给它赋值为1,其中第二层BloomFilter权重为1,第一层BloomFilter权重为0,如果在第二层BloomFilter中不存在,则权重为0+1=1,所以这个Key的热值赋值为1,如果存在,则继续向第三层BloomFilter中去寻找,如果不存在,则赋热值为3,其中第三层BloomFilter的权重为2,则本层查找后权重为三层BloomFilter权重之和,所以权重为0+1+2=3,所以Key热值赋值为3,如果这个Key依然存在于第三层BloomFilter中,则说明这个Key的热度非常热,以至于三层BloomFilter依然不能够给它的热度分层,那么我们就可以直接将它的热值赋值成最大热值Max既128。
级联循环BloomFilter承担着精确分流的冷热数据的作用,同时为冷HashTable缓存模块和热HashTable缓存模块提供指导,BloomFilter层层筛选出不同热度的Key,将更热Key数据的缓存在哈希表中,热HashTable缓存模块会淘汰过时数据进入冷HashTable缓存模块内,冷数据积攒够一定数量送入设备端GPUsort进行排序,热数据留在内存组件中继续提供读加速。
进一步的,热HashTable缓存模块和冷HashTable缓存模块同时对读写进行优化,热HashTable缓存模块和冷HashTable缓存模块读写速度近似于O(1)。热HashTable缓存模块和冷HashTable缓存模块对读写同时进行优化,并且读写速度近似于O(1),热HashTable缓存模块和冷HashTable缓存模块中HashTable中记录着Key偏移量、Value偏移量和Key的热度值,便于后续根据偏移量寻找Value并且为后续冷数据和热数据进行自适应处理提供依据。
HashTable分为两个区域,热数据区和冷数据区,热数据区保存当前大热度值Key,其余Key保存在冷数据区,当冷数据和热数据甄别之后,我们会将热度值为1、3、128的Key存入热HashTable,热度为0的Key存入冷HashTable,同时淘汰过时的热数据到冷数据区,当冷数据区满时,将数据送入GPUsort进行排序,Value也会同时通过追加写的方式写入到Value文件中。
进一步的,设备组件包括一个记录着完整的Key-Value键值对的缓存区组件,还有一个驱动模块,当冷数据区的冷数据积攒到一定程度,GPU与CPU是两个独立的处理器,它们拥有各自独立的计算资源和内存,因此,我们的数据想要借助GPUsort帮忙排序,要借用驱动模块进行系统调用,完成诸如GPU显存空间申请、数据双向移动复制、同步异步模式控制、出错信息处理等,驱动模块可以帮助我们完成这些操作。驱动模块会将冷HashTable中的所有冷数据送入GPUsort排序,同时留下备份到GPU的缓存区,GPU可以提供巨大的算力以加速排序,采用了全新的GPU排序字节流的算法进行排序实现,相较于CPU而言,可以更快的采用并行计算资源用更短的时间达成排序的目的,由于GPU有巨大的缓存空间,因此我们可以借用一部分显存以缓存Key-Value键值对,实现激进的读优化操作。
搜索时只对热数据进行这样的搜索,因为热数据更有可能存在GPU缓冲区,冷数据则不必这样搜索,如果是点查询搜索,首先在内存组件搜索,如果搜索到,则直接返回,如果没有搜索到,则到GPU的缓存区搜索,此时搜索为并行搜索,GPU的并行能力为并行搜索提供支持,并行搜索结束后,如果搜索询到,则返回结果,如果没有,到磁盘组件搜索。
采用Hash的内存结构对范围查询是困难的,但是可以采用将范围查询转化成点查询的方式进行范围查询,当GPUsort排序后,排序后的结果会由驱动模块传输回CPU内存空间中,由CPU控制数据刷入磁盘组件中。
进一步的,对磁盘组件采用冷分层和热分层的结构来管理Key的元数据SSTable,热分层采用hash管理,冷分层采用有序管理,冷分层的有序管理即为尽可能的让SSTable按照有序非重叠的方式在存储区依次存储,如果数据重叠,则需要主动进行数据合并以达到必须非重叠的必要条件;磁盘的SSTable文件,会通过hash进行分区,我们将前缀相似的Key分入到一个分区中,实现分区中无序,分区间有序。
同时,将记录写入磁盘的SSTable中的热度值总和,用热度值总和区分冷文件和热文件,用热度值总和支持冷数据下沉、热数据上涌的操作,冷数据下沉,利用存储介质速度不同的,进行数据的分级存储,根据记录的热度值总和可以支持这种操作,磁盘上的文件会根据所包含Key的热度值总和进行操作,热度值总和小于预定值的文件会向系统下层迁移,大于预定值的文件会向系统上层迁移,实现冷数据和热数据的分级存储,热数据上涌,则可以对热度值总和较高的文件,放入更高的层级中,这样对于Key的搜索可以更快更高效。
在每个SSTable进行flush的时候,记录SSTable中所以热度值总和,这个热度值总和会保存在元数据中,这个热度值总和为“热数据上涌,冷数据下称”提供支持,可以把热度值总和小于某个阈值为冷SSTable,大于阈值为热SSTable,例如,level 0层为热层,其他层为冷层,现在阈值设定为50,现在在0层的某一个SSTable热度值总和为10,那么这个SSTable就被定义为冷SSTable,现在它在0层为热层,那么它需要主动向下转移一层,这就是“冷数据下沉”;如果一个大于0层的某一层,有一个SSTable,热度值总和为80,那么它就被标记为热SSTable,那么则需要主动向0层转移,这就是“热数据上涌”。
其流程图如图3所示,系统首先会主动的查询内存中文件的元数据,根据“热数据应该放在热层、冷数据应该放在冷层”的原则,根据文件的热度值总和去判断是否所有的元数据文件都在匹配上述原则,如果文件的热度与所在层级的冷热不符,那么就会将冷层里的热文件“上涌”到热层,将热层里的冷文件下沉到冷层,操作完成后,这部分流程就会休眠一段时间,然后再主动进入这个流程。
进一步的,对于Value文件而言,采用原地更新的策略,对于键值分离后存储的Value文件,进行无效空间的追踪,即判断Key,如果Key是直接插入的,采用传统键值分离的append方法进行Value文件插入,如果Key有更新,通过查找Value文件偏移量,定位到失效Value文件的位置,并且将新Value文件插入,如果原地址的Value文件空间不够插入本次Value文件,那么继续进行append插入。上述方法Value文件的更新采用了全新的策略,即原地更新策略,一个Key-Value若更新,这个Value的大小跟原始Value一样大,寻找原始Value的地址,将新值覆盖写入,如果不够写,那么则追加写的写入文件末尾。
原地更新的策略流程如图4所示:当用户请求到达时,首先会判断本次写操作是否可以原地更新,如果可以,则直接插入即可,如果不可以,则直接以追加方式写入请求,然后还需判断是否需要主动回收无效空间,如果是,则触发主动GC,这个时候GC量会下降,因为我们更新了原先无效的空间,如果不需要,结束流程。
这种原地更新的策略既可以避免一次性大量GC导致的用户端操作受阻,也可以降低空间放大。同时这种策略可以避免一次性GC导致瞬时的算力竞争以及高的空间放大。
本发明对用户请求,经过冷热数据的甄别,精确的将热数据留在内存中,冷数据存入磁盘,通过梯度分级的冷热数据标志,可以做到,内存中的冷热数据移动,磁盘上可以做到冷热文件主动感知,主动移动,达成更快的读取更少的I/O效果,另外,原地GC策略将空间放大降低,更好利用了无效空间,减轻了主动GC的负担。
从内存的使用管理角度,采用HashTable替换内存中的跳表,选择HashTable可以解决数据倾斜的问题,HashTable速度较快,并且数据分布均衡,另外HashTable面对海量数据的情况性能优异,通过HashTable可以得到了读写性能都为O(1)的内存读写组件。现有缓存组件管理数据,缺乏精确的冷热机制,通过本发明级联循环BloomFilter,对不同频次的热数据赋予不同的权重,精细化管理热值,通过对冷数据和热数据进行精细的冷热值标注,使得缓存中可以尽可能的缓存热值,高效利用有限的缓存空间,同时冷热值可以带入到磁盘上以进行冷热数据分介质存储;同时,采用了GPUsort,解决了HashTable中的数据在写入磁盘之前时排序消耗大量算力的问题,因为GPU包含有大量的空闲算力,在数据量较大的情况下排序速度远快于CPU。
从磁盘角度,冷热值可以带入到文件中,根据文件的冷热程度来进行文件的转储,即将冷数据转入到速度更慢的存储系统逻辑下层保存,热数据放在速度快的存储系统逻辑上层保存以更快的读写。针对键值分离的策略会导致无效空间较大的情况,本发明在键值分离的基础上,执行原地更新的策略,记录更新失效的Key-Value的空间,将无效空间管理起来进行再利用,有一个专用的Log记录失效空间的起始位置和大小,并且在下一次Key到来时寻找合适的空间原地更新插入,以达到重复利用失效空间的目的。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种基于缓存梯度冷热数据分层机制的键值存储系统,其特征在于:所述系统包括有序分层Key-Value数据的内存组件、设备组件和磁盘组件,所述内存组件包括级联BloomFilter模块、冷HashTable缓存模块和热HashTable缓存模块,所述设备组件包括GPUsort组件、GPU缓存区组件和驱动模块;
所述级联BloomFilter模块用于精确筛选Key-Value中的Key,分流热数据和冷数据;
所述冷HashTable缓存模块和热HashTable缓存模块分别用于缓存热数据和冷数据;
所述GPUsort组件用于对进入GPUsort组件的冷数据进行排序;
所述GPU缓存区组件用于对进入GPUsort组件进行排序的冷数据进行备份;
所述驱动模块用于协调内存组件调用GPUsort组件。
2.一种基于缓存梯度冷热数据分层机制的键值存储方法,其特征在于:所述方法应用于基于缓存梯度冷热数据分层机制的键值存储系统,所述方法包括以下工作步骤:
S1、级联循环BloomFilter精确筛选Key-Value中的Key,分流热数据和冷数据;
S2、所述热数据进入热HashTable缓存模块,所述冷数据进入冷HashTable缓存模块;
S3、所述冷HashTable缓存模块内的冷数据积达到设定数量后进入GPUsort组件进行排序,所述冷数据积达到设定数量后同时备份到GPU缓存区组件;
S4、所述冷数据经GPUsort组件排序后存储到磁盘组件。
3.根据权利要求2所述的一种基于缓存梯度冷热数据分层机制的键值存储方法,其特征在于:所述级联循环BloomFilter为三层级联循环。
4.根据权利要求3所述的一种基于缓存梯度冷热数据分层机制的键值存储方法,其特征在于:所述三层级联循环BloomFilter精确筛选Key步骤包括:
S11、第一层BloomFilter筛选Key,如果当前Key不存在,那么则加入,Key热度值设置为0,如果Key存在;
S12、查找第二层BloomFilter,如果第二层BloomFilter不存在Key,则直接插入Key,并将Key热度值设置为1,如果Key存在;
S13、查找第三层BloomFilter,如果第三层BloomFilter不存在Key,则插入Key,设置Key热度值为3,如果Key依然存在;
S14、Key热度值直接设置为最大值128。
5.根据权利要求4所述的一种基于缓存梯度冷热数据分层机制的键值存储方法,其特征在于:所述热数据Key热度值为1、3、128;所述冷数据Key热度值为0。
6.根据权利要求2所述的一种基于缓存梯度冷热数据分层机制的键值存储方法,其特征在于:所述GPU缓存区组件用于热数据读优化操作,所述GPU缓存区组件用于读优化操作的步骤包括:
S31、判断搜索数据是否为热数据,如果是热数据;
S32、根据查询在内存组件搜索,如果搜索到,则直接返回;
S33、如果没有搜索到,到GPU缓存区组件内并行搜索,如果搜索到,则返回结果;
S34、如果没有搜索到,到磁盘组件搜索。
7.根据权利要求2所述的一种基于缓存梯度冷热数据分层机制的键值存储方法,其特征在于:所述热HashTable缓存模块和冷HashTable缓存模块中HashTable中记录着Key偏移量、Value偏移量和Key的热度值。
8.根据权利要求7所述的一种基于缓存梯度冷热数据分层机制的键值存储方法,其特征在于:所述磁盘组件采用热层和冷层的结构管理Key的元数据磁盘SSTable文件,所述热层采用hash函数管理,所述冷层采用有序管理。
9.根据权利要求8所述的一种基于缓存梯度冷热数据分层机制的键值存储方法,其特征在于:所述热层采用hash函数管理包括以下步骤:
S41、记录写入磁盘SSTable文件中的热度值总和,以此区分冷文件和热文件;
S42、所述磁盘SSTable文件中热层采用Hash函数进行分区,将前缀相似的Key数据分入到一个分区中;
S43、将热度值总和低的数据存放到慢的存储系统逻辑下层中存储,将热度值总和高的数据存放到快的存储系统逻辑上层中存储。
10.根据权利要求2所述的一种基于缓存梯度冷热数据分层机制的键值存储方法,其特征在于:所述Key-Value中Value文件采用Value文件原地更新的策略,所述Value文件原地更新的策略包括以下步骤:
S21、对键值分离后的存储的Value文件,进行无效空间的Key追踪;
S22、如果Key是直接插入的无更新,采用append方法进行Value文件插入;
S23、如果Key有更新,查找Value偏移量,定位到失效Value文件的位置,并且将新Value文件插入;
S24、如果原地址的Value文件空间不够插入本次Value文件,继续进行append方法插入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310047424.2A CN116186085A (zh) | 2023-01-31 | 2023-01-31 | 一种基于缓存梯度冷热数据分层机制的键值存储系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310047424.2A CN116186085A (zh) | 2023-01-31 | 2023-01-31 | 一种基于缓存梯度冷热数据分层机制的键值存储系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116186085A true CN116186085A (zh) | 2023-05-30 |
Family
ID=86448126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310047424.2A Pending CN116186085A (zh) | 2023-01-31 | 2023-01-31 | 一种基于缓存梯度冷热数据分层机制的键值存储系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116186085A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117493400A (zh) * | 2024-01-02 | 2024-02-02 | 中移(苏州)软件技术有限公司 | 数据处理方法、装置及电子设备 |
CN117807045A (zh) * | 2024-03-01 | 2024-04-02 | 星云海数字科技股份有限公司 | 一种多级文件系统及其构建方法 |
CN118312516A (zh) * | 2024-06-06 | 2024-07-09 | 华侨大学 | 应用于键值分离存储系统的页缓存热数据聚合方法及装置 |
-
2023
- 2023-01-31 CN CN202310047424.2A patent/CN116186085A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117493400A (zh) * | 2024-01-02 | 2024-02-02 | 中移(苏州)软件技术有限公司 | 数据处理方法、装置及电子设备 |
CN117493400B (zh) * | 2024-01-02 | 2024-04-09 | 中移(苏州)软件技术有限公司 | 数据处理方法、装置及电子设备 |
CN117807045A (zh) * | 2024-03-01 | 2024-04-02 | 星云海数字科技股份有限公司 | 一种多级文件系统及其构建方法 |
CN117807045B (zh) * | 2024-03-01 | 2024-05-28 | 星云海数字科技股份有限公司 | 一种多级文件系统及其构建方法 |
CN118312516A (zh) * | 2024-06-06 | 2024-07-09 | 华侨大学 | 应用于键值分离存储系统的页缓存热数据聚合方法及装置 |
CN118312516B (zh) * | 2024-06-06 | 2024-08-27 | 华侨大学 | 应用于键值分离存储系统的页缓存热数据聚合方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11048691B2 (en) | In-memory database system | |
CN110825748B (zh) | 利用差异化索引机制的高性能和易扩展的键值存储方法 | |
CN116186085A (zh) | 一种基于缓存梯度冷热数据分层机制的键值存储系统及方法 | |
US9858303B2 (en) | In-memory latch-free index structure | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
EP3170106B1 (en) | High throughput data modifications using blind update operations | |
US7194589B2 (en) | Reducing disk IO by full-cache write-merging | |
US11755427B2 (en) | Fast recovery and replication of key-value stores | |
Stoica et al. | Enabling efficient OS paging for main-memory OLTP databases | |
CN109358987B (zh) | 一种基于两级数据去重的备份集群 | |
CN111026329B (zh) | 基于主机管理瓦记录磁盘的键值存储系统及数据处理方法 | |
CN102831222A (zh) | 一种基于重复数据删除的差量压缩方法 | |
CN110309233A (zh) | 数据存储的方法、装置、服务器和存储介质 | |
CN113297136A (zh) | 一种面向lsm树的键值存储方法和存储系统 | |
CN109598156A (zh) | 一种写时重定向引擎快照流方法 | |
US11397706B2 (en) | System and method for reducing read amplification of archival storage using proactive consolidation | |
CN107665219A (zh) | 一种日志管理方法及装置 | |
CN117687970B (zh) | 一种元数据检索方法、装置及电子设备和存储介质 | |
US11829291B2 (en) | Garbage collection of tree structure with page mappings | |
US20180011897A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
Fevgas et al. | LB-Grid: An SSD efficient grid file | |
Shaull | Retro: a methodology for retrospection everywhere | |
Ma et al. | Tidal-tree-mem: Toward read-intensive key-value stores with tidal structure based on LSM-tree | |
Zhang et al. | Making In-Memory Learned Indexes Efficient on Disk | |
JPS59220853A (ja) | デイスクキヤツシユシステム |
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 |