海量分布式数据库存储单元制造技术

技术编号:13625202 阅读:153 留言:0更新日期:2016-09-01 18:41
本发明专利技术提供一种海量分布式数据库存储单元,该存储单元从下到上划分为三个层次,即:数据存储层、数据抽象层、数据应用层;同时还设有元数据,通过管理元数据将数据块组织起来。数据存储层用于管理最基本的数据块;数据抽象层用于对数据块内数据记录进行排序和基于日志的数据修改;1)数据应用层通过调用不同的排序函数将排序规则传入数据抽象层,使得数据抽象层能够对数据块和日志块内的记录或指针排序;2)数据应用层通过定义的合并函数实现对数据的增加、删除、修改操作;3)负责将底层的所有数据块或日志块建立索引,将这些数据块或日志块串联起来,并提供数据检索入口;元数据是数据块和日志块的索引。本发明专利技术实现了高效存储。

【技术实现步骤摘要】

本专利技术涉及一种数据存储结构,尤其是一种数据库存储单元的结构。
技术介绍
当前计算机中的数据存储介质主要有硬盘、SSD、FLASH等。结合存储容量、IO(输入输出)性能、存储成本等因素综合考虑,硬盘是性价比最高的存储介质;硬盘具有顺序访问性能良好、随机访问性能低下的特点。结合IO操作耗时公式:T=C+S/M,其中T为IO操作耗时,C为磁盘平均寻道时间,S为数据大小,M为磁盘带宽。如果需要访问的数据较小,那么在整个访问时间中,磁头寻道时间所占据的比例就很高,若要在访问小文件场景下提高存储系统性能,则必须对数据存储逻辑进行优化,以进一步减少磁盘寻道时间C。
技术实现思路
本专利技术的目的是克服现有技术中存在的不足,提供一种支持大容量、结构化数据、有序/无序存储、高IO吞吐率的海量分布式数据库存储单元。鉴于该存储单元所具有的特性,可以在此基础上进一步扩展出分布式系统等高级应用,并由该存储单元为上层应用提供最基本的数据安全、高效存储等保证。本专利技术采用的技术方案是:一种海量分布式数据库存储单元,该存储单元从下到上划分为三个层次,即:数据存储层、数据抽象层、数据应用层;同时还设有元数据,通过管理元数据将数据块组织起来。数据存储层用于管理最基本的数据块;数据块中数据的基本单位以及存储格式为键值对(key-value),key是键对象,value是值对象;一个键值对就是一条数据记录;数据块存放于磁盘中,内存中会设置一个块缓存区,当块缓存区中的数据达到预设的数据块大小时就将这些数据作为一个完整数据块存入磁盘中;存储单元通过数据块编号对数据块进行管理,在文件中写入数据时通过数据块编号和块内偏移来定位,即<bid,offset>;bid为块编号,offset为块内偏移;数据抽象层用于对数据块内数据记录进行排序和基于日志的数据修改;对数据记录排序操作时,排序的规则由数据应用层提供;基于日志的数据修改包括:不将数据修改行为立即作用在数据上,而是将这些修改操作以日志的方式记录下来;修改操作相应的日志记录位于日志块中,日志块存于磁盘上;当需要对数据块内数据修改时,对日志块进行提交,即将日志块与所对应的数据块进行合并,从而完成真正的数据修改;数据应用层主要负责:1)数据应用层通过调用不同的排序函数将排序规则传入数据抽象层,使得数据抽象层能够对数据块和日志块内的记录或指针排序;2)数据应用层通过定义的合并函数实现对数据的增加、删除、修改操作;3)负责将底层的所有数据块或日志块建立索引,将这些数据块或日志块串联起来,并提供数据检索入口;元数据是数据块和日志块的索引,负责记录组成数据表格的块信息,具体记录了组成数据表格的块序号以及块中键值对的键对象Key的范围。进一步地,数据块内数据记录组织形式包括三种:第一种是未排序块,块内数据按照生成的数据记录依次向后追加,直至达到数据块设置的大小上限后写入磁盘;第二种是后排序块,针对的是块内数据记录的key定长、value定长;这种数据块先按照生成的数据记录的顺序存放,待数据块满时通过上层数据抽象层对块内所有数据记录进行排序并写入磁盘;第三种数据记录组织形式是先按照数据记录的生成顺序依次存放,同时在数据块的末端生成一个指针指向当下写入的数据记录的位置,当数据块写满时通过上层数据抽象层统一对数据块末端的所有数据指针进行排序,然后把数据块内数据写入磁盘。更进一步地,日志块内日志记录组织形式同数据块内数据记录组织形式。进一步地,日志块提交过程的第一步是将磁盘中已有的日志块读入内存;第二步是将所有的日志块与其对应的数据块数据合并,即依次读取日志块中的修改操作,把这些修改操作应用到数据块中;第三步是将合并后的数据块内数据进行排序,组合成新的数据块。进一步地,所述数据应用层负责将底层的所有数据块或日志块建立索引,将这些数据块或日志块串联起来,并提供数据检索入口,具体包括:对于每一条数据记录,其索引结构为<Key, bid, offset>,其中,Key为该条数据记录的键对象,bid为该条数据记录所在的块编号,offset为块内偏移;数据应用层抽象为数据表格,在数据表格上将所有的数据记录的索引按照key的大小划分为多个索引组;多个索引组构成一索引表;在每个索引组上再建立一级顶级索引,索引内容为<KeyL, KeyH, Id>,KeyL是该索引组最小Key,KeyH是该索引组最大Key,Id是该索引组的编号。更进一步地,顶级索引和索引组缓存在内存中。进一步地,数据块中数据存储的基本结构包括两种:当键对象key和值对象value都为定长时,采用第一种结构,即键对象key后紧跟值对象value;否则,采用第二种结构,在键对象key和值对象value前添加记录长度L,通过记录长度L指定key和value的总长度。进一步地,数据块只支持三种操作:整块写入、整块读取、块内区域读取。本专利技术的优点在于:1)数据读写使用了多种缓存来提高读写效率。2)数据归并和修改都通过归并排序完成,全都是流式读写,将绝大部分的随机IO操作转化为顺序IO操作,提高磁盘读写的效率。3)数据存储容量大,可达10TB,数据条数几十亿。4)错误数据恢复迅速。附图说明图1为本专利技术的数据记录格式示意图。图2为本专利技术的存储单元层次结构示意图。图3A为本专利技术的块内数据记录组织形式之一示意图。图3B为本专利技术的块内数据记录组织形式之二示意图。图3C为本专利技术的块内数据记录组织形式之三示意图。图4为本专利技术的数据抽象层对块内数据修改操作示意图。图5为本专利技术的数据索引结构示意图。图6为本专利技术的元数据结构。具体实施方式下面结合具体附图和实施例对本专利技术作进一步说明。存储单元在存储信息时,数据的基本单位以及存储格式为键值对(key-value),key是键对象,value是值对象;一个键值对就是一条数据记录;存储模式用以描述数据记录中的key和value的属性。可以将具有相同存储模式的键值对的集合组成逻辑上的数据表格(table),可以对数据表格中的数据进行排序。数据的存储单元为数据块,一个数据块对应于磁盘上的一个文件,一个文件则可能包含一个或多个数据块;若干个数据块在逻辑上组成一个数据表格。每个键值对只会存储在一个数据块中并且是完整的。如果单机上配置了多块磁盘,则数据块随机散落在这些磁盘中,并可为每个数据块设定大小的上限为了提高存储的可扩展性,本例中定义了二种数据存储的基本结构,如图1所示:键对象key为定长数据或以0结束的字符串,值对象value为定长或变长。当键对象key和值对象value都为定长时,可采用第一种结构,即键对象key后紧跟值对象value;否则,采用第二种结构,在键对象key和值对象value前添加记录长度L,通过记录长度L指定key和value的总长度;根据数据的存储逻辑,将本方案中的存储单元从下到上划分为三个层次,即:数据存储层、数据抽象层、数据应用层;同时还设有元数据,通过管理元数据将数据块组织起来;如图2所示;其中,数据存储层用于管理最基本的数据块;数据抽象层主要负责对存储层的数据进行排序以及对块内数据进行基于日志的修改操作,该层只对外暴露数据记录的Key,如果需要对数据记录进行排序,则需要根据应用层定义的本文档来自技高网...

【技术保护点】
一种海量分布式数据库存储单元,其特征在于:该存储单元从下到上划分为三个层次,即:数据存储层、数据抽象层、数据应用层;同时还设有元数据,通过管理元数据将数据块组织起来。

【技术特征摘要】
1.一种海量分布式数据库存储单元,其特征在于:该存储单元从下到上划分为三个层次,即:数据存储层、数据抽象层、数据应用层;同时还设有元数据,通过管理元数据将数据块组织起来。2.如权利要求1所述的海量分布式数据库存储单元,其特征在于:数据存储层用于管理最基本的数据块;数据块中数据的基本单位以及存储格式为键值对(key-value),key是键对象,value是值对象;一个键值对就是一条数据记录;数据块存放于磁盘中,内存中会设置一个块缓存区,当块缓存区中的数据达到预设的数据块大小时就将这些数据作为一个完整数据块存入磁盘中;存储单元通过数据块编号对数据块进行管理,在文件中写入数据时通过数据块编号和块内偏移来定位,即<bid,offset>;bid为块编号,offset为块内偏移;数据抽象层用于对数据块内数据记录进行排序和基于日志的数据修改;对数据记录排序操作时,排序的规则由数据应用层提供;基于日志的数据修改包括:不将数据修改行为立即作用在数据上,而是将这些修改操作以日志的方式记录下来;修改操作相应的日志记录位于日志块中,日志块存于磁盘上;当需要对数据块内数据修改时,对日志块进行提交,即将日志块与所对应的数据块进行合并,从而完成真正的数据修改;数据应用层主要负责:1)数据应用层通过调用不同的排序函数将排序规则传入数据抽象层,使得数据抽象层能够对数据块和日志块内的记录或指针排序;2)数据应用层通过定义的合并函数实现对数据的增加、删除、修改操作;3)负责将底层的所有数据块或日志块建立索引,将这些数据块或日志块串联起来,并提供数据检索入口;元数据是数据块和日志块的索引,负责记录组成数据表格的块信息,具体记录了组成数据表格的块序号以及块中键值对的键对象Key的范围。3.如权利要求2所述的海量分布式数据库存储单元,其特征在于:数据块内数据记录组织形式包括三种:第一种是未排序块,块内数据按照生成的数据记录依次向后追加,直至达到数据块设置的大小上限后写入磁盘;第二种是后排序块,针对的是块内数据记录的key定长、value定长;这种数据块先按照生成的数据记录的顺序存放,待数据块满时通过上层数据...

【专利技术属性】
技术研发人员:王辉刘斌台宪青
申请(专利权)人:江苏物联网研究发展中心
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1