CN111143366A - 一种针对海量大对象数据的高效能存储方法 - Google Patents

一种针对海量大对象数据的高效能存储方法 Download PDF

Info

Publication number
CN111143366A
CN111143366A CN201911371706.8A CN201911371706A CN111143366A CN 111143366 A CN111143366 A CN 111143366A CN 201911371706 A CN201911371706 A CN 201911371706A CN 111143366 A CN111143366 A CN 111143366A
Authority
CN
China
Prior art keywords
blob
cluster
large object
meta
record
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.)
Granted
Application number
CN201911371706.8A
Other languages
English (en)
Other versions
CN111143366B (zh
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.)
Focus Technology Co Ltd
Original Assignee
Focus Technology Co Ltd
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 Focus Technology Co Ltd filed Critical Focus Technology Co Ltd
Priority to CN201911371706.8A priority Critical patent/CN111143366B/zh
Publication of CN111143366A publication Critical patent/CN111143366A/zh
Application granted granted Critical
Publication of CN111143366B publication Critical patent/CN111143366B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2219Large Object storage; Management thereof

Abstract

本发明公开了一种针对海量大对象数据的高效能存储方法,其特征在于,包括步骤1,部署与客户端通讯连接的分布式Key‑Value集群,用于接收客户端上传的大对象数据,一套为meta‑cluster,一套为blob‑cluster,所述meta‑cluster用于存储meta信息部分,所述blob‑cluster包括reference‑db,用于接收reference,所述blob‑cluster用于存储blob值;步骤2,处理大对象记录写入场景;步骤3,处理大对象记录删除场景;步骤4,处理大对象记录复制场景;步骤5,处理大对象记录更新场景。本发明可以达到blob值去重、大幅降低数据的存储占用空间从而降低部署成本、大幅提升更新大对象记录meta信息的效率、可以独立运维等效果。

Description

一种针对海量大对象数据的高效能存储方法
技术领域
本发明涉及海量数据存储领域,特别是涉及一种针对海量大对象数据的高效能存储方法。
背景技术
近些年来,随着互联网应用的蓬勃发展,产生了海量的诸如视频、音频、图片等多媒体数据,为存储这些海量的大对象数据,涌现出一大批分布式的NOSQL存储产品。其中相当一部分为key-value结构的分布式存储系统,由于其具备较好的可扩展性,且数据结构简单,它们被众多互联网企业所应用于海量大对象数据的存储场景中,并且不少企业使用它们存储了PB乃至EB级的数据。然而,随着存储量的快速增长,人们逐渐意识到在很多互联网应用场景下,海量大对象数据的blob部分实际上存在大量的重复;比如,在社交平台中,不同的用户很可能发布相同的图片、视频等内容,这些直接造成了存储资源的快速消耗。此外,当需要将大对象数据在逻辑空间中,进行数据复制/剪切时,或是对大对象数据的meta信息部分进行修改更新时,由于涉及对blob数据的处理,表现出较为低下的性能。
面对这些问题,可以在应用层面进行大量的开发工作,比如:增加重复blob值的判定,并构建、维护应用到blob值的映射关系,以达到复用blob值的目的,但这样势必造成应用层面的复杂度。
此外,在海量大对象数据的去重问题上,专利《一种数据去重的方法及装置》(申请号:CN201611129751.9)相关研究,此专利提出对上传的大对象数据的blob部分进行MD5计算,进而依据MD5值判定数据库中是否存在对应的blob值,对于blob值已经存在的情形,将做放弃存储处理,并告知用户相应的记录标识。上述方案虽然避免了相同blob值的重复存储问题,但是其本质上是直接拒绝了用户的一些“重复”存储请求(这些请求包含已经存在的blob值),并期望由用户根据拒绝响应,进行后续的二次处理;按此方案,上层应用不得不自行构建、维护一层到blob值的映射关系;工程上,增加了架构复杂度,也增加了开发、维护成本。
发明内容
为解决现有大对象存储技术存在的问题,本发明将大对象记录分为meta与blob两个部分,并分别存储于两个相互独立的分布式Key-Value存储系统(以下分别称为:meta-cluster和blob-cluster)中。meta-cluster用于存储meta信息部分,其key为大对象记录标识,其value为大对象记录的meta信息,该meta信息包括blob值对应的MD5码;而blob-cluster用于存储blob部分,其key为大对象记录blob值的MD5码,其value为大对象记录的blob值。此外,在blob-cluster中,还将建立一个reference库(以下称:reference-db),该库保存大对象记录对blob值的reference;当meta-cluster中新增/删除一条记录时,将连带地在reference-db中新增/删除该记录对应的reference;当reference-db中某个blob值没有任何reference记录时,即表示该blob值不再被meta-cluster所引用,此时可将其清除。
本发明提供一种针对海量大对象数据的高效能存储方法,包括如下步骤:
步骤1,部署与客户端通讯相连的分布式Key-Value集群,用于接收客户端上传的大对象数据,所述大对象数据的记录个体称为大对象记录,所述客户端用于计算blob值的MD5码,具体为,基于Key-Value存储引擎,做两套部署,一套为meta-cluster,一套为blob-cluster,所述meta-cluster用于存储meta信息部分,其key为大对象记录标识,其value为大对象记录的meta信息,该meta信息包括blob值对应的MD5码;所述blob-cluster包括reference-db,用于接收reference,所述blob-cluster用于存储blob值,其key为大对象记录blob值的MD5码,其value为大对象记录的blob值;
步骤2,处理大对象记录写入场景:客户端计算blob值的MD5码,并以此MD5码向blob-cluster发起校验blob值存在性请求,以确定是否需要上传blob值;客户端向meta-cluster发起meta记录写入请求,以记录大对象记录标识到blob值的映射关系;meta-cluster向blob-cluster发起建立大对象记录到blob值的reference;
步骤3,处理大对象记录删除场景:客户端向meta-cluster发起删除指定的大对象记录请求,meta-cluster在删除对应的meta记录的同时,根据meta信息中包含的blob的MD5码向blob-cluster发起清除相应reference的请求;
步骤4,处理大对象记录复制场景:客户端向meta-cluster请求将指定的大对象记录复制到指定的逻辑库表中,meta-cluster根据指定的复制目标逻辑库表,构建新的大对象记录标识,并以此为key写入一条meta记录;此外,meta-cluster还需向blob-cluster请求写入新的大对象记录对应的reference;
步骤5,处理大对象记录更新场景:客户端向meta-cluster请求修改指定的大对象记录,meta-cluster根据大对象记录标识查找到对应的meta记录,并修改之;此步骤不涉及与blob-cluster的任何交互。
所述步骤2的处理大对象记录写入场景,具体为:
步骤2-1:客户端上传大对象数据时,首先计算blob值的MD5码,并向blob-cluster发送该MD5码,用以验证待上传blob是否存在;
步骤2-2:若blob存在,则客户端只向meta-cluster发送写入大对象记录meta信息的请求,所述meta信息中包含MD5码;若blob不存在,则客户端还需向blob-cluster发送写入相应blob数据的请求,所述请求包含blob值及其MD5码;
步骤2-3:当meta-cluster接收到大对象记录的meta信息写入请求后,将以其标识为key,以其meta信息为value存储一条key-value记录;同时,meta-cluster向blob-cluster发起写入一条reference记录的请求,所述请求中包含大对象记录的标识及meta信息中的blob值的MD5码;
步骤2-4:当blob-cluster接收到大对象记录的blob信息写入请求后,将以blob对应的MD5码为key,以blob值为value写入一条blob数据记录;blob-cluster接收到reference写入请求后,将以大对象记录标识与相应MD5码的组合键为key向reference-db写入一条记录。
所述步骤3的处理大对象记录删除场景,具体为:
步骤3-1:客户端向meta-cluster发起删除特定大对象记录的请求,所述请求中包含大对象记录的唯一标识;
步骤3-2:meta-cluster根据删除请求中的大对象记录标识,查找到相应的meta信息,并根据其中的blob值的MD5码向blob-cluster发起删除相应reference的请求,所述请求中包含大对象记录标识和blob值的MD5码;
步骤3-3:blob-cluster根据删除reference的请求中的大对象记录标识和blob值的MD5码,将对应的reference从reference-db中移除;检查reference-db中是否还存在关于当前blob的reference,若不存在,则删除相关的blob记录;
步骤3-4:meta-cluster得到步骤3-3的完成响应后,继续步骤3-2中的删除操作;此时,meta-cluster根据大对象记录标识删除对应的meta记录。
所述步骤4的处理大对象记录复制场景,具体为:
步骤4-1:客户端向meta-cluster发起复制特定大对象记录的请求,所述请求中包含大对象记录的唯一标识及操作目标逻辑库表名;
步骤4-2:meta-cluster根据复制请求中的大对象记录标识,查找到相应的meta信息;根据目标逻辑库表名构建新的大对象记录标识,所述大对象记录标识中包含逻辑库表名称;以新的大对象记录标识为key,以查找到的meta信息为value,写入一条记录;meta-cluster还向blob-cluster发起一个写入reference记录的请求,所述请求包含新的大对象记录标识及meta信息中包含的blob值的MD5码;
步骤4-3:blob-cluster接收到reference写入请求后,将以新的大对象记录标识与相应MD5码的组合键为key向reference-db写入一条记录。
所述步骤5的处理大对象记录更新场景,具体为:
步骤5-1:客户端向meta-cluster发起更新特定大对象记录meta信息的请求,所述请求中包含大对象记录的唯一标识及新的meta信息;
步骤5-2:meta-cluster根据更新请求中的大对象记录标识,查找到相应的meta信息,并将meta信息中的blob值的MD5码赋予请求中的新的meta信息中;更新请求中的大对象记录标识为key,以新的meta信息为value写入一条meta记录。
所述步骤4中,还包括处理大对象记录剪切场景,若当前操作为剪切请求,执行步骤4-1至步骤4-3后,meta-cluster删除步骤4-2中的meta记录。
所述分布式Key-Value集群以Bdb.je为节点引擎,使用Cassandra作为数据分布结构,所述meta-cluster和blob-cluster使用thrift作为通信协议与客户端相连。
本发明所达到的有益效果:将大对象记录分为meta与blob两个部分,并分别存储于两个相互独立的分布式Key-Value存储系统(以下分别称为:meta-cluster和blob-cluster)中。meta-cluster用于存储meta信息部分,其key为大对象记录标识,其value为大对象记录的meta信息,该meta信息包括blob值对应的MD5码;而blob-cluster用于存储blob部分,其key为大对象记录blob值的MD5码,其value为大对象记录的blob值。此外,在blob-cluster中,建立大对象记录标识到blob值的reference;当meta-cluster中新增/删除一条记录时,将连带地在blob-cluster中新增/删除该记录对应的reference;当blob-cluster中某个blob值没有任何reference时,即表示该blob值不再被meta-cluster所引用,此时可将其清除。如此本发明具备了传统分布式大对象存储系统的全部可能特性;同时具有以下优势:
(1)由于blob值以MD5码为key独立存于blob-cluster中,可以避免相同的blob值被多次存储,很自然地达到了blob值去重的目的;此特性在一些有着大量重复blob值的应用场景下,能够大幅降低数据的存储占用空间,从而降低部署成本。
(2)由于大对象记录的meta信息独立存储于meta-cluster中,当需要对大对象记录的meta部分进行修改时,并不需要对相应的blob值做任何调整或读取,可大幅提升更新大对象记录meta信息的效率。
(3)当需要对大对象记录进行诸如:逻辑库表间的复制/剪切时,并不需要挪动blob值,而只需在meta-cluster中添加/删除大对象记录对应的meta记录,并在blob-cluster增加相/删除相应的reference即可;如此,可大幅提升大对象记录的复制/剪切性能。
(4)因为能够很容易地从blob-cluster中,判定出特定的blob值是否已经存在,所以当客户端即将上传的大对象记录的blob部分已经存在于blob-cluster时,可以做到只向服务端提交meta信息;此特性在一些有着并发上传重复blob值的应用场景下,能够大幅降低客户端应用的网络上行开销,从而实现“秒传”特性。
(5)blob-cluster与meta-cluster的相互独立性,使得可以对它们进行独立运维——根据其特点,配置不同的硬件资源。
附图说明
图1为本发明的示例性实施例的一种针对海量大对象数据的高效能存储方法流程图;
图2为本发明的示例性实施例中的大对象记录写入的时序示意图;
图3为本发明的示例性实施例中的大对象记录删除的时序示意图;
图4为本发明的示例性实施例中的大对象记录剪切的时序示意图。
图5为本发明的示例性实施例中的针对海量大对象数据的高效能存储系统架构示意图。
具体实施方式
以下为本方案中可能出现的技术术语的解释:
blob MD5:以Message-Digest Algorithm 5(信息-摘要算法5)计算而来的一个32字节的16进制字符串。
meta-cluster:用于存储meta信息部分,其key为大对象记录标识,其value为大对象记录的meta信息,该meta信息包括blob值对应的MD5码。
blob-cluster:用于存储blob部分,其key为大对象记录blob值的MD5码,其value为大对象记录的blob值。
blob数据reference:本发明中,meta信息与blob值分离存储于meta-cluster和blob-cluster中,大对象记录可以共享blob-cluster中的某个blob记录(如果它们blob部分的MD5码相同);为了准确地跟踪某个blob记录是否被meta-cluster中的大对象meta记录所引用,在blob-cluster中为每个大对象meta保持了一条到blob记录的引用。blob数据reference随着meta-cluster中记录的增加/删除而增加/删除。
reference-db:blob-cluster中为保存blob reference而建立的逻辑Key-Value库,其key为大对象记录标识与相应MD5码的组合键,value为null。reference-db需对key的MD5码部分构建查找索引,以便按指定MD5码快速查找出所有的reference,从而确认特定的blob值是否仍被引用。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
如图1所示的方法流程图,本发明具体包括如下步骤:
步骤1,部署于客户端相连的分布式Key-Value集群,用于接收客户端上传的大对象数据,所述大对象数据的记录个体称为大对象记录,所述客户端用于计算blob值的MD5码,具体为,基于Key-Value存储引擎,做两套部署,一套为meta-cluster,一套为blob-cluster,所述meta-cluster用于存储meta信息部分,其key为大对象记录标识,其value为大对象记录的meta信息,该meta信息包括blob值对应的MD5码;所述blob-cluster包括reference-db,用于接收reference,所述blob-cluster用于存储blob值,其key为大对象记录blob值的MD5码,其value为大对象记录的blob值;
步骤2,处理大对象记录写入场景:客户端计算blob值的MD5码,并以此MD5码向blob-cluster发起校验blob值存在性请求,以确定是否需要上传blob值;客户端向meta-cluster发起meta记录写入请求,以记录大对象记录标识到blob值的映射关系;meta-cluster向blob-cluster发起建立大对象记录到blob值的reference;
步骤3,处理大对象记录删除场景:客户端向meta-cluster发起删除指定的大对象记录请求,meta-cluster在删除对应的meta记录的同时,根据meta信息中包含的blob的MD5码向blob-cluster发起清除相应reference的请求;
步骤4,处理大对象记录复制场景:客户端向meta-cluster请求将指定的大对象记录复制到指定的逻辑库表中,meta-cluster根据指定的复制目标逻辑库表,构建新的大对象记录标识,并以此为key写入一条meta记录;此外,meta-cluster还需向blob-cluster请求写入新的大对象记录对应的reference;
步骤5,处理大对象记录更新场景:客户端向meta-cluster请求修改指定的大对象记录,meta-cluster根据大对象记录标识查找到对应的meta记录,并修改之;此步骤不涉及与blob-cluster的任何交互。
如图5所示的本发明具体实施例的系统架构示意图,该系统架构具体包含blob-cluster(103)、meta-cluster(101)和客户端Client(111)。
meta-cluster,meta-cluster为一个分布式的Key-Value集群,本实施例以Key-Value存储引擎Bdb.je为节点引擎,使用Cassandra(106)作为数据分布结构,构成一个基本的分布式Key-Value集群,此外,meta-cluster使用thrift服务模块(107)作为服务端与客户端的通信协议,为实现向blob-cluster新增和删除blob reference,meta-cluster中还设置了blob内部访问模块(108),该模块通过内部通信管道向blob-cluster发起blobreference的相关请求。meta-cluster内设置一个Key-Value逻辑存储库——meta记录库(102);该逻辑库用于存储大对象记录的meta信息,其key为大对象记录的标识,其value为具体的meta信息,meta信息中包含blob值的MD5码。
blob-cluster,blob-cluster的物理结构与meta-cluster一致,此外,在blob-cluster中设置blob内部服务模块(109),该模块接收meta-cluster的新增和删除blobreference的相关请求。blob-cluster内部划分为两个逻辑Key-Value存储库——blob记录库(104)和reference-db模块(105)。blob记录库用于存储blob值,其key为blob值的MD5码,而其value为blob值,reference-db模块用于存储大对象记录对blob值的引用关系,该应用关系构建在reference-db的key上,即reference-db的key是以blob值的MD5与大对象记录的标识组成的联合键;本发明将blob值及其MD5码编辑在reference-db模块的key的起始部,借助于基于Bdb.je的索引查询特性,能够快速地查找出所有关于特定blob值的reference,进而确定是否需要清理blob记录库库中的blob记录。
客户端,本发明的客户端可分别向meta-cluster和blob-cluster发起大对象记录的meta操作请求和blob操作请求,客户端通过Thrift请求模块(111)访问meta-cluster和blob-cluster,客户端中内置blob值及其MD5码计算模块(113),当客户端发起blob上传请求时,需要调用该模块计算出blob值的MD5码。
图2为本发明具体实施例中大对象记录写入的时序图,具体步骤有:
步骤201:客户端中的MD5计算模块首先计算出待上传大对象记录中blob值的MD5码。
步骤202:客户端以步骤201计算而来的MD5为参数,向blob-cluster发起blob存在性验证。
步骤203:blob-cluster从blob记录库查找请求中的MD5值。
步骤204:blob-cluster将步骤203中的查询结果返回到客户端。
步骤205:如步骤204的返回结果显示待上传的blob不存在,则客户端向blob-cluster发起blob值写入请求,请求参数为步骤201计算出的MD5值和blob值。
步骤206:blob-cluster向blob记录库,写入一条以MD5码为key,blob值为value的记录,此两项参数都来自步骤205的请求参数。
步骤207:blob记录写入成功后,blob-cluster向客户端返回相关结果。
步骤208:客户端确认blob值写入成功后,再向meta-cluster发起大对象记录meta信息的写入请求。
步骤209:meta-cluster接收到meta信息写入请求后,首先通过blob内部访问模块,向blob-cluster发起新增blob reference的请求,请求参数包括大对象记录标识和blob值及其MD5码。
步骤210:blob内部服务模块接收到reference写入请求后,blob-cluster向reference-db写入,以blob值及其MD5码和大对象记录标识组合键为key的blob引用记录。
步骤211:blob-cluster向meta-cluster返回blob reference写入成功的响应结果。
步骤212:meta-cluster确认blob reference写入成功后,向meta记录库写入一条meta信息记录。
步骤213:meta-cluster向客户端返回大对象记录写入成功的响应,至此具体实施例中大对象记录写入过程完成。
图3为本发明具体实施例中大对象记录删除的时序图,具体步骤有:
步骤301:客户端向meta-cluster发起删除特定大对象记录的请求,请求包含待删除大对象记录标识。
步骤302:meta-cluster根据步骤301指定的大对象记录标识,从meta记录库查找相应的meta信息,meta信息中包含其对应的blob值的MD5码。
步骤303:meta-cluster向blob-cluster发起删除blob reference的请求,请求中包含大对象记录标识和对应blob的MD5码。
步骤304:blob-cluster根据步骤303提供的参数,从reference-db中删除对应的blob reference记录;同时,扫描reference-db库,以确定当前blob值是否还存在其它reference,若不存在其reference,则将blob值一并从blob记录库中清除。
步骤305:blob-cluster向meta-cluster返回blob reference的删除结果。
步骤306:meta-cluster确认blob reference删除成功后,从meta记录库删除掉指定大对象记录对应的meta记录。
步骤307:meta-cluster向客户端返回大对象记录删除的结果,至此具体实施例中大对象记录删除过程完成。
图4为本发明具体实施例中大对象记录复制或剪切的时序图,具体步骤有:
步骤401:客户端向meta-cluster发起复制或剪切大对象记录的请求,请求中包含被复制或剪切大对象记录标识、剪切目标库表信息。
步骤402:meta-cluster根据大对象记录标识,查找到相应的meta信息,并根据剪切目标库表构建新的大对象记录标识。
步骤403:meta-cluster向blob-cluster发起写入blob reference的请求,请求参数为新构建的大对象记录标识及原有的blob值及其MD5码。
步骤404:blob-cluster为新构建的大对象记录标识,向reference-db写入一条指向原有blob值的reference。
步骤405:blob-cluster向meta-cluster返回写入成功的响应。
步骤406:meta-cluster确认blob reference写入成功后,向meta信息库写入以新大对象记录标识为key,步骤402读取到的meta信息为value的记录。
步骤407:meta-cluster向blob-cluster发起删除原有大对象记录对应reference的请求,请求参数包括步骤402中接收到的大对象记录标识和步骤402中读取的meta信息中的blob值及其MD5码。
步骤408:blob-cluster删除步骤407中指定的blob reference。
步骤409:blob-cluster向meta-cluster返回删除原有大对象记录对应reference的结果。
步骤410:meta-cluster确认原有大对象记录对应reference删除成功后,从meta信息库中删除原有大对象记录对应的meta记录。
步骤411:meta-cluster向客户端返回大对象记录剪切成功的响应结果,至此具体实施例中大对象记录剪切过程完成。
由于大对象记录复制操作过程被包含于剪切操作的步骤401~步骤406,不再赘述。
本发明所达到的有益效果:将大对象记录分为meta与blob两个部分,并分别存储于两个相互独立的分布式Key-Value存储系统(以下分别称为:meta-cluster和blob-cluster)中。meta-cluster用于存储meta信息部分,其key为大对象记录标识,其value为大对象记录的meta信息,该meta信息包括blob值对应的MD5码;而blob-cluster用于存储blob部分,其key为大对象记录blob值的MD5码,其value为大对象记录的blob值。此外,在blob-cluster中,建立大对象记录标识到blob值的reference;当meta-cluster中新增/删除一条记录时,将连带地在blob-cluster中新增/删除该记录对应的reference;当blob-cluster中某个blob值没有任何reference时,即表示该blob值不再被meta-cluster所引用,此时可将其清除。如此本发明具备了传统分布式大对象存储系统的全部可能特性;同时具有以下优势:
(1)由于blob值以MD5码为key独立存于blob-cluster中,可以避免相同的blob值被多次存储,很自然地达到了blob值去重的目的;此特性在一些有着大量重复blob值的应用场景下,能够大幅降低数据的存储占用空间,从而降低部署成本。
(2)由于大对象记录的meta信息独立存储于meta-cluster中,当需要对大对象记录的meta部分进行修改时,并不需要对相应的blob值做任何调整或读取,可大幅提升更新大对象记录meta信息的效率。
(3)当需要对大对象记录进行诸如:逻辑库表间的复制/剪切时,并不需要挪动blob值,而只需在meta-cluster中添加/删除大对象记录对应的meta记录,并在blob-cluster增加相/删除相应的reference即可;如此,可大幅提升大对象记录的复制/剪切性能。
(4)因为能够很容易地从blob-cluster中,判定出特定的blob值是否已经存在,所以当客户端即将上传的大对象记录的blob部分已经存在于blob-cluster时,可以做到只向服务端提交meta信息;此特性在一些有着并发上传重复blob值的应用场景下,能够大幅降低客户端应用的网络上行开销,从而实现“秒传”特性。
(5)blob-cluster与meta-cluster的相互独立性,使得可以对它们进行独立运维,根据其特点,配置不同的硬件资源。
以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。

Claims (7)

1.一种针对海量大对象数据的高效能存储方法,其特征在于,包括如下步骤:
步骤1,部署与客户端通讯相连的分布式Key-Value集群,用于接收客户端上传的大对象数据,所述大对象数据的记录个体称为大对象记录,所述客户端用于计算blob值的MD5码,具体为,基于Key-Value存储引擎,做两套部署,一套为meta-cluster,一套为blob-cluster,所述meta-cluster用于存储meta信息部分,其key为大对象记录标识,其value为大对象记录的meta信息,该meta信息包括blob值对应的MD5码;所述blob-cluster包括reference-db,用于接收reference,所述blob-cluster用于存储blob值,其key为大对象记录blob值的MD5码,其value为大对象记录的blob值;
步骤2,处理大对象记录写入场景:客户端计算blob值的MD5码,并以此MD5码向blob-cluster发起校验blob值存在性请求,以确定是否需要上传blob值;客户端向meta-cluster发起meta记录写入请求,以记录大对象记录标识到blob值的映射关系;meta-cluster向blob-cluster发起建立大对象记录到blob值的reference;
步骤3,处理大对象记录删除场景:客户端向meta-cluster发起删除指定的大对象记录请求,meta-cluster在删除对应的meta记录的同时,根据meta信息中包含的blob的MD5码向blob-cluster发起清除相应reference的请求;
步骤4,处理大对象记录复制场景:客户端向meta-cluster请求将指定的大对象记录复制到指定的逻辑库表中,meta-cluster根据指定的复制目标逻辑库表,构建新的大对象记录标识,并以此为key写入一条meta记录;此外,meta-cluster还需向blob-cluster请求写入新的大对象记录对应的reference;
步骤5,处理大对象记录更新场景:客户端向meta-cluster请求修改指定的大对象记录,meta-cluster根据大对象记录标识查找到对应的meta记录,并修改之;此步骤不涉及与blob-cluster的任何交互。
2.如权利要求1所述的一种针对海量大对象数据的高效能存储方法,其特征在于:所述步骤2的处理大对象记录写入场景,具体为:
步骤2-1:客户端上传大对象数据时,首先计算blob值的MD5码,并向blob-cluster发送该MD5码,用以验证待上传blob是否存在;
步骤2-2:若blob存在,则客户端只向meta-cluster发送写入大对象记录meta信息的请求,所述meta信息中包含MD5码;若blob不存在,则客户端还需向blob-cluster发送写入相应blob数据的请求,所述请求包含blob值及其MD5码;
步骤2-3:当meta-cluster接收到大对象记录的meta信息写入请求后,将以其标识为key,以其meta信息为value存储一条key-value记录;同时,meta-cluster向blob-cluster发起写入一条reference记录的请求,所述请求中包含大对象记录的标识及meta信息中的blob值的MD5码;
步骤2-4:当blob-cluster接收到大对象记录的blob信息写入请求后,将以blob对应的MD5码为key,以blob值为value写入一条blob数据记录;blob-cluster接收到reference写入请求后,将以大对象记录标识与相应MD5码的组合键为key向reference-db写入一条记录。
3.如权利要求2所述的一种针对海量大对象数据的高效能存储方法,其特征在于:所述步骤3的处理大对象记录删除场景,具体为:
步骤3-1:客户端向meta-cluster发起删除特定大对象记录的请求,所述请求中包含大对象记录的唯一标识;
步骤3-2:meta-cluster根据删除请求中的大对象记录标识,查找到相应的meta信息,并根据其中的blob值的MD5码向blob-cluster发起删除相应reference的请求,所述请求中包含大对象记录标识和blob值的MD5码;
步骤3-3:blob-cluster根据删除reference的请求中的大对象记录标识和blob值的MD5码,将对应的reference从reference-db中移除;检查reference-db中是否还存在关于当前blob的reference,若不存在,则删除相关的blob记录;
步骤3-4:meta-cluster得到步骤3-3的完成响应后,继续步骤3-2中的删除操作;此时,meta-cluster根据大对象记录标识删除对应的meta记录。
4.如权利要求3所述的一种针对海量大对象数据的高效能存储方法,其特征在于:所述步骤4的处理大对象记录复制场景,具体为:
步骤4-1:客户端向meta-cluster发起复制特定大对象记录的请求,所述请求中包含大对象记录的唯一标识及操作目标逻辑库表名;
步骤4-2:meta-cluster根据复制请求中的大对象记录标识,查找到相应的meta信息;根据目标逻辑库表名构建新的大对象记录标识,所述大对象记录标识中包含逻辑库表名称;以新的大对象记录标识为key,以查找到的meta信息为value,写入一条记录;meta-cluster还向blob-cluster发起一个写入reference记录的请求,所述请求包含新的大对象记录标识及meta信息中包含的blob值的MD5码;
步骤4-3:blob-cluster接收到reference写入请求后,将以新的大对象记录标识与相应MD5码的组合键为key向reference-db写入一条记录。
5.如权利要求4所述的一种针对海量大对象数据的高效能存储方法,其特征在于,所述步骤5的处理大对象记录更新场景,具体为:
步骤5-1:客户端向meta-cluster发起更新特定大对象记录meta信息的请求,所述请求中包含大对象记录的唯一标识及新的meta信息;
步骤5-2:meta-cluster根据更新请求中的大对象记录标识,查找到相应的meta信息,并将meta信息中的blob值的MD5码赋予请求中的新的meta信息中;更新请求中的大对象记录标识为key,以新的meta信息为value写入一条meta记录。
6.如权利要求5所述的一种针对海量大对象数据的高效能存储方法,其特征在于,所述步骤4中,还包括处理大对象记录剪切场景,若当前操作为剪切请求,执行步骤4-1至步骤4-3后,meta-cluster删除步骤4-2中的meta记录。
7.如权利要求1所述的一种针对海量大对象数据的高效能存储方法,其特征在于,所述分布式Key-Value集群以Bdb.je为节点引擎,使用Cassandra作为数据分布结构,所述meta-cluster和blob-cluster使用thrift作为通信协议与客户端相连。
CN201911371706.8A 2019-12-27 2019-12-27 一种针对海量大对象数据的高效能存储方法 Active CN111143366B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911371706.8A CN111143366B (zh) 2019-12-27 2019-12-27 一种针对海量大对象数据的高效能存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911371706.8A CN111143366B (zh) 2019-12-27 2019-12-27 一种针对海量大对象数据的高效能存储方法

Publications (2)

Publication Number Publication Date
CN111143366A true CN111143366A (zh) 2020-05-12
CN111143366B CN111143366B (zh) 2020-12-01

Family

ID=70520732

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911371706.8A Active CN111143366B (zh) 2019-12-27 2019-12-27 一种针对海量大对象数据的高效能存储方法

Country Status (1)

Country Link
CN (1) CN111143366B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113076325A (zh) * 2021-03-25 2021-07-06 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035303A (en) * 1998-02-02 2000-03-07 International Business Machines Corporation Object management system for digital libraries
US20100106734A1 (en) * 2008-10-24 2010-04-29 Microsoft Corporation Blob manipulation in an integrated structured storage system
CN102110146A (zh) * 2011-02-16 2011-06-29 清华大学 基于键值key-value存储的分布式文件系统元数据管理方法
CN102880557A (zh) * 2012-09-13 2013-01-16 浙江金大科技有限公司 一种异构数据源的多级分布式高速缓存
CN104516967A (zh) * 2014-12-25 2015-04-15 国家电网公司 一种电力系统海量数据管理系统及其使用方法
CN105893620A (zh) * 2016-04-28 2016-08-24 江苏物联网研究发展中心 基于分布式数据库的海量超大影像存取方法
CN110413588A (zh) * 2019-07-30 2019-11-05 中国工商银行股份有限公司 分布式对象存储方法、装置、计算机设备和存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035303A (en) * 1998-02-02 2000-03-07 International Business Machines Corporation Object management system for digital libraries
US20100106734A1 (en) * 2008-10-24 2010-04-29 Microsoft Corporation Blob manipulation in an integrated structured storage system
CN102110146A (zh) * 2011-02-16 2011-06-29 清华大学 基于键值key-value存储的分布式文件系统元数据管理方法
CN102880557A (zh) * 2012-09-13 2013-01-16 浙江金大科技有限公司 一种异构数据源的多级分布式高速缓存
CN104516967A (zh) * 2014-12-25 2015-04-15 国家电网公司 一种电力系统海量数据管理系统及其使用方法
CN105893620A (zh) * 2016-04-28 2016-08-24 江苏物联网研究发展中心 基于分布式数据库的海量超大影像存取方法
CN110413588A (zh) * 2019-07-30 2019-11-05 中国工商银行股份有限公司 分布式对象存储方法、装置、计算机设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
何颖鹏: "非结构化数据统一存储平台的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
刘谭兴: "分布式键值存储系统的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113076325A (zh) * 2021-03-25 2021-07-06 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN111143366B (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
US8843454B2 (en) Elimination of duplicate objects in storage clusters
US9967298B2 (en) Appending to files via server-side chunking and manifest manipulation
US7447839B2 (en) System for a distributed column chunk data store
US9183213B2 (en) Indirection objects in a cloud storage system
US8214334B2 (en) Systems and methods for distributed system scanning
US10740300B1 (en) Synchronization of metadata in a distributed storage system
US7457935B2 (en) Method for a distributed column chunk data store
CN105138571B (zh) 分布式文件系统及其存储海量小文件的方法
CN106484906B (zh) 一种分布式对象存储系统闪回方法及装置
CN102725755B (zh) 文件访问方法及系统
US9547706B2 (en) Using colocation hints to facilitate accessing a distributed data storage system
CN113986873B (zh) 一种海量物联网数据模型化的处理、存储与共享方法
WO2017088705A1 (zh) 数据处理方法和装置
CN108614837B (zh) 文件存储和检索的方法及装置
US11151081B1 (en) Data tiering service with cold tier indexing
CN107580032B (zh) 数据处理方法、装置及设备
KR101875763B1 (ko) 테이블 재구성시 트랜잭션의 성능저하를 최소화하는 온라인 데이터 베이스 관리 시스템 및 방법
CN111143366B (zh) 一种针对海量大对象数据的高效能存储方法
KR101589122B1 (ko) 네트워크 분산 파일 시스템 기반 iSCSI 스토리지 시스템에서의 장애 복구 방법 및 시스템
CN114661687B (zh) 一种基于ShardingSphere与Fastdfs的分布式文件存储方法
CN113742384A (zh) 一种基于区块链的数据读取方法
CN117215477A (zh) 数据对象存储方法、装置、计算机设备和存储介质
CN116684282A (zh) 新增云端服务器初始化方法、装置和计算机设备
CN117873405A (zh) 数据存储方法、装置、计算机设备和存储介质
CN116909480A (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