CN104516912B - 一种动态的数据存储方法及装置 - Google Patents
一种动态的数据存储方法及装置 Download PDFInfo
- Publication number
- CN104516912B CN104516912B CN201310459768.0A CN201310459768A CN104516912B CN 104516912 B CN104516912 B CN 104516912B CN 201310459768 A CN201310459768 A CN 201310459768A CN 104516912 B CN104516912 B CN 104516912B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- column
- key
- attribute
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013500 data storage Methods 0.000 claims abstract description 47
- 238000005192 partition Methods 0.000 claims description 28
- 238000013507 mapping Methods 0.000 claims description 6
- 238000012800 visualization Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 18
- 230000008520 organization Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 18
- 230000008859 change Effects 0.000 description 8
- 101100328884 Caenorhabditis elegans sqt-3 gene Proteins 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 101100328886 Caenorhabditis elegans col-2 gene Proteins 0.000 description 4
- 238000007405 data analysis Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000002360 explosive Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种动态的数据存储方法,包括:对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属性列的存储策略;将所述各个属性列按照键值对模型组织为不同的数据子集;根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所述物理存储格式存储所述数据子集。本发明实施例还提供了相应的动态的数据存储装置。使用本发明实施例公开的动态的数据存储方法和装置,通过分层、可配置的存储结构实现一种动态的数据存储方法,可同时满足大数据处理中“稀疏数据和稠密数据集”的存储需求。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种动态的数据存储方法及装置。
背景技术
随着互联网、物联网以及ICT产业的高速发展,相关业务数据呈现出爆发式增长的态势,据IDC报告,未来10年全球数据量将以40+%的速度增长。对***经营分析***(下称经分***)而言,随着互联网等新兴业务数据的引入,数据存储难度、***支撑压力陡增,而作为业务分析的核心***,“经分***”的支撑质量将直接影响领导决策,关乎公司的运营与发展。
随着经分***数据量的爆发式增长,如何对各类业务数据进行合理划分、高效存储,实现支撑***的高质量、低成本建设是目前亟需解决的问题,目前常用的数据存储方法包括以下两种:
行存储:数据仓库***的存储技术,由Oracle承载,以存储结构化数据为主,如:产品、账单、服务、清单类业务数据。行存储的主要优势在于按元组直接存储,写数据的效率较高;数据的完整性、可靠性高;适用oltp(On-Line Transaction Processing联机事务处理***)场景。
列存储:互联网数据平台的存储技术,由Hadoop Hbase承载,以存储结构化、半结构化数据为主,如:网页数据、WAP清单类数据。列存储的主要优势在于数据读取时不存在冗余列,数据命中率高;每个列(文件)的数据类型都是同质的,不存在二义性,数据解析效率高;可获得较高的数据压缩比,针对稀疏数据的处理效果更为明显;模式变更成本低,理论上可无限地扩充属性列;适用于olap(On-Line Analytical Processing联机分析处理)场景。
行存储和列存储是目前经分***采用的主流存储方案,但随着物联网、互联网等“新兴业务数据”的引入,此方案的瓶颈逐渐显现,主要体现以下几个方面:
存储方案单一、存在技术短板;存储空间浪费情况严重;部分业务数据的存储方案不够合理、灵活性差;无法实现稀疏数据和稠密数据的混合、高效存储;部分业务的数据质量较差,对“缺失值”的处理不够准确。
发明内容
为了解决现有技术中数据存储方面存在的上述问题,本发明实施例提出一种动态的数据存储方法和装置。
本发明的一个方面,提供一种动态的数据存储方法,包括:
对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属性列的存储策略;
将所述各个属性列按照键值对模型组织为不同的数据子集;
根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所述物理存储格式存储所述数据子集。
本发明的另一个方面,提供一种动态的数据存储装置,包括:
定义单元,用于对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属性列的存储策略;
组织单元,用于将所述各个属性列按照键值对模型组织为不同的数据子集;
存储单元,用于根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所述物理存储格式存储所述数据子集。
使用本发明实施例公开的动态的数据存储方法和装置,通过分层、可配置的存储结构实现一种动态的数据存储方法,可同时满足大数据处理中“稀疏数据和稠密数据集”的存储需求,解决了目前经分***“存储方案单一“的问题,为物联网、互联网等海量数据存储提供了一种灵活的存储方案,可有效支撑“新业务模式”下的数据存储与分析;
RCFILE存储方法(先水平划分,再垂直划分)的内部结构复杂、模式变更代价高,比较适合于“只读型”数据仓库,而本发明实现存储结构的分层定义、键值分离,结构简单、耦合度低,可快速实现模式变更(如:“增加或删除列”仅需在“表格化软模式层”配置增加或删除一个文件);
RCFILE将“实体的所有属性列”按照“一个原则”处理(先水平划分,再垂直划分),灵活度不够,而本发明可针对实体属性列的“数据特征”针对性地选择行存储或列存储,如:针对实体的稀疏数据列选择列存储,实现存储节约,针对稠密数据列选择行存储,实现高效写入;
针对物联网、互联网等业务普遍存在海量缺失数据的问题,本发明完成了缺失值的类型定义,为提高大数据“分析质量”提供了一种有效的技术手段;
该发明的技术实现位于经分***“信息服务域”的数据层,与上层业务应用之间通过“透明访问层”实现数据交互,业务耦合度低、加工逻辑简明,完全满足经分数据仓库海量数据存储访问需求。
附图说明
图1所示是本发明实施例提供的动态的数据存储方法示意图;
图2所示是本发明实施例提供的数据存储结构层次的示意图;
图3所示是本发明实施例提供的一种结构化的键值模型示意图;
图4所示是本发明实施例提供的数据对象的“多版本”数据存储结构示意图;
图5所示是本发明实施例提供的行列混合存储的整体实现逻辑示意图;
图6所示为本发明实施例提供的行存储的整体实现逻辑示意图;
图7所示是本发明实施例提供的列存储的整体实现逻辑示意图;
图8所示是本发明实施例提供的动态的数据存储装置的结构示意图。
具体实施方式
结合对现有技术的分析,构建一种既支持列存储、具有良好的读性能,又支持行存储、具有良好的写性能,从而同时支持oltp和olap应用的“混合存储结构”存在巨大的现实需求,本发明通过行列混合存储布局提供一种混合搭配的物理存储格式,不仅可实现实体的行式存储或列式存储,同时在一个实体内部,可针对不同字段的稀疏、稠密等数据特征,选择适合的行存储或列存储格式,从而实现动态的数据存储,为大数据处理提供一种动态的数据存储方法,该方法既能适应传统稠密数据的特点,又可兼顾海量稀疏数据的存储需求,解决了经分***海量稀疏数据存储空间浪费的问题。
本发明重点支撑的典型存储场景的应用举例:
行存储:为获得更好的写性能,可将数据完整性、可靠性要求较高的实体配置为行存储格式;如:经分***的用户表、帐单表、订购关系表等;
列存储:为获得更好的统计分析性能,可将数据量大、模式变更频繁、缺失值较多的实体配置为列存储格式;如:经分***的wap网关表等;
行列混合存储:
在一个实体内部,可针对不同字段的稀疏、稠密等数据特征,选择适合的行存储或列存储格式,从而实现行列混合的数据存储;如:将语音信令表的主叫号码、imsi、开始时间等稠密数据列“按行存储”,将源信令点、CGI码等稀疏数据列“按列存储”。
以下结合附图详细说明本发明实施例提供的动态的数据存储方法。
图1所示为本发明一个实施例提供的动态的数据存储方法示意图,根据该图,详述各步骤如下:
步骤101、对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属性列的存储策略;
其中,所述定义所述待存储的数据中各个属性列的存储策略,包括:
构建表格化的软模式,并增加对所述各个属性列的模式定义,以可视化的角度将键值对集合定义为数据存储的弹性容器。
所述定义所述待存储的数据中各个属性列的存储策略,包括:
若所述属性列中的数据为稠密数据,则采用行存储;
若所述属性列中的数据为稀疏数据,则采用行存储。
步骤102、将所述各个属性列按照键值对模型组织为不同的数据子集;
其中,所述将所述各个属性列按照键值对模型组织为不同的数据子集,包括:
分别定义所述键值对模型中的键域和值域,并将所述键域和值域分开保存;
所述键域中包括至少一个子键,且所述属性对的模式定义保存在所述键域中;
在所述值域中存储和所述键域对应的数据内容。
所述键域中的子键包括RK、CG和CA,所述RK、CG和CA子键的组合构成查询主键,和一个数据单元唯一对应。
步骤103、根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所述物理存储格式存储所述数据子集。
其中,所述根据所述属性列的存储策略为所述数据子集定义物理存储格式,包括:
将所述每个属性列划分为至少一个分区,针对每一个分区,
若所述分区适用于行存储,则将所述分区映射到一个单独的文件,形成一个行组;
若所述分区适用于列存储,则将所述分区中的至少一个列存储到一个文件中。
所述值域中存储的数据内容还包括时间戳,将所述数据内容按照时间戳的顺序排列。
上述方法还包括:预设保存的数据内容的版本个数,根据所述数据内容的时间戳保存预设个数的版本;或者,
预设保存的数据内容的时间段,根据所述时间戳保存预设时间段内的版本。
上述方法中,将所述属性列中的缺失数据定义为缺失并不适用和缺失并适用两种类型。
使用本发明实施例公开的动态的数据存储方法,通过分层、可配置的存储结构实现一种动态的数据存储方法,可同时满足大数据处理中“稀疏数据和稠密数据集”的存储需求,解决了目前经分***“存储方案单一“的问题,为物联网、互联网等海量数据存储提供了一种灵活的存储方案,可有效支撑“新业务模式”下的数据存储与分析;
RCFILE存储方法(先水平划分,再垂直划分)的内部结构复杂、模式变更代价高,比较适合于“只读型”数据仓库,而本发明实现存储结构的分层定义、键值分离,结构简单、耦合度低,可快速实现模式变更(如:“增加或删除列”仅需在“表格化软模式层”配置增加或删除一个文件);
RCFILE将“实体的所有属性列”按照“一个原则”处理(先水平划分,再垂直划分),灵活度不够,而本发明可针对实体属性列的“数据特征”针对性地选择行存储或列存储,如:针对实体的稀疏数据列选择列存储,实现存储节约,针对稠密数据列选择行存储,实现高效写入;
针对物联网、互联网等业务普遍存在海量缺失数据的问题,本发明完成了缺失值的类型定义,为提高大数据“分析质量”提供了一种有效的技术手段;
该发明的技术实现位于经分***“信息服务域”的数据层,与上层业务应用之间通过“透明访问层”实现数据交互,业务耦合度低、加工逻辑简明,完全满足经分数据仓库海量数据存储访问需求。
以下通过具体的应用实例来对本发明实施例提供的方法进行详细说明。
本发明通过分层、可配置的存储结构实现一种动态的数据存储方法,在大数据处理过程中可同时满足稀疏和稠密数据集的行、列混合存储需求。图2所示为本发明实施例提供的数据存储结构层次的示意图。依据该图介绍本发明实施例提供的数据存储方法的三个基本步骤:
步骤一:表格化的软模式定义,相当于整体元数据定义;在逻辑上体现为一种表格化的软模式,总体定义各个属性列的存储策略和数据约束等;
步骤二:基于Key-Value的键值模型定义,相当于键值数据定义层定义;各类混合数据集体现为(键,值)对的集合,每个(键,值)对对应一个实体属性值,通过键值模型把各个属性列组织为不同的数据子集;
步骤三:可选的物理存储格式定义,相当于业务数据的物理存储层定义;根据元数据和键值模型定义,为各个数据子集定义面向行或面向列的物理存储格式。
以下对各分层结构进行详细描述:
分层、可配置的存储结构
表格化的软模式
传统的“键-值模型”具有查找迅速、扩展性高的特点,并且提供一种分层方式描述数据结构,但其“键-值对”仅仅包含属性值,缺少模式定义,而本发明在传统(键-值)对基础上,构建一种表格化的软模式,融入了模式定义,以可视化的角度将“键值对集合”定义为数据存储的弹性容器,支持模式定义与扩展,包括以下主要构件,应用示例可见下表1:
表(Table):数据的逻辑存储容器,表由单独的列和一个或多个列组构成,单独的RowKey列存储元组的关键词,列组被定义为列的集合,不同的列组彼此互不重叠;
列组(ColumnGroup):本发明给出了两种列组:ColumnGroup_R和ColumnGroup_C,对于ColumnGroup_R,数据以面向行的形式存储,对于ColumnGroup_C,数据以面向列的形式存储;
列(Column):列无差别地定义实体的属性域,除了RowKey列,其余的列必须属于某一特定的列组;
键域文件(KeyFile):键域数据的物理存储容器,通常同一个表的不同列组可以共享键域文件;
值域文件(DataFile):值域数据的物理存储容器,可针对列祖、列的特点将其挂载到不同的数据文件,如:可针对ColumnGroup_R定义一个数据文件,针对ColumnGroup_C可定义一个或多个数据文件与各个属性列对应;
位置类型(PosType):定义各属性列的位置定位方法,如:行固定、分隔符等;
位置信息(PosValue):根据“位置类型”定位属性列的详细位置,如:位置类型为“分隔符”,可定义第5个域是”姓名”列,或者定义位置类型为“行固定”,可定义第30到第45个字符是“地址”列等;
数据类型(DataType):记录各属性列的数据类型。
表1:表格化软模式定义的“主要模式信息”图例
结构化的键值模型
键值模型提出一种结构化的(键-值)模型定义方法,将键域分为多个数据单元,并向值域添加自定义的数据结构。图3所示为本发明实施例提供的一种结构化的键值模型示意图,以下依据该图介绍该模型。
键域:由不同的子键构成的多维映射,包括模式信息等数据单元;键域由单独的物理文件存储,该文件相当于数据索引文件;
值域:存储键域的数据内容,“键值对”包含一个连续的多个值组成的链表,每个数据副本附有一个时间戳,以标识不同的数据版本;值域由单独的物理文件存储,该文件相当于数据内容文件;
本发明使用(键-值)对代表一个基本的属性值,一个实体可包含多个属性,一个数据对象被映射到一个(键-值)对的集合中,键域由以下几部分组成:
RK:数据对象(元组)的唯一标识,RK可以使含有相同标识的(键-值)对都指向同一个对象;
LT:用于锁定(键-值)对以支持事务语义,由每个应用进程负责数据写入;通过信号量将元组标识为独占访问,事务完成后释放锁定;
CG:属性列数组,包括一个或多个属性列;
CA:CG列的可寻址组,保存一个或多个属性列的地址,可理解为数据单元指针,指向值域文件的数据单元;
说明:可寻址地址指向具体的文件、记录、列对应的数据单元,掩码内容为“fn_idxn_coln”,每个掩码单元用“_”分隔,各单元定义如下:
Fn标识数据文件,如:f1对应DataFile1,f2对应DataFile2等;
idxn是某个文件的行偏移量,(一个row可以对应多条记录,用不同的时间戳加以区分,idxn命中的是时间戳最大的记录,即:排序在最顶层的记录),如:f1_idx1是DataFile1文件行偏移1行后的记录;
coln是针对某条记录的第n列,如:f1_idx1_col3是DataFile1文件第1行记录的第3列,列分隔符内容见PosType定义。
Tn:n版本数据的时间戳;
Vn:n版本的数据内容。
在图3中,左侧的键域模型保存在键域文件中,右侧的值域模型保存在值域文件中;针对键域模型CG域定义的某个表字段,CA域指向该字段在值域文件的数据单元。
RK、CG和CA子键的组合构成查询主键,可唯一确定一个数据单元;考虑到数据处理的高并发性,数据单元必须有效避免读/写冲突,本发明通过LT子键协助进行事务一致性控制,同时每个数据单元保存着一个数据对象的多个版本,版本之间通过“时间戳”索引,时间戳类型为64位整数、精确到毫秒,不同版本的数据采用扁平结构、按时间戳倒序排列。
可选择的物理存储格式
针对实体(键-值)对的物理存储结构,本发明采用水平分片的思路来适应数据更新,将每个段垂直划分为多个分区,针对一个给定的分区,可选择行存储或列存储:
行存储:适用于稠密数据存储;将整个分区映射到一个单独的文件,从而形成一个行组,该行组可包括一个或多个稠密的数据列;
列存储:适用于稀疏数据存储;可根据每个属性列的数据特点,将分区中的某一个列或某几个列存储到一个物理文件中,推荐将属性列和物理文件一对一存储。
针对一个数据对象存在多版本属性值的情况,本发明采用在文件中不断堆积(键-值)对的方法,将数据内容按时间戳倒序排列;同时,为避免数据多版本造成的管理负担(包括存贮和索引等),本发明提供两种数据版本回收机制:一是保存数据的最后n个版本,二是保存最近一段时间内的版本(比如最近3天),可针对每个列组、列的数据特点进行针对性配置。图4所示即为本发明实施例提供的数据对象的“多版本”数据存储结构示意图。
以下对分层、可配置的存储结构应用进行详细说明。
以下三种实例针对本发明在行列混合存储、行存储、列存储等典型存储场景下的应用示例进行了详细说明;应用实体表分别为Table_Test1、Table_Test2、Table_Test3,三张表结构相同,但稀疏、稠密等数据特点各不相同,因此分别选取了不同的存储方法。
行列混合存储
实体内容及行列存储规划
如下表2所示,Col1、Col2列的数据饱满,属于稠密数据列,因此可采用行存储,从属于列组ColumnGroup_R1;Col3、Col4、Col5列缺失值较多,属于稀疏数据列,因此采用列存储,从属于列组ColumnGroup_C1。
表2
表3
说明:键域数据保存到KeyFile1文件中;针对值域数据,Col1、Col2按行存储,均保存到DataFile1文件中,Col3、Col4、Col5按列存储,为提升统计性能,使各个列独立存储,分别保存到DataFile2、DataFile3、DataFile4文件中。
表4键值模型定义(键域文件-KeyFile1)
上表CA列的值相当于col1至col5等五个列“值域内容”的文件索引,CA列值内容说明如下:
a)fn对应具体的数据文件,如:f1对应DataFile1,f2对应DataFile2等;
b)idxn是某个文件的行偏移量,(一个row可以对应多条记录,用不同的时间戳加以区分,idxn命中的是时间戳最大的记录,即:排序在最顶层的记录),如:f1_idx1是DataFile1文件行偏移1行后的记录;
c)coln是针对某条记录的第n列,如:f1_idx1_col3是DataFile1文件第1行记录的第3列,列分隔符内容见PosType定义。
DataFile1文件内容 | 说明 |
Row1,timestamp1,1,LiPing | 该行偏移量为idx1,分隔符是“,” |
Row2,timestamp2,2,WangLin | 该行偏移量为idx2,分隔符是“,” |
Row3,timestamp3,3,ZhangLi | 该行偏移量为idx3,分隔符是“,” |
表5按行存储的文件格式定义(值域文件-DataFile1)
DataFile2文件内容 | 说明 |
Row1,timestamp1,NULL | 该行偏移量为idx1,分隔符是“,” |
Row2,timestamp2,NULL | 该行偏移量为idx2,分隔符是“,” |
Row3,timestamp3,2010/2/1 | 该行偏移量为idx3,分隔符是“,” |
表6按列存储的文件格式定义(值域文件-DataFile2)
DataFile3文件内容 | 说明 |
Row1,timestamp1,TRUE | 该行偏移量为idx1,分隔符是“,” |
Row2,timestamp2,NULL | 该行偏移量为idx2,分隔符是“,” |
Row3,timestamp3,VACANT | 该行偏移量为idx3,分隔符是“,” |
表7按列存储的文件格式定义(值域文件-DataFile3)
DataFile4文件内容 | 说明 |
Row1,timestamp1,201 | 该行偏移量为idx1,分隔符是“,” |
Row2,timestamp2,NULL | 该行偏移量为idx2,分隔符是“,” |
Row3,timestamp3, NULL | 该行偏移量为idx3,分隔符是“,” |
表8按列存储的文件格式定义(值域文件-DataFile4)
图5所示为本发明实施例提供的行列混合存储的整体实现逻辑示意图。
行存储
实体内容及行列存储规划
如下表9所示,Col1、Col2、Col3、Col4、Col5列的数据饱满,属于稠密数据列,均可采用行存储,从属于列组ColumnGroup_R1。
表9
表10表格化的软模式定义
说明:键域数据保存到KeyFile1文件中,值域数据均保存到DataFile1文件中。
表11键值模型定义(键域文件-KeyFile1)
表11中CA列的值相当于col1至col5等五个列“值域内容”的文件索引,CA列值内容说明如下:
fn对应具体的数据文件,如:f1对应DataFile1;
idxn是某个文件的行偏移量,(一个row可以对应多条记录,用不同的时间戳加以区分,idxn命中的是时间戳最大的记录,即:排序在最顶层的记录),如:f1_idx1是DataFile1文件行偏移1行后的记录;
coln是针对某条记录的第n列,如:f1_idx1_col3是DataFile1文件第1行记录的第3列,列分隔符内容见PosType定义。
表12按行存储的文件格式定义(值域文件-DataFile1)
图6所示为本发明实施例提供的行存储的整体实现逻辑示意图。
列存储
实体内容及行列存储规划
如下表13所示,Col1、Col2、Col3、Col4、Col5列的缺失值较多,均属于稀疏数据列,采用列存储,从属于列组ColumnGroup_C1。
表13
表14表格化的软模式定义
说明:键域数据保存到KeyFile1文件中,值域数据保存到DataFile1文件中。
表15键值模型定义(键域文件-KeyFile1)
上表CA列的值相当于col1至col5等五个列“值域内容”的文件索引,CA列值内容说明如下:
fn对应具体的数据文件,如:f1对应DataFile1;
idxn是某个文件的行偏移量,(一个row可以对应多条记录,用不同的时间戳加以区分,idxn命中的是时间戳最大的记录,即:排序在最顶层的记录),如:f1_idx1是DataFile1文件行偏移1行后的记录;
coln是针对某条记录的第n列,如:f1_idx1_col3是DataFile1文件第1行记录的第3列,列分隔符内容见PosType定义。
DataFile1文件内容 | 说明 |
Row1,timestamp1,1 | 该行偏移量为idx1,分隔符是“,” |
Row2,timestamp2,2 | 该行偏移量为idx2,分隔符是“,” |
Row3,timestamp3,3 | 该行偏移量为idx3,分隔符是“,” |
表16按列存储的文件格式定义(值域文件-DataFile1)
DataFile2文件内容 | 说明 |
Row1,timestamp1,LiPing | 该行偏移量为idx1,分隔符是“,” |
Row2,timestamp2,VACANT | 该行偏移量为idx2,分隔符是“,” |
Row3,timestamp3,ZhangLi | 该行偏移量为idx3,分隔符是“,” |
表17按列存储的文件格式定义(值域文件-DataFile2)
DataFile3文件内容 | 说明 |
Row1,timestamp1,NULL | 该行偏移量为idx1,分隔符是“,” |
Row2,timestamp2,NULL | 该行偏移量为idx2,分隔符是“,” |
Row3,timestamp3,2010/2/1 | 该行偏移量为idx3,分隔符是“,” |
表18按列存储的文件格式定义(值域文件-DataFile3)
DataFile4文件内容 | 说明 |
Row1,timestamp1,TRUE | 该行偏移量为idx1,分隔符是“,” |
Row2,timestamp2,VACANT | 该行偏移量为idx2,分隔符是“,” |
Row3,timestamp3,VACANT | 该行偏移量为idx3,分隔符是“,” |
表19按列存储的文件格式定义(值域文件-DataFile4)
DataFile5文件内容 | 说明 |
Row1,timestamp1,201 | 该行偏移量为idx1,分隔符是“,” |
Row2,timestamp2,NULL | 该行偏移量为idx2,分隔符是“,” |
Row3,timestamp3,NULL | 该行偏移量为idx3,分隔符是“,” |
表20按列存储的文件格式定义(值域文件-DataFile5)
图7所示为本发明实施例提供的列存储的整体实现逻辑示意图。
对于缺失值的处理方式
针对互联网、物联网等新兴业务数据存在大量缺失值的问题,本发明还针对性地定义了缺失值的分类,并引入一种“四值逻辑”来规范对缺失值的操作。
缺失值的类型定义
在大数据处理过程中,除了解决“混合数据集”的高效存储之外,针对稀疏数据缺失值的处理也是一个关键问题;缺失值是指数据对象(元组)中缺失的属性值,属性值的缺失包括多种情况,每个类型的缺失值都反应一种不同的猜测,本发明定义的缺失包括适用和不适用两种情况,即:缺失并适用和缺失并不适用,两种定义充分体现了“空值”的表现形式:
缺失并不适用(Unknown):值存在但却无法知道;如:传输异常或网关回填数据失败等原因导致“网元字段”为空(正常情况不允许为空),此时该数值不可用;
缺失并适用(Nonexistent):值确实不存在;如:某个字段为空值(允许为空),此时该数值可用;
本发明用NULL符号表示Unknown型的缺失值,VACANT符号表示Nonexistent型的缺失值,两个符号需满足以下约束:
NULL和VACANT是两种表示符号而不是两个值,即:NULL→Unknown,VACANT→Nonexistent;
Unknown型的NULL可以通过update操作修改为其他值,但Nonexistent型的VACANT是唯一确定的,不应该被修改。
四值逻辑
本发明将缺失值定义为Unknown和Nonexistent两种类型,在实现“符号表达”的同时,SQL语句的“条件表达式真值”也需要同步定义,本发明使用Maybe符号表示数据与NULL比较的结果(结果是True或False,无论NULL与其他数据比较,还是与另一个NULL比较,都会产生Maybe),用Neglect符号表示数据与VACANT比较的结果,因此,任何条件判断语句都有四种可能的真值:True、False、Maybe和Neglect,即:这两类缺失值的比较产生一种四值逻辑(4VL),一个逻辑表达式“基本的”值会有t(真)、f(假)和i(不适用或未定义的undefined),每个真值是集合{t,f,i}的一个非空子集。
1、True={t};2、False={f};3、Maybe={t,f};4、Neglect={i}
表21针对四值逻辑的真值表定义
以下介绍本发明实施例提供的一种动态的数据存储装置,用以执行前述实施例中提供的动态的数据存储方法。
图8所示为本发明一个实施例提供的动态的数据存储装置的结构示意图。依据该图详述该装置的组成部分如下:
定义单元801,用于对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属性列的存储策略;
所述定义单元定义所述待存储的数据中各个属性列的存储策略,包括:
构建表格化的软模式,并增加对所述各个属性列的模式定义,以可视化的角度将键值对集合定义为数据存储的弹性容器。
所述定义单元定义所述待存储的数据中各个属性列的存储策略,包括:
若所述属性列中的数据为稠密数据,则采用行存储;
若所述属性列中的数据为稀疏数据,则采用行存储。
组织单元802,用于将所述各个属性列按照键值对模型组织为不同的数据子集;
所述组织单元将所述各个属性列按照键值对模型组织为不同的数据子集,包括:
分别定义所述键值对模型中的键域和值域,并将所述键域和值域分开保存;
所述键域中包括至少一个子键,且所述属性对的模式定义保存在所述键域中;
在所述值域中存储和所述键域对应的数据内容。
存储单元803,用于根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所述物理存储格式存储所述数据子集。
所述存储单元根据所述属性列的存储策略为所述数据子集定义物理存储格式,包括:
将所述每个属性列划分为至少一个分区,针对每一个分区,
若所述分区适用于行存储,则将所述分区映射到一个单独的文件,形成一个行组;
若所述分区适用于列存储,则将所述分区中的至少一个列存储到一个文件中。
前述动态的数据存储装置中,所述定义单元还用于,将所述属性列中的缺失数据定义为缺失并不适用和缺失并适用两种类型。
使用本发明实施例公开的动态的数据存储装置,通过分层、可配置的存储结构实现一种动态的数据存储方法,可同时满足大数据处理中“稀疏数据和稠密数据集”的存储需求,解决了目前经分***“存储方案单一“的问题,为物联网、互联网等海量数据存储提供了一种灵活的存储方案,可有效支撑“新业务模式”下的数据存储与分析;
RCFILE存储方法(先水平划分,再垂直划分)的内部结构复杂、模式变更代价高,比较适合于“只读型”数据仓库,而本发明实现存储结构的分层定义、键值分离,结构简单、耦合度低,可快速实现模式变更(如:“增加或删除列”仅需在“表格化软模式层”配置增加或删除一个文件);
RCFILE将“实体的所有属性列”按照“一个原则”处理(先水平划分,再垂直划分),灵活度不够,而本发明可针对实体属性列的“数据特征”针对性地选择行存储或列存储,如:针对实体的稀疏数据列选择列存储,实现存储节约,针对稠密数据列选择行存储,实现高效写入;
针对物联网、互联网等业务普遍存在海量缺失数据的问题,本发明完成了缺失值的类型定义,为提高大数据“分析质量”提供了一种有效的技术手段;
该发明的技术实现位于经分***“信息服务域”的数据层,与上层业务应用之间通过“透明访问层”实现数据交互,业务耦合度低、加工逻辑简明,完全满足经分数据仓库海量数据存储访问需求。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟、光盘、网络节点、调度器等各种可以存储程序代码的介质。
最后应说明的是:以上仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种动态的数据存储方法,其特征在于,包括:
对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属性列的存储策略;
将所述各个属性列按照键值对模型组织为不同的数据子集;
根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所述物理存储格式存储所述数据子集;
所述将所述各个属性列按照键值对模型组织为不同的数据子集,包括:
分别定义所述键值对模型中的键域和值域,并将所述键域和值域分开保存;
所述键域中包括至少一个子键,且属性对的模式定义保存在所述键域中;
在所述值域中存储和所述键域对应的数据内容;
其中,所述键域中的子键包括RK、CG和CA,所述RK、CG和CA子键的组合构成查询主键,和一个数据单元唯一对应;
其中,RK为数据对象的唯一标识;CG为属性列数组,包括一个或多个属性列;CA为CG列的可寻址组,用于保存一个或多个属性列的地址。
2.根据权利要求1所述的方法,其特征在于,所述定义所述待存储的数据中各个属性列的存储策略,包括:
构建表格化的软模式,并增加对所述各个属性列的模式定义,以可视化的角度将键值对集合定义为数据存储的弹性容器。
3.根据权利要求1或2所述的方法,其特征在于,所述定义所述待存储的数据中各个属性列的存储策略,包括:
若所述属性列中的数据为稠密数据,则采用行存储;
若所述属性列中的数据为稀疏数据,则采用列存储。
4.根据权利要求3所述的方法,其特征在于,所述根据所述属性列的存储策略为所述数据子集定义物理存储格式,包括:
将所述每个属性列划分为至少一个分区,针对每一个分区,
若所述分区适用于行存储,则将所述分区映射到一个单独的文件,形成一个行组;
若所述分区适用于列存储,则将所述分区中的至少一个列存储到一个文件中。
5.根据权利要求1所述的方法,其特征在于,所述值域中存储的数据内容还包括时间戳,将所述数据内容按照时间戳的顺序排列。
6.根据权利要求5所述的方法,其特征在于,还包括:
预设保存的数据内容的版本个数,根据所述数据内容的时间戳保存预设个数的版本;或者,
预设保存的数据内容的时间段,根据所述时间戳保存预设时间段内的版本。
7.根据权利要求1或2所述的方法,其特征在于,将所述属性列中的缺失数据定义为缺失并不适用和缺失并适用两种类型。
8.一种动态的数据存储装置,其特征在于,包括:
定义单元,用于对待存储的数据进行整体元数据定义,定义所述待存储的数据中各个属性列的存储策略;
组织单元,用于将所述各个属性列按照键值对模型组织为不同的数据子集;
存储单元,用于根据所述属性列的存储策略为所述数据子集定义物理存储格式,并按所述物理存储格式存储所述数据子集;
所述组织单元将所述各个属性列按照键值对模型组织为不同的数据子集,包括:
分别定义所述键值对模型中的键域和值域,并将所述键域和值域分开保存;
所述键域中包括至少一个子键,且属性对的模式定义保存在所述键域中;
在所述值域中存储和所述键域对应的数据内容;
其中,所述键域中的子键包括RK、CG和CA,所述RK、CG和CA子键的组合构成查询主键,和一个数据单元唯一对应;
其中,RK为数据对象的唯一标识;CG为属性列数组,包括一个或多个属性列;CA为CG列的可寻址组,用于保存一个或多个属性列的地址。
9.根据权利要求8所述的装置,其特征在于,所述定义单元定义所述待存储的数据中各个属性列的存储策略,包括:
构建表格化的软模式,并增加对所述各个属性列的模式定义,以可视化的角度将键值对集合定义为数据存储的弹性容器。
10.根据权利要求8或9所述的装置,其特征在于,所述定义单元定义所述待存储的数据中各个属性列的存储策略,包括:
若所述属性列中的数据为稠密数据,则采用行存储;
若所述属性列中的数据为稀疏数据,则采用列存储。
11.根据权利要求10所述的装置,其特征在于,所述存储单元根据所述属性列的存储策略为所述数据子集定义物理存储格式,包括:
将所述每个属性列划分为至少一个分区,针对每一个分区,
若所述分区适用于行存储,则将所述分区映射到一个单独的文件,形成一个行组;
若所述分区适用于列存储,则将所述分区中的至少一个列存储到一个文件中。
12.根据权利要求8或9所述的装置,其特征在于,所述定义单元还用于,将所述属性列中的缺失数据定义为缺失并不适用和缺失并适用两种类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310459768.0A CN104516912B (zh) | 2013-09-29 | 2013-09-29 | 一种动态的数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310459768.0A CN104516912B (zh) | 2013-09-29 | 2013-09-29 | 一种动态的数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104516912A CN104516912A (zh) | 2015-04-15 |
CN104516912B true CN104516912B (zh) | 2018-06-26 |
Family
ID=52792222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310459768.0A Active CN104516912B (zh) | 2013-09-29 | 2013-09-29 | 一种动态的数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104516912B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626388B2 (en) * | 2013-09-06 | 2017-04-18 | TransMed Systems, Inc. | Metadata automated system |
CN104866240B (zh) * | 2015-05-28 | 2017-11-14 | 重庆大学 | 一种用于磁畴壁存储器的数据存储方法 |
CN106471501B (zh) * | 2016-03-24 | 2020-04-14 | 华为技术有限公司 | 数据查询的方法、数据对象的存储方法和数据*** |
CN106156338A (zh) * | 2016-07-12 | 2016-11-23 | 复旦大学无锡研究院 | 一种信息发现服务器的数据存储方法和信息发现方法 |
CN106383844A (zh) * | 2016-08-31 | 2017-02-08 | 天津南大通用数据技术股份有限公司 | 应用于特殊数据的存储方法及装置 |
CN108108358B (zh) * | 2016-11-24 | 2024-02-06 | 全球能源互联网研究院 | 一种电能质量数据的存储和检索方法 |
CN109542898A (zh) * | 2018-10-30 | 2019-03-29 | 天津字节跳动科技有限公司 | 资料库表格的数据存储方法、装置、电子设备及存储介质 |
CN109542879A (zh) * | 2018-11-21 | 2019-03-29 | 成都材智科技有限公司 | 一种基于动态数据模板管理数据的方法与装置 |
CN109669995A (zh) * | 2018-12-25 | 2019-04-23 | 北京锐安科技有限公司 | 数据存储、质量计算方法、装置、存储介质及服务器 |
CN111104067B (zh) * | 2019-12-20 | 2024-01-12 | 深圳前海微众银行股份有限公司 | 面向列的缓存方法、装置、设备及计算机可读存储介质 |
CN110968585B (zh) * | 2019-12-20 | 2023-11-03 | 深圳前海微众银行股份有限公司 | 面向列的存储方法、装置、设备及计算机可读存储介质 |
CN114443670B (zh) * | 2022-04-07 | 2022-07-08 | 北京奥星贝斯科技有限公司 | 数据的存储、读取方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173281B1 (en) * | 1998-05-22 | 2001-01-09 | International Business Machines Corporation | Method and computer program product for processing and combining data sets including bitmaps |
CN101021868A (zh) * | 2007-03-06 | 2007-08-22 | 武汉大学 | 一种基于对象存储的地形数据存储方法 |
CN102117340A (zh) * | 2011-04-19 | 2011-07-06 | 北京神州数码思特奇信息技术股份有限公司 | 一种动态数据存储方法 |
CN102682108A (zh) * | 2012-05-08 | 2012-09-19 | 同方光盘股份有限公司 | 一种行列混合的数据库存储方法 |
-
2013
- 2013-09-29 CN CN201310459768.0A patent/CN104516912B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173281B1 (en) * | 1998-05-22 | 2001-01-09 | International Business Machines Corporation | Method and computer program product for processing and combining data sets including bitmaps |
CN101021868A (zh) * | 2007-03-06 | 2007-08-22 | 武汉大学 | 一种基于对象存储的地形数据存储方法 |
CN102117340A (zh) * | 2011-04-19 | 2011-07-06 | 北京神州数码思特奇信息技术股份有限公司 | 一种动态数据存储方法 |
CN102682108A (zh) * | 2012-05-08 | 2012-09-19 | 同方光盘股份有限公司 | 一种行列混合的数据库存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104516912A (zh) | 2015-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104516912B (zh) | 一种动态的数据存储方法及装置 | |
US11977545B2 (en) | Generation of an optimized query plan in a database system | |
US10318551B2 (en) | Reporting and summarizing metrics in sparse relationships on an OLTP database | |
CN104781810B (zh) | 将行和对象数据库活动跟踪到块级热图中 | |
US7870174B2 (en) | Reference partitioned tables | |
CN108369587B (zh) | 创建用于交换的表 | |
US20120323867A1 (en) | Systems and methods for querying column oriented databases | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
WO2015109250A1 (en) | CREATING NoSQL DATABASE INDEX FOR SEMI-STRUCTURED DATA | |
CN101916261A (zh) | 一种分布式并行数据库***的数据分区方法 | |
CN107273482A (zh) | 基于HBase的告警数据存储方法及装置 | |
US20190034453A1 (en) | Flexible synchronous file system replication | |
US11741104B2 (en) | Data access via multiple storage mechanisms in query execution | |
CN111522880A (zh) | 一种基于mysql数据库集群的提升数据读写性能的方法 | |
CN104615785A (zh) | 一种基于TYKY cNosql数据库的数据存储方法及装置 | |
CN103345527B (zh) | 数据智能统计*** | |
Rotem et al. | Extendible arrays for statistical databases and OLAP applications | |
CN107609011A (zh) | 一种数据库记录的维护方法和装置 | |
D’silva et al. | Secondary indexing techniques for key-value stores: Two rings to rule them all | |
US9275059B1 (en) | Genome big data indexing | |
EP3072071A1 (en) | Method and apparatus for data mining | |
US8073823B2 (en) | Database management program | |
CN102597969A (zh) | 带属性的键值存储的数据库管理装置及其键值存储结构的高速缓存装置 | |
US20220114155A1 (en) | Per-segment secondary indexing in database systems | |
CN114879915A (zh) | 一种面向应用观测的流式存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |