当前位置: 首页 > 专利查询>清华大学专利>正文

一种基于键值库的文件与结构化数据统一存储方法技术

技术编号:7013278 阅读:375 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种基于键值库的文件与结构化数据统一存储方法,属于计算机数据管理技术领域。本方法通过将文件切分成多个数据块,在键值库符合特定模式的表格中存储文件及文件夹元数据和文件数据块,支持对文件及结构化数据进行统一存储,并支持使用可统一标识文件和结构化数据资源的存储标识符创建、删除、访问文件及结构化数据,通过对存储标识符及用户请求的访问模式进行判断,自动向用户提供对文件及结构化数据的字节数组、流、本地路径等三种上传下载方式。本方法由于基于键值库,保持了键值库提供的高可扩展性、高可伸缩性等海量存储合优越特性,且在形成的用户访问接口及管理模式方面具有简单易用、高可扩充、上传下载速度性能高等优点。

【技术实现步骤摘要】

本专利技术涉及,属于计算机数据管理

技术介绍
键值库是针对关系数据库而产生的一种新型数据管理系统。关系数据库早在多年前就已经成为网站不可或缺的后台数据持久化系统。然而,随着Web 2.0的产生,搭建网站变得简易,许多企业实体都搭建起了网站。然而,与Web 2.0伴随而来的是更多的用户交互,以及更多的UGC^ser Generated Content,用户生成内容),这使得网站需要处理的请求和数据倍增。键值库主要是针对关系数据库要解决其可扩展性、弹性和容错性这些方面的问题,同时要保证的易于部署和管理。网站服务容量的非平稳决定了后台存储系统必须具备可扩展性和弹性的特点。可扩展性指的是,系统可以在更高的服务容量需求下,进行横向扩容,且扩容的方面既包括存储能力,也包括计算能力,总的评价就是服务能力。弹性指的是,系统既可以进行扩容,也可以在低服务容量需求下进行缩容,且这种扩容、缩容的变化需在系统运行过程中实现。容错性是由系统所部署的条件所决定的,由于这些系统一般要求部署在由网络联接的低端PC机上,PC机极容易失效宕机,网络也会出现分割的情况, 因此,要求系统具有容错性,能处理节点失效和网络分割的情况。网络应用的一个重要需求就是保证系统随时可用,容错性是系统可用的重要保证。除键值库外,可同样提供高可扩展性、弹性和容错性的存储系统还有云文件系统,如谷歌文件系统GFS及其开源项目Hadoop。键值库和云文件系统分别支持不同的数据类型,前者支持小数据量的列数据单元,而后者则支持大数据量的文件数据单元。然而,现实中对于数据的管理,尤其是非结构化数据的管理,不仅需要存储海量结构化小单元的元数据,也需要存储海量大单元的非结构化源数据。目前对于结构化和非结构化数据的存储仅能通过使用两套甚至更多的存储系统的实现,从而使用得构造出来的系统非常复杂。为简化数据存储的使用,需要对结构化小单元数据与非结构化大单元数据进行统一存取,然而这样的系统技术并不存在。擅长于存储大单元数据的云文件系统在存储小单元数据时存取性能较低,更无法灵活支持小单元数据的各种访问操作,存储小单元数据的键值库则无法直接存储大单元数据,且当单元数据较大时容易性能下降。键值库的各种数据模式中以谷歌宽表(BigTable)和卡珊多拉(Cassandra)的数据模式最为著名。此模式采用了表格、列簇、列这三级的标识来实现存储。表格和列簇类似于关系数据库中模式的表和列,一经定义不可改动,尽管列簇的实质与关系表的列有大的差别。列簇并不存储原子的属性和值,列簇中的列名及列值(键值对)才是原子的。列簇下可以存储任意多的键值对。行由类似于主键作用的行键来唯一标识,同一表内的行键是唯一的
技术实现思路
本专利技术的目的是提出一种基于键值库的文件及结构化数据统一存储方法,以数据块的方式支持对大小不一的文件及结构化数据进行存储,并提供统一对文件及结构化数据进行高效访问的存储接口,满足用户存储海量数据时的多样化需求。本专利技术提出的基于键值库的文件及结构化数据统一存储方法,包括以下步骤(1)用户初始化键值库,键值库中具有表格、列簇和列三种单元的结构化存储模式,其中,表格包含多个列簇,每个列簇包含一个或多个列,数据按行存入表格中,每行数据在同一表格中用行键识别,数据存储在列中,一行列数据存储在一个或多个列簇中;(2)建成对文件与结构化数据统一进行高效访问的存储接口模块,在键值库中为文件建立元数据表格,在元数据表格中存储文件的属性数据,所述的元数据表格包含元数据和内容数据两个列簇,分别用以表示文件或文件所在的文件夹的属性数据和文件的内容数据;(3)存储接口模块通过将文件拆分成多个数据块存储在键值库中,使用一行元数据和多行内容数据存储一个文件,存储形式如下文件在所在文件系统中的路径所形成的行键,与该行键相对应的行数据存储在元数据列簇下,该行数据为文件的属性数据,该属性数据包括一列文件名、一列文件所在的父文件夹路径和一列文件内容数据的第一个数据块的行键;文件内容数据被切分成数据块后存储在内容数据列簇中,每个数据块为一行,数据块的行键为即时生成的通用唯一识别码(UUID),所述的内容数据列簇包括一列下一个数据块的行键、一列本数据块的内容,若该数据块为最后一个数据块,则将下一个数据块行键列的内容记为“文件结尾”;(4)存储接口模块用一行元数据存储一个文件夹,存储形式如下文件夹在所在文件系统中的路径形成行键,与该行键相对应的行数据存储在元数据列簇下,该行数据为文件夹的属性数据,该属性数据包括一列文件夹的名称和一列文件夹所在的父文件夹路径,若该文件夹存在子文件,则属性数据还包括子文件路径,若该文件夹存在子文件夹,则属性数据还包括子文件夹路径;(5)当存储接口模块接到用户的构造命令及相应构造参数时,存储接口模块返回用户所访问资源的存储标识符,该存储标识符标识文件夹、文件、表格、行、列簇和列6种资源,若用户访问的是文件夹或文件,则构造参数为路径,若用户访问的是表格,则构造参数为表格名称或表格名称与一个或多个列簇名称,若用户访问的是行,则构造参数为表格名称和行键,若用户访问的是列簇,则构造参数为表格名称、行键和列簇名称,若用户访问的是列,则构造参数为表格名称、行键、列簇名称和列名称;(6)当存储接口模块接到用户的创建命令及相应的存储标识符时,存储接口模块对存储标识符进行识别(6-1)若为文件、行、列簇或列中的任何一种资源,则向用户返回“不支持此资源”fn息;(6-2)若为表格资源,则存储接口模块对键值库进行检查,若键值库中已存在同名的表格,则向用户返回“已存在同名表格”信息,若键值库中不存在同名的表格,则在键值库中创建含指定表格名称的表格,并向用户返回“创建成功”信息;(6-3)若为文件夹资源,则存储接口模块对指定路径进行判断,若指定路径下已存储同名的文件或文件夹,则向用户返回“已经存在同名资源”信息,若指定路径下未存储同名的文件或文件夹,则对父文件夹进行判断,若不存在父文件夹,则重复步骤(6-3),创建父文件夹,使得父文件夹存在,若存在父文件夹,则在父文件夹所在行的元数据列簇下插入一个列,列的名称为指定路径名称,并添加特殊前缀,列的数据为指定路径,同时创建本文件夹路径的所在行,行的数据分布在元数据列簇下,在该行元数据列簇下增加两列,其中一列记录本文件夹名称,另一列记录父文件夹路径,向返回用户“成功”信息;若创建父文件夹过程中出现“已存在同名资源”信息,则向用户返回“失败”信息;(7)当存储接口模块接到用户的删除命令及相应的存储标识符时,存储接口模块对存储标识符进行识别(7-1)当存储标识符标识的是表格资源时,存储接口模块对表格资源进行判断(7-1-1)若键值库中存在与该表格资源相对应的表格,则从键值库中删除与该表格资源相对应的表格,并向用户返回“成功”信息;(7-1-2)若键值库中不存在与该表格资源相对应的表格,则向用户返回“成功”信息;(7-2)当存储标识符标识的是列资源时,存储接口模块对列资源进行判断(7-2-1)若键值库中存在与该列资源相对应的列,则从键值库中删除与该列资源相对应的列,并向用户返回“成功”信息;(7-2-2)若键值库中不存在与该列资源相对应的列,则向用户返回“成功”信息;(7-3本文档来自技高网
...

【技术保护点】
1.一种基于键值库的文件与结构化数据统一存储方法,其特征在于该方法包括以下步骤:(1)用户初始化键值库,键值库中具有表格、列簇和列三种单元的结构化存储模式,其中,表格包含多个列簇,每个列簇包含一个或多个列,数据按行存入表格中,每行数据在同一表格中用行键识别,数据存储在列中,一行列数据存储在一个或多个列簇中;(2)建成对文件与结构化数据统一进行高效访问的存储接口模块,在键值库中为文件建立元数据表格,在元数据表格中存储文件的属性数据,所述的元数据表格包含元数据和内容数据两个列簇,分别用以表示文件或文件所在的文件夹的属性数据和文件的内容数据;(3)存储接口模块通过将文件拆分成多个数据块存储在键值库中,使用一行元数据和多行内容数据存储一个文件,存储形式如下:文件在所在文件系统中的路径所形成的行键,与该行键相对应的行数据存储在元数据列簇下,该行数据为文件的属性数据,该属性数据包括一列文件名、一列文件所在的父文件夹路径和一列文件内容数据的第一个数据块的行键;文件内容数据被切分成数据块后存储在内容数据列簇中,每个数据块为一行,数据块的行键为即时生成的通用唯一识别码(UUID),所述的内容数据列簇包括一列下一个数据块的行键、一列本数据块的内容,若该数据块为最后一个数据块,则将下一个数据块行键列的内容记为“文件结尾”;(4)存储接口模块用一行元数据存储一个文件夹,存储形式如下:文件夹在所在文件系统中的路径形成行键,与该行键相对应的行数据存储在元数据列簇下,该行数据为文件夹的属性数据,该属性数据包括一列文件夹的名称和一列文件夹所在的父文件夹路径,若该文件夹存在子文件,则属性数据还包括子文件路径,若该文件夹存在子文件夹,则属性数据还包括子文件夹路径;(5)当存储接口模块接到用户的构造命令及相应构造参数时,存储接口模块返回用户所访问资源的存储标识符,该存储标识符标识文件夹、文件、表格、行、列簇和列6种资源,若用户访问的是文件夹或文件,则构造参数为路径,若用户访问的是表格,则构造参数为表格名称或表格名称与一个或多个列簇名称,若用户访问的是行,则构造参数为表格名称和行键,若用户访问的是列簇,则构造参数为表格名称、行键和列簇名称,若用户访问的是列,则构造参数为表格名称、行键、列簇名称和列名称;(6)当存储接口模块接到用户的创建命令及相应的存储标识符时,存储接口模块对存储标识符进行识别:(6-1)若为文件、行、列簇或列中的任何一种资源,则向用户返回“不支持此资源”信息;(6-2)若为表格资源,则存储接口模块对键值库进行检查,若键值库中已存在同名的表格,则向用户返回“已存在同名表格”信息,若键值库中不存在同名的表格,则在键值库中创建含指定表格名称的表格,并向用户返回“创建成功”信息;(6-3)若为文件夹资源,则存储接口模块对指定路径进行判断,若指定路径下已存储同名的文件或文件夹,则向用户返回“已经存在同名资源”信息,若指定路径下未存储同名的文件或文件夹,则对父文件夹进行判断,若不存在父文件夹,则重复步骤(6-3),创建父文件夹,使得父文件夹存在,若存在父文件夹,则在父文件夹所在行的元数据列簇下插入一个列,列的名称为指定路径名称,并添加特殊前缀,列的数据为指定路径,同时创建本文件夹路径的所在行,行的数据分布在元数据列簇下,在该行元数据列簇下增加两列,其中一列记录本文件夹名称,另一列记录父文件夹路径,向返回用户“成功”信息;若创建父文件夹过程中出现“已存在同名资源”信息,则向用户返回“失败”信息;(7)当存储接口模块接到用户的删除命令及相应的存储标识符时,存储接口模块对存储标识符进行识别:(7-1)当存储标识符标识的是表格资源时,存储接口模块对表格资源进行判断:(7-1-1)若键值库中存在与该表格资源相对应的表格,则从键值库中删除与该表格资源相对应的表格,并向用户返回“成功”信息;(7-1-2)若键值库中不存在与该表格资源相对应的表格,则向用户返回“成功”信息;(7-2)当存储标识符标识的是列资源时,存储接口模块对列资源进行判断:(7-2-1)若键值库中存在与该列资源相对应的列,则从键值库中删除与该列资源相对应的列,并向用户返回“成功”信息;(7-2-2)若键值库中不存在与该列资源相对应的列,则向用户返回“成功”信息;(7-3)当存储标识符标识的是列簇资源时,存储接口模块对列簇资源进行判断:(7-3-1)若键值库中存在与该列簇资源相对应的列簇,则从键值库中删除与该列簇资源相对应的列簇,并向用户返回“成功”信息;(7-3-2)若键值库中不存在与该列簇资源相对应的列簇,则向用户返回“成功”信息;(7-4)当存储标识符标识的是行资源时,存储接口模块对行资源进行判断:(7-4-1)若键值库存在与该行资源相对应的行时,存储接口模块对行中存储了数据的各列簇使用步骤(7-3)逐...

【技术特征摘要】

【专利技术属性】
技术研发人员:王建民朱妤晴李旭嘉杨义繁丁贵广
申请(专利权)人:清华大学
类型:发明
国别省市:11

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

1