一种动态的数据存储方法及装置制造方法

文档序号:6514297阅读:211来源:国知局
一种动态的数据存储方法及装置制造方法
【专利摘要】本发明实施例提供一种动态的数据存储方法,包括:对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属性列的存储策略;将所述各个属性列按照键值对模型组织为不同的数据子集;根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所述物理存储格式存储所述数据子集。本发明实施例还提供了相应的动态的数据存储装置。使用本发明实施例公开的动态的数据存储方法和装置,通过分层、可配置的存储结构实现一种动态的数据存储方法,可同时满足大数据处理中“稀疏数据和稠密数据集”的存储需求。
【专利说明】一种动态的数据存储方法及装置

【技术领域】
[0001] 本发明涉及计算机【技术领域】,尤其涉及一种动态的数据存储方法及装置。

【背景技术】
[0002] 随着互联网、物联网以及ICT产业的高速发展,相关业务数据呈现出爆发式增长 的态势,据IDC报告,未来10年全球数据量将以40+%的速度增长。对中国移动经营分析系 统(下称经分系统)而言,随着互联网等新兴业务数据的引入,数据存储难度、系统支撑压力 陡增,而作为业务分析的核心系统,"经分系统"的支撑质量将直接影响领导决策,关乎公司 的运营与发展。
[0003] 随着经分系统数据量的爆发式增长,如何对各类业务数据进行合理划分、高效存 储,实现支撑系统的高质量、低成本建设是目前亟需解决的问题,目前常用的数据存储方法 包括以下两种:
[0004] 行存储:数据仓库系统的存储技术,由Oracle承载,以存储结构化数据为主,如: 产品、账单、服务、清单类业务数据。行存储的主要优势在于按元组直接存储,写数据的效率 较高;数据的完整性、可靠性高;适用〇ltp(〇n_Line Transaction Processing联机事务处 理系统)场景。
[0005] 列存储:互联网数据平台的存储技术,由Hadoop Hbase承载,以存储结构化、半结 构化数据为主,如:网页数据、WAP清单类数据。列存储的主要优势在于数据读取时不存在 冗余列,数据命中率高;每个列(文件)的数据类型都是同质的,不存在二义性,数据解析效 率高;可获得较高的数据压缩比,针对稀疏数据的处理效果更为明显;模式变更成本低,理 论上可无限地扩充属性列;适用于olap (On-Line Analytical Processing联机分析处理) 场景。
[0006] 行存储和列存储是目前经分系统采用的主流存储方案,但随着物联网、互联网等 "新兴业务数据"的引入,此方案的瓶颈逐渐显现,主要体现以下几个方面:
[0007] 存储方案单一、存在技术短板;存储空间浪费情况严重;部分业务数据的存储方 案不够合理、灵活性差;无法实现稀疏数据和稠密数据的混合、高效存储;部分业务的数据 质量较差,对"缺失值"的处理不够准确。


【发明内容】

[0008] 为了解决现有技术中数据存储方面存在的上述问题,本发明实施例提出一种动态 的数据存储方法和装置。
[0009] 本发明的一个方面,提供一种动态的数据存储方法,包括:
[0010] 对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属性列的存 储策略;
[0011] 将所述各个属性列按照键值对模型组织为不同的数据子集;
[0012] 根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所述物理存 储格式存储所述数据子集。
[0013] 本发明的另一个方面,提供一种动态的数据存储装置,包括:
[0014] 定义单元,用于对待存储的数据进行整体元数据定义,定义所述待存储的数据中 各个属性列的存储策略;
[0015] 组织单元,用于将所述各个属性列按照键值对模型组织为不同的数据子集;
[0016] 存储单元,用于根据所述属性列的存储策略为所述数据子集定义物理存储格式, 并按所述物理存储格式存储所述数据子集。
[0017] 使用本发明实施例公开的动态的数据存储方法和装置,通过分层、可配置的存储 结构实现一种动态的数据存储方法,可同时满足大数据处理中"稀疏数据和稠密数据集"的 存储需求,解决了目前经分系统"存储方案单一"的问题,为物联网、互联网等海量数据存储 提供了一种灵活的存储方案,可有效支撑"新业务模式"下的数据存储与分析;
[0018] RCFILE存储方法(先水平划分,再垂直划分)的内部结构复杂、模式变更代价高,t匕 较适合于"只读型"数据仓库,而本发明实现存储结构的分层定义、键值分离,结构简单、耦 合度低,可快速实现模式变更(如:"增加或删除列"仅需在"表格化软模式层"配置增加或 删除一个文件);
[0019] RCFILE将"实体的所有属性列"按照"一个原则"处理(先水平划分,再垂直划分), 灵活度不够,而本发明可针对实体属性列的"数据特征"针对性地选择行存储或列存储,如: 针对实体的稀疏数据列选择列存储,实现存储节约,针对稠密数据列选择行存储,实现高效 写入;
[0020] 针对物联网、互联网等业务普遍存在海量缺失数据的问题,本发明完成了缺失值 的类型定义,为提高大数据"分析质量"提供了一种有效的技术手段;
[0021] 该发明的技术实现位于经分系统"信息服务域"的数据层,与上层业务应用之间通 过"透明访问层"实现数据交互,业务耦合度低、加工逻辑简明,完全满足经分数据仓库海量 数据存储访问需求。

【专利附图】

【附图说明】
[0022] 图1所示是本发明实施例提供的动态的数据存储方法示意图;
[0023] 图2所示是本发明实施例提供的数据存储结构层次的示意图;
[0024] 图3所示是本发明实施例提供的一种结构化的键值模型示意图;
[0025] 图4所示是本发明实施例提供的数据对象的"多版本"数据存储结构示意图;
[0026] 图5所示是本发明实施例提供的行列混合存储的整体实现逻辑示意图;
[0027] 图6所示为本发明实施例提供的行存储的整体实现逻辑示意图;
[0028] 图7所示是本发明实施例提供的列存储的整体实现逻辑示意图;
[0029] 图8所示是本发明实施例提供的动态的数据存储装置的结构示意图。

【具体实施方式】
[0030] 结合对现有技术的分析,构建一种既支持列存储、具有良好的读性能,又支持行存 储、具有良好的写性能,从而同时支持Oltp和Olap应用的"混合存储结构"存在巨大的现实 需求,本发明通过行列混合存储布局提供一种混合搭配的物理存储格式,不仅可实现实体 的行式存储或列式存储,同时在一个实体内部,可针对不同字段的稀疏、稠密等数据特征, 选择适合的行存储或列存储格式,从而实现动态的数据存储,为大数据处理提供一种动态 的数据存储方法,该方法既能适应传统稠密数据的特点,又可兼顾海量稀疏数据的存储需 求,解决了经分系统海量稀疏数据存储空间浪费的问题。
[0031] 本发明重点支撑的典型存储场景的应用举例:
[0032] 行存储:为获得更好的写性能,可将数据完整性、可靠性要求较高的实体配置为行 存储格式;如:经分系统的用户表、帐单表、订购关系表等;
[0033] 列存储:为获得更好的统计分析性能,可将数据量大、模式变更频繁、缺失值较多 的实体配置为列存储格式;如:经分系统的wap网关表等;
[0034] 行列混合存储:
[0035] 在一个实体内部,可针对不同字段的稀疏、稠密等数据特征,选择适合的行存储或 列存储格式,从而实现行列混合的数据存储;如:将语音信令表的主叫号码、imsi、开始时 间等稠密数据列"按行存储",将源信令点、CGI码等稀疏数据列"按列存储"。
[0036] 以下结合附图详细说明本发明实施例提供的动态的数据存储方法。
[0037] 图1所示为本发明一个实施例提供的动态的数据存储方法示意图,根据该图,详 述各步骤如下:
[0038] 步骤101、对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属 性列的存储策略;
[0039] 其中,所述定义所述待存储的数据中各个属性列的存储策略,包括:
[0040] 构建表格化的软模式,并增加对所述各个属性列的模式定义,以可视化的角度将 键值对集合定义为数据存储的弹性容器。
[0041] 所述定义所述待存储的数据中各个属性列的存储策略,包括:
[0042] 若所述属性列中的数据为稠密数据,则采用行存储;
[0043] 若所述属性列中的数据为稀疏数据,则采用行存储。
[0044] 步骤102、将所述各个属性列按照键值对模型组织为不同的数据子集;
[0045] 其中,所述将所述各个属性列按照键值对模型组织为不同的数据子集,包括:
[0046] 分别定义所述键值对模型中的键域和值域,并将所述键域和值域分开保存;
[0047] 所述键域中包括至少一个子键,且所述属性对的模式定义保存在所述键域中;
[0048] 在所述值域中存储和所述键域对应的数据内容。
[0049] 所述键域中的子键包括RK、CG和CA,所述RK、CG和CA子键的组合构成查询主键, 和一个数据单元唯一对应。
[0050] 步骤103、根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所 述物理存储格式存储所述数据子集。
[0051] 其中,所述根据所述属性列的存储策略为所述数据子集定义物理存储格式,包 括:
[0052] 将所述每个属性列划分为至少一个分区,针对每一个分区,
[0053] 若所述分区适用于行存储,则将所述分区映射到一个单独的文件,形成一个行 组;
[0054] 若所述分区适用于列存储,则将所述分区中的至少一个列存储到一个文件中。
[0055] 所述值域中存储的数据内容还包括时间戳,将所述数据内容按照时间戳的顺序排 列。
[0056] 上述方法还包括:预设保存的数据内容的版本个数,根据所述数据内容的时间戳 保存预设个数的版本;或者,
[0057] 预设保存的数据内容的时间段,根据所述时间戳保存预设时间段内的版本。
[0058] 上述方法中,将所述属性列中的缺失数据定义为缺失并不适用和缺失并适用两种 类型。
[0059] 使用本发明实施例公开的动态的数据存储方法,通过分层、可配置的存储结构实 现一种动态的数据存储方法,可同时满足大数据处理中"稀疏数据和稠密数据集"的存储需 求,解决了目前经分系统"存储方案单一"的问题,为物联网、互联网等海量数据存储提供了 一种灵活的存储方案,可有效支撑"新业务模式"下的数据存储与分析;
[0060] RCFILE存储方法(先水平划分,再垂直划分)的内部结构复杂、模式变更代价高,t匕 较适合于"只读型"数据仓库,而本发明实现存储结构的分层定义、键值分离,结构简单、耦 合度低,可快速实现模式变更(如:"增加或删除列"仅需在"表格化软模式层"配置增加或 删除一个文件);
[0061] RCFILE将"实体的所有属性列"按照"一个原则"处理(先水平划分,再垂直划分), 灵活度不够,而本发明可针对实体属性列的"数据特征"针对性地选择行存储或列存储,如: 针对实体的稀疏数据列选择列存储,实现存储节约,针对稠密数据列选择行存储,实现高效 写入;
[0062] 针对物联网、互联网等业务普遍存在海量缺失数据的问题,本发明完成了缺失值 的类型定义,为提高大数据"分析质量"提供了一种有效的技术手段;
[0063] 该发明的技术实现位于经分系统"信息服务域"的数据层,与上层业务应用之间通 过"透明访问层"实现数据交互,业务耦合度低、加工逻辑简明,完全满足经分数据仓库海量 数据存储访问需求。
[0064] 以下通过具体的应用实例来对本发明实施例提供的方法进行详细说明。
[0065] 本发明通过分层、可配置的存储结构实现一种动态的数据存储方法,在大数据处 理过程中可同时满足稀疏和稠密数据集的行、列混合存储需求。图2所示为本发明实施例 提供的数据存储结构层次的示意图。依据该图介绍本发明实施例提供的数据存储方法的三 个基本步骤:
[0066] 步骤一:表格化的软模式定义,相当于整体元数据定义;在逻辑上体现为一种表 格化的软模式,总体定义各个属性列的存储策略和数据约束等;
[0067] 步骤二:基于Key-Value的键值模型定义,相当于键值数据定义层定义;各类混合 数据集体现为(键,值)对的集合,每个(键,值)对对应一个实体属性值,通过键值模型把各 个属性列组织为不同的数据子集;
[0068] 步骤三:可选的物理存储格式定义,相当于业务数据的物理存储层定义;根据元 数据和键值模型定义,为各个数据子集定义面向行或面向列的物理存储格式。
[0069] 以下对各分层结构进行详细描述:
[0070] 分层、可配置的存储结构
[0071] 表格化的软模式
[0072] 传统的"键-值模型"具有查找迅速、扩展性高的特点,并且提供一种分层方式描 述数据结构,但其"键-值对"仅仅包含属性值,缺少模式定义,而本发明在传统(键-值)对 基础上,构建一种表格化的软模式,融入了模式定义,以可视化的角度将"键值对集合"定义 为数据存储的弹性容器,支持模式定义与扩展,包括以下主要构件,应用示例可见下表1 :
[0073] 表(Table):数据的逻辑存储容器,表由单独的列和一个或多个列组构成,单独的 RowKey列存储元组的关键词,列组被定义为列的集合,不同的列组彼此互不重叠;
[0074] 列组(ColumnGroup):本发明给出 了两种列组:ColumnGroup_R 和 ColumnGroup_C, 对于ColumnGroup_R,数据以面向行的形式存储,对于ColumnGroup_C,数据以面向列的形 式存储;
[0075] 列(Column):列无差别地定义实体的属性域,除了 RowKey列,其余的列必须属于 某一特定的列组;
[0076] 键域文件(KeyFile):键域数据的物理存储容器,通常同一个表的不同列组可以共 享键域文件;
[0077] 值域文件(DataFiIe):值域数据的物理存储容器,可针对列祖、列的特点将其挂载 到不同的数据文件,如:可针对ColumnGroup_R定义一个数据文件,针对ColumnGroup_C可 定义一个或多个数据文件与各个属性列对应;
[0078] 位置类型(PosType):定义各属性列的位置定位方法,如:行固定、分隔符等;
[0079] 位置信息(PosValue):根据"位置类型"定位属性列的详细位置,如:位置类型为 "分隔符",可定义第5个域是"姓名"列,或者定义位置类型为"行固定",可定义第30到第 45个字符是"地址"列等;
[0080] 数据类型(DataType):记录各属性列的数据类型。
[0081]

【权利要求】
1. 一种动态的数据存储方法,其特征在于,包括: 对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属性列的存储策 略; 将所述各个属性列按照键值对模型组织为不同的数据子集; 根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所述物理存储格 式存储所述数据子集。
2. 根据权利要求1所述的方法,其特征在于,所述定义所述待存储的数据中各个属性 列的存储策略,包括: 构建表格化的软模式,并增加对所述各个属性列的模式定义,以可视化的角度将键值 对集合定义为数据存储的弹性容器。
3. 根据权利要求2所述的方法,其特征在于,所述将所述各个属性列按照键值对模型 组织为不同的数据子集,包括: 分别定义所述键值对模型中的键域和值域,并将所述键域和值域分开保存; 所述键域中包括至少一个子键,且所述属性对的模式定义保存在所述键域中; 在所述值域中存储和所述键域对应的数据内容。
4. 根据权利要求3所述的方法,其特征在于,所述键域中的子键包括RK、CG和CA,所述 RK、CG和CA子键的组合构成查询主键,和一个数据单元唯一对应。
5. 根据权利要求1-4中任意一项所述的方法,其特征在于,所述定义所述待存储的数 据中各个属性列的存储策略,包括: 若所述属性列中的数据为稠密数据,则采用行存储; 若所述属性列中的数据为稀疏数据,则采用行存储。
6. 根据权利要求5所述的方法,其特征在于,所述根据所述属性列的存储策略为所述 数据子集定义物理存储格式,包括: 将所述每个属性列划分为至少一个分区,针对每一个分区, 若所述分区适用于行存储,则将所述分区映射到一个单独的文件,形成一个行组; 若所述分区适用于列存储,则将所述分区中的至少一个列存储到一个文件中。
7. 根据权利要求3所述的方法,其特征在于,所述值域中存储的数据内容还包括时间 戳,将所述数据内容按照时间戳的顺序排列。
8. 根据权利要求7所述的方法,其特征在于,还包括: 预设保存的数据内容的版本个数,根据所述数据内容的时间戳保存预设个数的版本; 或者, 预设保存的数据内容的时间段,根据所述时间戳保存预设时间段内的版本。
9. 根据权利要求1-8中任意一项所述的方法,其特征在于,将所述属性列中的缺失数 据定义为缺失并不适用和缺失并适用两种类型。
10. -种动态的数据存储装置,其特征在于,包括: 定义单元,用于对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个 属性列的存储策略; 组织单元,用于将所述各个属性列按照键值对模型组织为不同的数据子集; 存储单元,用于根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按 所述物理存储格式存储所述数据子集。
11. 根据权利要求10所述的装置,其特征在于,所述定义单元定义所述待存储的数据 中各个属性列的存储策略,包括: 构建表格化的软模式,并增加对所述各个属性列的模式定义,以可视化的角度将键值 对集合定义为数据存储的弹性容器。
12. 根据权利要求11所述的装置,其特征在于,所述组织单元将所述各个属性列按照 键值对模型组织为不同的数据子集,包括: 分别定义所述键值对模型中的键域和值域,并将所述键域和值域分开保存; 所述键域中包括至少一个子键,且所述属性对的模式定义保存在所述键域中; 在所述值域中存储和所述键域对应的数据内容。
13. 根据权利要求10-12中任一项所述的装置,其特征在于,所述定义单元定义所述待 存储的数据中各个属性列的存储策略,包括: 若所述属性列中的数据为稠密数据,则采用行存储; 若所述属性列中的数据为稀疏数据,则采用行存储。
14. 根据权利要求13所述的装置,其特征在于,所述存储单元根据所述属性列的存储 策略为所述数据子集定义物理存储格式,包括: 将所述每个属性列划分为至少一个分区,针对每一个分区, 若所述分区适用于行存储,则将所述分区映射到一个单独的文件,形成一个行组; 若所述分区适用于列存储,则将所述分区中的至少一个列存储到一个文件中。
15. 根据权利要求10-14中任一项所述的装置,其特征在于,所述定义单元还用于,将 所述属性列中的缺失数据定义为缺失并不适用和缺失并适用两种类型。
【文档编号】G06F17/30GK104516912SQ201310459768
【公开日】2015年4月15日 申请日期:2013年9月29日 优先权日:2013年9月29日
【发明者】苏燕, 赵洪松, 关德军, 李振嘉, 段云峰, 李红燕, 张美鸥, 王依兴, 孙德志, 迟建德, 李宏昌, 王雅文 申请人:中国移动通信集团黑龙江有限公司, 中国移动通信集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1