CN116821054A - 一种基于计算卸载机制的分布式键值存储*** - Google Patents

一种基于计算卸载机制的分布式键值存储*** Download PDF

Info

Publication number
CN116821054A
CN116821054A CN202310768404.4A CN202310768404A CN116821054A CN 116821054 A CN116821054 A CN 116821054A CN 202310768404 A CN202310768404 A CN 202310768404A CN 116821054 A CN116821054 A CN 116821054A
Authority
CN
China
Prior art keywords
key value
data
key
node
file
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
Application number
CN202310768404.4A
Other languages
English (en)
Inventor
潘玉彪
黄飞雄
张惠臻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huaqiao University
Original Assignee
Huaqiao University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huaqiao University filed Critical Huaqiao University
Priority to CN202310768404.4A priority Critical patent/CN116821054A/zh
Publication of CN116821054A publication Critical patent/CN116821054A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于计算卸载机制的分布式键值存储***,包括一个主节点和若干数据节点;所述计算卸载机制包括:在写入数据时保存键值文件和对应的IP地址至元数据中,形成键值文件‑IP映射表,进行层间合并时更新键值文件‑IP映射表,数据节点的部分键值文件重组为LSM树;对于要主节点执行的计算查询,根据元数据信息将键发送至对应的数据节点,再在对应的数据节点进行计算,将计算任务卸载至数据节点,数据节点处理完数据后,再将数据返回给主节点,由主节点进行汇总和筛选。本发明能够减少网络中数据的传输量,利用数据节点的计算能力,提升分布式键值存储***的读写性能。

Description

一种基于计算卸载机制的分布式键值存储***
技术领域
本发明涉及计算机存储领域,特别涉及一种基于计算卸载机制的分布式键值存储***。
背景技术
随着大数据时代的到来,数据储量不断增加,数据特点发生了明显变化,非结构化数据占比已达到了数据总量的80%。在这样的数据变化趋势下,键值存储被广泛应用,它对数据结构没有明确限制,具有很高的可扩展性。目前已经有一些优秀的键值存储产品出现且被广泛应用,如Chrome浏览器使用的Leveldb,facebook基于Leveldb进一步提出改进的RocksDb,Twitter使用的Redis和Memcached等。
分布式架构是建立在网络之上的软件***,通常来说包括分布式文件***,分布式存储***,分布式数据库等等。由于近些年数据量的激增,分布式架构得到了充分的发展。工业界现今存在许多的开源且成熟的分布式***架构,如Apache基金会开发的Hadoop,其中就包括了HDFS分布式文件***和HBase分布式键值数据库,Amazon开发的Amazon S3(Amazon Simple Storage Service)分布式对象存储,将数据分开存储在不同的节点或者数据服务中心,又比如应用最广泛的Ceph开源分布式文件***,支持块、对象及文件的分布式存储。
随着数据量的增加,传统单机键值存储***不足以存储如此庞大的数据量。无论是LevelDB还是RocksDB,都是单机版本的键值存储***。存储数据时,总是把数据存储在一台机器上。对了应对不断增长的数据量,工业界和学术界也出现了许多基于LSM树的分布式键值数据***,通过分布式存储的方式来满足数据量的增长的需求,比如HBase和Cassandra。HBase是由Apache基金会开发的分布式键值存储***,由Hadoop分布式框架提供持久化的数据存储和管理的工具,并且使用HDFS作为底层的存储***。Cassandra是由Meta公司开发的开源分布式数据库,具有良好的可扩展性,已经被Digg、Twitter等知名企业采纳。
尽管此类分布式键值存储***已经得到了广泛的应用,但是此类键值存储***都是在网络带宽大的情况下,才可以实现较为强大的性能。如果在网络带宽较低的情况下,则会出现数据传输速度占用时间长,导致***性能不佳的问题。在分布式的环境中,数据块的传输需要通过网络传输,但是由于LSM树的结构问题,写放大严重,且网络带宽低下的情况下由于写放大严重会导致更多数据量的传输,从而造成性能不佳。例如,当对1KB的键值对进行一万次查询时,RocksDB需要读取200M的总数据,而实际的数据只需要10M的数据。在低带宽的情况下数据的传输会占用很长的时间,从而影响***的性能。
发明内容
针对现有技术的问题,本发明的目的在于提供一种基于计算卸载机制的分布式键值存储***,能够减少网络中数据的传输量,利用数据节点的计算能力,提升分布式键值存储***的读写性能。
本发明采用如下技术方案:
一种基于计算卸载机制的分布式键值存储***,包括一个主节点和若干数据节点;所述计算卸载机制包括:
在写入数据时保存键值文件和对应的IP地址至元数据中,形成键值文件-IP映射表,进行层间合并时更新键值文件-IP映射表,数据节点的部分键值文件重组为LSM树;
对于要主节点执行的计算查询,根据元数据信息将键发送至对应的数据节点,再在对应的数据节点进行计算,将计算任务卸载至数据节点,数据节点处理完数据后,再将数据返回给主节点,由主节点进行汇总和筛选。
优选的,通过点读策略来支持所述计算查询,具体包括:
首先在主节点上对键进行判断,记录所有可能存在这个键的键值文件的名称,根据键值文件的名称,通过键值文件-IP映射表查询键值文件的IP地址,封装键和键值文件的名称,并发送到对应IP地址的数据节点上;
对应IP地址的数据节点接收到封装的数据后,根据键和键值文件的信息,对每一个键值文件创建一个迭代器,对目标的键值文件进行查找,封装键值对和其对应的序列号;
如果对应键的键值文件只有一个,则直接将键值对发送至主节点,完成点读操作;如果对应的键值文件有多个,且分布在同一个数据节点上,则在数据节点上对多个键值文件通过迭代器查询的键值对进行筛选,通过序列号判断哪一个键值对是最新的键值对,并且将该键值对发送至主节点,完成点读操作;如果对应的键值文件有多个,且分布在不同的数据节点上,则每个数据节点首先进行上述的点读操作,再将键值对和对应的序列号发送至主节点,主节点通过序列号对键值对新旧进行判断,选择最新的键值对,完成点读操作。
优选的,键值存储***在接收到用户请求后,数据读取流程包括:
步骤3.1,首先在缓存区中查找目标数据,若找到,转步骤3.2;若未找到,转步骤3.3;
步骤3.2,步骤***完成用户的读取请求,向用户发送读取到的目标数据;
步骤3.3,传入读取的键,根据键判断所有可能存在的键值文件,如果键在某个键值文件的最大键和最小键范围内,加入键值文件列表,转步骤3.4;如果不存在,转步骤3.5;
步骤3.4,键根据键值文件-IP地址映射表发送到对应的IP地址,让对应的数据节点对键值进行查询,如果存在,转步骤3.6;如果不存在,转步骤3.7;
步骤3.5,跳过该键值文件,继续寻找其他键值文件;
步骤3.6,数据节点返回键值对和对应的序列号给主节点;
步骤3.7,未找到目标键值对,返回Null;
步骤3.8,主节点根据序列号进行筛选;
步骤3.9,键值存储***完成用户的读取请求,向用户发送结果。
优选的,键值存储***在接收到用户写入请求后,数据写入流程包括:
步骤4.1,首先写入跳表结构中,如果达到大小限制,转步骤4.2;
步骤4.2,将此跳表的转换为只读跳表,并创建新的写入跳表结构用于数据写入;
步骤4.3,将步骤4.2的只读跳表转换为键值文件存储在分布式文件***中;
步骤4.4,记录步骤4.3存储的键值文件的名称和IP地址,组成键值文件-IP映射表,保存在主节点的元数据信息中;
步骤4.5,若没发生层间合并,转步骤4.7;否则,转步骤4.6;
步骤4.6,读取发生层间合并的数据到主节点,丢弃过时的旧数据并重新形成键值文件写入到数据节点中,此时键值文件-IP映射表同时发生更新,删除进行层间合并的键值文件信息写入新文件的信息;
步骤4.7,键值存储***完成用户的写入请求,向用户发送写入成功的信息。
与现有技术相比,本发明的有益效果如下:
1、本发明能够减小存储***读数据放大,对比原始的分布式键值存储***,要读取的数据从原本的数据块转变为键值对,减少了数据量的读取,从而减小读数据放大;
2、本发明能够减少数据量在网络中的传输,使用计算卸载的方法,每个数据节点至多只读取需要的数据,网络传输时也仅仅传输那一部分的数据,代替原本数据块传输,从而减小了网络中传输的数据量,在网络带宽较低的情况下可以提升***的性能;
3、本发明利用数据节点的计算能力,数据节点本身也是具有计算资源的机器,通过利用其计算能力从而增强整个集群的计算能力,增强整个集群的性能。
附图说明
图1为本发明实施例的基于计算卸载机制的分布式键值存储***的结构示意图;
图2为本发明实施例的基于计算卸载机制的分布式键值存储***及分布式点读策略的读流程图;
图3为本发明实施例的基于计算卸载机制的分布式键值存储***及分布式点读策略的读流程图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
参见图1所示,本发明一种基于计算卸载机制的分布式键值存储***,包括一个主节点和若干数据节点;所述计算卸载机制包括:
在写入数据时保存键值文件和对应的IP地址至元数据中,形成键值文件-IP映射表,进行层间合并时更新键值文件-IP映射表,数据节点的部分键值文件重组为LSM树;
对于要主节点执行的计算查询,根据元数据信息将键发送至对应的数据节点,再在对应的数据节点进行计算,将计算任务卸载至数据节点,数据节点处理完数据后,再将数据返回给主节点,由主节点进行汇总和筛选。
具体的,通过点读策略来支持所述计算查询,具体包括:
首先在主节点上对键进行判断,记录所有可能存在这个键的键值文件的名称,根据键值文件的名称,通过键值文件-IP映射表查询键值文件的IP地址,封装键和键值文件的名称,并发送到对应IP地址的数据节点上;
对应IP地址的数据节点接收到封装的数据后,根据键和键值文件的信息,对每一个键值文件创建一个迭代器,对目标的键值文件进行查找,封装键值对和其对应的序列号;
如果对应键的键值文件只有一个,则直接将键值对发送至主节点,完成点读操作;如果对应的键值文件有多个,且分布在同一个数据节点上,则在数据节点上对多个键值文件通过迭代器查询的键值对进行筛选,通过序列号判断哪一个键值对是最新的键值对,并且将该键值对发送至主节点,完成点读操作;如果对应的键值文件有多个,且分布在不同的数据节点上,则每个数据节点首先进行上述的点读操作,再将键值对和对应的序列号发送至主节点,主节点通过序列号对键值对新旧进行判断,选择最新的键值对,完成点读操作。
如图1中,基于计算卸载机制的分布式键值存储***包括一系列内存结构,如写入跳表、只读跳表、键值文件-IP映射表以及数据节点中的结构。其中每个节点对于整个分布式键值存储***是一个残缺的日志结构合并树,对于节点本身是一个完整的日志结构合并树。
参见图2所示,为本发明基于计算卸载机制的分布式键值存储***的数据读取流程图,具体包括:
101、用户向***发送的读取请求,转到102;
102、在缓存区中查找目标数据,若找到,获取目标数据,转到103,否则,转到104;
103、向用户返回查询结果;
104、传入读取的数据,根据键判断所有可能存在的键值文件,如果键在某个键值文件的最大键和最小键范围内,加入键值文件列表,转到105;
105、根据键值文件-IP地址映射表将键和对应信息发送到对应的IP地址,对应的数据节点对键进行查询,获得键值对及序列号,转到106,若查询为空,转到107;
106、将键值对及序列号返回至主节点,转到108;
107、主节点接受为空数据,转到103;
108、主节点根据序列号进行筛选,转到103。
参见图3所示,为本发明基于计算卸载机制的分布式键值存储***的数据写入流程图,具体包括:
201、用户向***发送的写入请求,转到202;
202、判断写入跳表是否已满,若未满,转到211,否则,转到203;
203、写入跳表转换为只读跳表,转到204;
204、判断缓存区的大小是否已满,若未满,转到205,否则,转到206;
205、创建新的写入跳表,转到202;
206、将只读跳表转换为键值文件,键值文件传输至分布式文件***,转到207;
207、保存键值文件和其存储的节点信息,组成键值文件-IP映射表,保存在主节点的元数据信息中,转到208;
208、若发生层间合并,转到209;否则,转到211;
209、读取发生层间合并的数据到主节点,丢弃过时的旧数据并重新形成键值文件传输至数据节点中,转到210;
210、更新键值文件-IP映射表,删除进行层间合并的键值文件信息写入新文件的信息,转到211;
211、写入数据到写入跳表中,转到212;
212、向用户返回写入结果。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。***权利要求中陈述的多个单元或***也可以由一个单元或***通过软件或者硬件来实现。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神范围。

Claims (4)

1.一种基于计算卸载机制的分布式键值存储***,包括一个主节点和若干数据节点;其特征在于,所述计算卸载机制包括:
在写入数据时保存键值文件和对应的IP地址至元数据中,形成键值文件-IP映射表,进行层间合并时更新键值文件-IP映射表,数据节点的部分键值文件重组为LSM树;
对于要主节点执行的计算查询,根据元数据信息将键发送至对应的数据节点,再在对应的数据节点进行计算,将计算任务卸载至数据节点,数据节点处理完数据后,再将数据返回给主节点,由主节点进行汇总和筛选。
2.根据权利要求1所述的基于计算卸载机制的分布式键值存储***,其特征在于,通过点读策略来支持所述计算查询,具体包括:
首先在主节点上对键进行判断,记录所有可能存在这个键的键值文件的名称,根据键值文件的名称,通过键值文件-IP映射表查询键值文件的IP地址,封装键和键值文件的名称,并发送到对应IP地址的数据节点上;
对应IP地址的数据节点接收到封装的数据后,根据键和键值文件的信息,对每一个键值文件创建一个迭代器,对目标的键值文件进行查找,封装键值对和其对应的序列号;
如果对应键的键值文件只有一个,则直接将键值对发送至主节点,完成点读操作;如果对应的键值文件有多个,且分布在同一个数据节点上,则在数据节点上对多个键值文件通过迭代器查询的键值对进行筛选,通过序列号判断哪一个键值对是最新的键值对,并且将该键值对发送至主节点,完成点读操作;如果对应的键值文件有多个,且分布在不同的数据节点上,则每个数据节点首先进行上述的点读操作,再将键值对和对应的序列号发送至主节点,主节点通过序列号对键值对新旧进行判断,选择最新的键值对,完成点读操作。
3.根据权利要求1所述的基于计算卸载机制的分布式键值存储***,其特征在于,键值存储***在接收到用户请求后,数据读取流程包括:
步骤3.1,首先在缓存区中查找目标数据,若找到,转步骤3.2;若未找到,转步骤3.3;
步骤3.2,步骤***完成用户的读取请求,向用户发送读取到的目标数据;
步骤3.3,传入读取的键,根据键判断所有可能存在的键值文件,如果键在某个键值文件的最大键和最小键范围内,加入键值文件列表,转步骤3.4;如果不存在,转步骤3.5;
步骤3.4,键根据键值文件-IP地址映射表发送到对应的IP地址,让对应的数据节点对键值进行查询,如果存在,转步骤3.6;如果不存在,转步骤3.7;
步骤3.5,跳过该键值文件,继续寻找其他键值文件;
步骤3.6,数据节点返回键值对和对应的序列号给主节点;
步骤3.7,未找到目标键值对,返回Null;
步骤3.8,主节点根据序列号进行筛选;
步骤3.9,键值存储***完成用户的读取请求,向用户发送结果。
4.根据权利要求1所述的基于计算卸载机制的分布式键值存储***,其特征在于,键值存储***在接收到用户写入请求后,数据写入流程包括:
步骤4.1,首先写入跳表结构中,如果达到大小限制,转步骤4.2;
步骤4.2,将此跳表的转换为只读跳表,并创建新的写入跳表结构用于数据写入;
步骤4.3,将步骤4.2的只读跳表转换为键值文件存储在分布式文件***中;
步骤4.4,记录步骤4.3存储的键值文件的名称和IP地址,组成键值文件-IP映射表,保存在主节点的元数据信息中;
步骤4.5,若没发生层间合并,转步骤4.7;否则,转步骤4.6;
步骤4.6,读取发生层间合并的数据到主节点,丢弃过时的旧数据并重新形成键值文件写入到数据节点中,此时键值文件-IP映射表同时发生更新,删除进行层间合并的键值文件信息写入新文件的信息;
步骤4.7,键值存储***完成用户的写入请求,向用户发送写入成功的信息。
CN202310768404.4A 2023-06-27 2023-06-27 一种基于计算卸载机制的分布式键值存储*** Pending CN116821054A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310768404.4A CN116821054A (zh) 2023-06-27 2023-06-27 一种基于计算卸载机制的分布式键值存储***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310768404.4A CN116821054A (zh) 2023-06-27 2023-06-27 一种基于计算卸载机制的分布式键值存储***

Publications (1)

Publication Number Publication Date
CN116821054A true CN116821054A (zh) 2023-09-29

Family

ID=88119751

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310768404.4A Pending CN116821054A (zh) 2023-06-27 2023-06-27 一种基于计算卸载机制的分布式键值存储***

Country Status (1)

Country Link
CN (1) CN116821054A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118092812A (zh) * 2024-04-18 2024-05-28 华侨大学 基于内存表索引与迭代器缩减机制的键值存储及读写方法
CN118277344A (zh) * 2024-06-04 2024-07-02 华侨大学 分布式键值存储***的存储节点层间合并方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118092812A (zh) * 2024-04-18 2024-05-28 华侨大学 基于内存表索引与迭代器缩减机制的键值存储及读写方法
CN118277344A (zh) * 2024-06-04 2024-07-02 华侨大学 分布式键值存储***的存储节点层间合并方法及装置

Similar Documents

Publication Publication Date Title
CN110825748B (zh) 利用差异化索引机制的高性能和易扩展的键值存储方法
CN116821054A (zh) 一种基于计算卸载机制的分布式键值存储***
CN101354726B (zh) 一种机群文件***的内存元数据管理方法
CN113377868B (zh) 一种基于分布式kv数据库的离线存储***
US8229916B2 (en) Method for massively parallel multi-core text indexing
CN113961514B (zh) 数据查询方法及装置
CN102521406A (zh) 海量结构化数据复杂查询任务的分布式查询方法和***
CN102521405A (zh) 支持高速加载的海量结构化数据存储、查询方法和***
CN103177027A (zh) 获取动态Feed索引的方法和***
CN106843770A (zh) 一种分布式文件***中小文件数据存储、读取方法及装置
CN112597114B (zh) 一种基于对象存储的olap预计算引擎优化方法及应用
CN111159176A (zh) 一种海量流数据的存储和读取的方法和***
CN110677461A (zh) 一种基于键值对存储的图计算方法
CN111913917A (zh) 一种文件处理方法、装置、设备和介质
CN115114294A (zh) 数据库存储模式的自适应方法、装置、计算机设备
CN114490744A (zh) 一种数据缓存方法、存储介质、电子装置
CN115934583B (zh) 分级缓存方法、装置及***
CN106796588A (zh) 索引表的更新方法和设备
CN116627345A (zh) 应用于海量value键值对的高性能KV缓存方法及装置
CN113672583B (zh) 基于存储与计算分离的大数据多数据源分析方法及***
CN116204130A (zh) 一种键值存储***和键值存储***的管理方法
CN114546962A (zh) 一种基于Hadoop的海事局船检大数据分布式存储***
CN114385577A (zh) 一种分布式文件***
CN113486023A (zh) 数据库分库分表的方法及装置
CN115408431A (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