CN106874437B - 面向数据库一体机的内存数据仓库行列存储转换实现方法 - Google Patents
面向数据库一体机的内存数据仓库行列存储转换实现方法 Download PDFInfo
- Publication number
- CN106874437B CN106874437B CN201710064124.XA CN201710064124A CN106874437B CN 106874437 B CN106874437 B CN 106874437B CN 201710064124 A CN201710064124 A CN 201710064124A CN 106874437 B CN106874437 B CN 106874437B
- Authority
- CN
- China
- Prior art keywords
- column
- storage
- data
- row
- flash memory
- 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
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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种面向数据库一体机的内存数据仓库行列存储转换实现方法,其步骤:构建内存数据仓库一体机存储模型:在数据库一体机架构上,采用维表集中存储,事实表分布存储策略;设置存储引擎;设置行列存储模型转换策略;在数据库一体机上的实时OLAP查询处理任务分解为在主节点事实表行缓存、影子数据列缓存以及存储服务器节点事实表主分片上的分布式OLAP查询处理任务,实现基于实时数据上的OLAP分析处理。本发明实现了将事务处理引擎的行存储记录高效地转换为分析引擎的列存储记录,并支持在实时数据上的OLAP分析处理。本发明适用于面向内存数据仓库一体机在更新操作中的行列存储结构转换应用场景。
Description
技术领域
本发明涉及一种内存数据仓库存储转换方法,特别是关于一种面向数据库一体机的内存数据仓库行列存储转换实现方法。
背景技术
随着大内存、多核处理器等硬件技术和内存数据库技术的发展,内存OLAP处理性能不断提高,大数据内存实时分析处理成为主流的技术。传统的事务处理引擎通常采用行存储模型,优化更新操作性能,而分析处理则通常采用列存储引擎,优化数据访问和处理性能。当前主流数据库开始支持事务处理引擎和分析处理引擎集成技术,如Oracle Databasein-memory,SQL server 2016等既支持事务处理,也支持分析处理。但当前主要的实现技术是为事务处理引擎增加一个列存储引擎加速分析处理性能,列存储引擎可以看作是事务处理引擎的影子数据(shadow data),支持或不支持数据同步更新,主要技术难点是事务处理引擎的行存储结构数据如何高效地转换为列存储结构数据。列存储引擎不仅要按列存储数据,还需要通过数据压缩技术进一步提高列存储引擎的数据存储和处理效率。当前代表性的技术,如SAP HANA采用L1行存储引擎、L2非压缩列存储引擎和采用数据压缩的主存储列引擎来支持实时OLAP分析处理,在事务型行数据转换为分析型列数据时还需要解决列压缩以及字典表更新等问题,需要处理复杂的数据转换问题。
在面向数据库一体机架构的内存数据仓库***中,少量高端服务器组成的高性能服务器集群和大量中低端服务器组成的存储服务器集群提供了不对称的存储和计算性能,不仅需要解决实时更新数据的行列存储结构转换任务,还需要根据数据库一体机的硬件架构特点将事务处理与分析处理分配在不同的集群,需要优化设计不同类型数据在不同集群上的存储策略,不同类型的数据在集群节点内及集群节点间的存储策略和存储模型转换策略。
发明内容
针对上述问题,本发明的目的是提供一种面向数据库一体机的内存数据仓库行列存储转换实现方法,该方法实现了将事务处理引擎的行存储记录高效地转换为分析引擎的列存储记录,并支持在实时数据上的OLAP分析处理。
为实现上述目的,本发明采取以下技术方案:一种面向数据库一体机的内存数据仓库行列存储转换实现方法,其特征在于包括以下步骤:1)构建内存数据仓库一体机存储模型:在数据库一体机架构上,采用维表集中存储,事实表分布存储策略;2)设置存储引擎;3)设置行列存储模型转换策略;4)在数据库一体机上的实时OLAP查询处理任务分解为在主节点事实表行缓存中未进行列转换的行组、影子数据列缓存以及存储服务器节点事实表主分片上的分布式OLAP查询处理任务,实现基于实时数据上的OLAP分析处理。
所述步骤1)中,数据仓库中的维表集中存储于数据库一体机高性能服务器集群,维表采用多维关系模型,即维表记录映射为维度成员,维表主键映射为维度坐标。
在维表增加一个删除标志列D_Flag,逻辑标识删除的维记录,该维记录对应的主键值能分配给新***的维记录。
所述步骤1)中,事实表在数据库一体机架构中采用分布式存储策略,事实表以水平分片方式存储在存储服务器集群节点,事实表分片采用列存储,列按照优化的行数划分为列分片,列分片作为列数据压缩存储单位。
所述步骤2)中,具体设置方法如下:2.1)维表采用行存储引擎,利用成熟的事务型内存数据库***支持***、修改或删除的更新操作;维表上的查询为选择和投影操作,当维表较大且查询选择率较低时,为维属性创建位图索引;2.2)事实表存储分为两种类型:2.2.1)在数据库一体机高性能服务器集群维表存储引擎中设置事实表缓存,用于缓存***的行存储结构事实表记录,同时设置一个内存列存储结构事实表缓存,用于实现事实表记录的内存行列转换;2.2.2)主要事实表数据以水平分片方式存储于存储服务器集群;事实表存储采用列存储,事实表列按优化配置参数划分为列分片,每个列分片是一个独立的列数据压缩存储单位,独立设置列分片压缩算法及相关压缩元数据。
所述步骤3)中,具体设置方法如下:3.1)维表映射为维度,在OLAP查询处理时维表映射为一个向量列,表示OLAP查询在维表上的选择和投影操作结果;当维表用数据库存储时,设置维表主键列为AUTO_INCREMENT类型,自动为维表分配连续的主键值,删除的记录产生缺失的主键值;3.2)事实表数据的行列转换包括从高性能服务器集群事实表缓存到列缓存,从列缓存到闪存,从高性能服务器集群闪存到存储服务器集群闪存,从存储服务器闪存到内存,从内存行组到内存压缩列分片。
所述步骤3.2)中,具体步骤如下:3.2.1)高性能服务器集群事实表缓存以优化的行组数对***记录进行逻辑分区,以行组为单位异步地将***的事实表行记录以列为单位存储在列缓存中,作为事实表行记录的影子列,不参与查询处理;3.2.2)以循环队列的方式组织以行组为单位的列缓存,在队列尾***新的行组列数据;3.2.3)列缓存异步地以列为单位将内存行组列存储为闪存行组列,完成闪存存储的内存行组列被循环队列头新***的行组列覆盖,复用列缓存空间;3.2.4)闪存行组列异步地按事实表分布存储策略从高性能服务器集群节点复制到对应的存储服务器集群节点闪存中;3.2.5)存储服务器闪存中的行组列加载为内存行组列,作为存储服务器集群节点上的影子列,影子列同样采用循环队列结构组织内存行组列;3.2.6)以异步的方式将若干个行组列整合为列存储结构的列分片,列分片作为独立的数据压缩单元,根据数据特征和数据访问需求选择压缩方法,列分片与其他事实表列分片组成存储服务器节点事实表分片。
所述步骤4)中,实时OLAP查询处理根据不同的优化策略执行步骤如下:4.1)在高性能服务器主节点,事实表缓存使用行存储引擎,行缓存以优化的逻辑行组为数据管理单位,采用异步的方式通过后台工作线程将行记录转换为列记录,存储于影子列缓存,事实表缓存作为事实表最新数据分片,参与OLAP的查询处理执行;4.2)事实表行缓存记录向影子列缓存记录转换时使用循环队列管理影子列行组数据,影子列缓存数据只用于行列转换,不提供对OLAP查询处理的支持;4.3)内存影子列行组异步地转换为闪存列存储结构的影子块,将内存列数据物化,释放内存影子列行组空间,与事实表缓存中的其他行存储数据共同提供主节点上的OLAP查询处理支持;4.4)存储服务器集群节点完成闪存影子块数据复制时,如果高性能服务器节点闪存空间不足,由存储服务器节点闪存影子块接替高性能服务器节点闪存影子块提供OLAP查询处理,并释放高性能服务器节点闪存中相应影子块的存储空间;4.5)存储服务器节点采用内存循环队列加载闪存影子块数据,并将其对应的行组列按事实表列分片粒度进行列合并、列压缩,生成列分片,添加到存储服务器节点事实表分片链接表,更新事实表分片数据集;4.6)在完成事实表列分片的持久存储后,由事实表分片承担相应的OLAP查询处理任务,存服务器节点闪存和高性能服务器节点闪存中相应的影子块数据不再承担OLAP查询处理任务,并释放其占用的存储空间。
所述步骤4.3)中,当主节点内存空间不足时,影子块作为事实表缓存记录的闪存复本能提供基于闪存的列存储结构事实表分片数据访问,提供基于闪存影子块的OLAP查询处理任务。
本发明由于采取以上技术方案,其具有以下优点:1、数据仓库中的事实表上主要的更新操作为***操作,不支持对***记录的修改,本发明解决了批量***的记录如何存储,如何转换为列存储,如何在数据库一体机不同的节点间分布存储问题。2、本发明内存数据仓库***在数据库一体机高性能计算服务器集群和存储服务器集群节点上采用行存储、列存储混合存储模型,高性能计算服务器集群主节点采用行存储引擎优化事务处理,提高数据更新性能,存储服务器集群采用列存储引擎,优化数据存储效率和查询处理性能。3、本发明行存储引擎和列存储引擎之间通过映射和多级缓存实现行列存储模型转换,行存储的维表采用动态列映射技术,根据OLAP查询将维表按查询命令映射为列结构的维向量,代替行存储的维表参与OLAP查询处理任务,事实表行缓存通过内存、闪存、存储服务器闪存、存储服务器内存的多级缓存和列转换技术实现数据仓库事务处理***中行存储数据向分析处理***列存储数据的转换。4、本发明事实表行缓存以优化的行组参数对***的事实表行记录进行逻辑划分,通过内存列缓存循环队列的方式,异步地将事实表事务引擎行缓存中的行组转换为内存列缓存中的行组列数据,然后以内存行组列为单位转换为闪存列数据块,作为事实表行缓存中行组记录的影子数据,内存列缓存中的影子数据只用于数据转换,闪存中的影子数据块可以支持基于闪存访问的OLAP查询处理,以便及早释放事实表行缓存和内存列缓存中相应的行组,减少内存空间开销。5、本发明高性能计算服务器节点的闪存影子数据块复制到存储服务器节点闪存,完成更新数据从主节点向存储节点的分发,然后存储服务器节点闪存数据块可以接替主节点闪存数据块支持OLAP查询处理任务,释放主节点闪存中相应数据块,减少主节点闪存存储空间消耗。6、本发明存储服务器节点闪存数据块采用异步方式加载为内存行组列,优化数量的行组进行合并,生成列分片,列分片的大小经过优化配置,作为独立的数据压缩单元并提高行组列合并时的存储效率。7、本发明在数据库一体机上的实时OLAP查询处理任务分解为在主节点事实表行缓存、影子数据列缓存以及存储服务器节点事实表主分片上的分布式OLAP查询处理任务,实现基于实时数据上的OLAP分析处理。
综上所述,本发明适用于面向内存数据仓库一体机在更新操作中的行列存储结构转换应用场景,能够适应在数据库一体机架构下的事务型应用与分析型应用相融合的实时内存OLAP应用。
附图说明
图1是数据仓库在数据库一体机架构上的存储策略示意图;
图2是本发明所使用的维表映射为维向量列技术示意图;
图3是本发明数据存储及存储结构转换示意图;
图4是本发明在数据库一体机上实时OLAP查询处理执行过程示意图。
具体实施方式
下面结合附图和实施例对本发明进行详细的描述。
本发明根据数据仓库中维表较小且增长缓慢,需要支持通用的增加、删除、修改操作,而事实表较大,主要支持大量事实表记录的***操作,不支持对历史数据性质的事实表记录进行修改的特点,提供了一种面向数据库一体机的内存数据仓库行列存储转换实现方法,实现了将事务处理引擎的行存储记录高效地转换为分析引擎的列存储记录,并支持在实时数据上的OLAP分析处理。
本发明的方法具体包括以下步骤:
1)构建内存数据仓库一体机存储模型:如图1所示,在数据库一体机架构上,采用维表集中存储,事实表分布存储策略。
1.1)数据仓库中较小且缓慢增长的维表集中存储于数据库一体机高性能服务器集群,维表采用多维关系模型,即维表记录映射为维度成员,维表主键映射为维度坐标。
数据仓库通常使用代理键(surrogate key)作为维表主键,代理键为自然序列1,2,3,…,可以直接映射为维度成员。数据库中通常支持AUTO_INCREMENT数据类型,可以使用自动增长的自然数列作为维表主键,为提高维度存储效率,降低维度更新代价,本发明在维表增加一个删除标志列D_Flag,逻辑标识删除的维记录,该维记录对应的主键值可以分配给新***的维记录以减少维度中由删除操作产生的“空洞”位置。
维表上的更新操作包括***、删除和修改,由于维表与事实表之间具有主-外键参照完整性约束关系,维表记录的删除必须在事实表中相关维表外键记录全部删除后才能执行,由事实表存储历史数据通常不进行删除操作的特点,维表记录删除操作较少发生。维表通常增长缓慢,***操作相对事实表频率较低,更新操作通常发生在维描述性属性上,当采用代理键作为维表主键时,主键不包含语义信息,不支持对维表主键的更新。
1.2)事实表在数据库一体机架构中采用分布式存储策略,事实表以水平分片方式存储在存储服务器集群节点,事实表分片采用列存储,列按照优化的行数划分为列分片(column slice),列分片作为列数据压缩存储单位,提供独立的数据压缩/解压缩存储访问。
事实表上的更新操作主要是***操作,通常不支持对事实数据的删除和修改。事实表记录的***频率相对较高,既需要保证事实表记录在高负载***操作中可靠而高效地存储记录,又需要保证事实表记录在分析处理中提供较高的数据访问性能。
2)设置存储引擎:
2.1)当维表较小时,行存储引擎在多核并行查询处理时能够提供较高的性能。维表采用行存储引擎,能够利用成熟的事务型内存数据库***更好地支持***、修改或删除等通用的更新操作。
维表上的查询主要为选择和投影操作,当维表较大且查询选择率较低时,为使用频率较高的维属性创建位图索引,以位图列索引加速行存储的维表上的选择操作性能。
2.2)事实表存储分为两种类型:
2.2.1)在数据库一体机高性能服务器集群维表存储引擎中设置事实表缓存,用于缓存***的行存储结构事实表记录,同时设置一个内存列存储结构事实表缓存,用于实现事实表记录的内存行列转换。事实表列缓存采用内存-闪存两级缓存结构以减少事实表缓存的内存消耗,事实表记录以行组(row group)为单位逻辑划分,行组值保证事实表列行组大小为闪存页面大小的整数倍,如行组设置为4K,8K…,保证事实表列行组数据从内存写入闪存时占用完整的闪存数据页。
2.2.2)主要事实表数据以水平分片方式存储于存储服务器集群。事实表存储采用列存储,事实表列按优化配置参数划分为列分片(column slice),列分片可以采用较大的粒度,如行组大小的整数倍,保证列分片由若干列行组合并而成。每个列分片是一个独立的列数据压缩存储单位,独立设置列分片压缩算法及相关压缩元数据(如压缩字典表等)。
3)设置行列存储模型转换策略:
3.1)本发明采用多维关系模型,维表映射为维度,在OLAP查询处理时维表映射为一个向量列,表示OLAP查询在维表上的选择和投影操作结果。如图2所示,维表代表维度,维表主键为自然序列,对应维度坐标,维表增加删除标志列D_Flag,维表记录删除时保留维度成员坐标位置,即访维表记录对应的主键值,该删除的维表记录可以复用,用于存储新***的记录。
当维表用数据库存储时,可以设置维表主键列为AUTO_INCREMENT类型,自动为维表分配连续的主键值,删除的记录产生缺失的主键值。数据库***所采用的多版本并发控制机制和异位更新机制(将修改操作转换为删除原记录并***修改后的记录)等可能导致维表存储顺序与主键顺序不一致,此时维表主键用作逻辑维度坐标,将维表上的投影属性映射到维投影列对应的下标位置,缺失的主键映射位置设置为空,实现逻辑维记录与维度的映射。
进一步地,维投影列上执行字典表压缩,用数组存储投影列成员,用字典数组下标作为维向量编码,为当前OLAP查询在维表上生成维向量,作为维表在当前OLAP查询下的动态列存储数据。
3.2)事实表数据的行列转换包括若干个过程:从高性能服务器集群事实表缓存到列缓存,从列缓存到闪存,从高性能服务器集群闪存到存储服务器集群闪存,从存储服务器闪存到内存,从内存行组到内存压缩列分片。具体步骤如下:
3.2.1)高性能服务器集群事实表缓存以优化的行组数对***记录进行逻辑分区,以行组为单位异步地将***的事实表行记录以列为单位存储在列缓存中,作为事实表行记录的影子列,不参与查询处理;
3.2.2)为减少列缓存内存空间消耗,本发明以循环队列的方式组织以行组为单位的列缓存,在队列尾***新的行组列数据;
3.2.3)列缓存异步地以列为单位将内存行组列存储为闪存行组列,完成闪存存储的内存行组列可以被循环队列头新***的行组列覆盖,复用列缓存空间;
3.2.4)闪存行组列异步地按事实表分布存储策略从高性能服务器集群节点复制到对应的存储服务器集群节点闪存中;
3.2.5)存储服务器闪存中的行组列加载为内存行组列,作为存储服务器集群节点上的影子列,影子列同样采用循环队列结构组织内存行组列,减少列转换时的内存空间消耗;
3.2.6)以异步的方式将若干个行组列整合为列存储结构的列分片(columnslice),列分片作为独立的数据压缩单元,根据数据特征和数据访问需求选择适合的压缩方法,列分片与其他事实表列分片组成存储服务器节点事实表分片。
4)实时OLAP查询处理:在数据库一体机上的实时OLAP查询处理任务分解为在主节点事实表行缓存中未进行列转换的行组、影子数据列缓存(事实表行缓存中的行组、主节点闪存影子数据块、存储服务器节点闪存影子数据块、存储服务器节点列分片四份复本缓存之一)以及存储服务器节点事实表主分片上的分布式OLAP查询处理任务,实现基于实时数据上的OLAP分析处理。
在内存数据仓库一体机平台上,高性能服务器节点是***的主节点,负责维表管理,事实表更新(***新记录),事实数据分布存储等任务;存储服务器集群则存储主要的事实表数据,执行由主节点分发的分布式处理任务,在本地事实表分片数据集上完成OLAP查询处理子任务,并将查询结果集返回给主节点。因此,内存数据仓库一体机上的OLAP查询处理任务是分布于高性能服务器集群与存储服务器集群各节点上的分布式任务,主节点事实表行缓存作为最新数据分片,与其他事实表分片共同完成面向实时数据的OLAP查询处理任务。
从主节点事实表行缓存到最终的存储服务器节点列分片,需要经过一系列存储模型转换和数据转换过程,需要优化设计复本数据的有效性和存储效率问题。实时OLAP查询处理根据不同的优化策略执行步骤如下:
4.1)在高性能服务器主节点,事实表缓存使用行存储引擎,保证良好的事务处理性能,行缓存以优化的逻辑行组为数据管理单位,采用异步的方式通过后台工作线程将行记录转换为列记录,存储于影子列缓存,事实表缓存作为事实表最新数据分片,参与OLAP的查询处理执行;
4.2)为减少主节点事实表缓存的内存消耗,事实表行缓存记录向影子列缓存记录转换时使用循环队列管理影子列行组数据,为影子列缓存设置内存最大空间配额,减少对主节点内存的过度消耗,影子列缓存数据只用于行列转换,不提供对OLAP查询处理的支持;
4.3)内存影子列行组异步地转换为闪存列存储结构的影子块,将内存列数据物化,释放内存影子列行组空间,当主节点内存空间不足时,影子块作为事实表缓存记录的闪存复本可以提供基于闪存的列存储结构事实表分片数据访问,以快速释放内存事实表缓存中对应的行组,缓解高强度事实表记录更新负载时内存空间的膨胀,尽早将内存事实表缓存数据转移到容量更大的闪存影子块缓存,提供基于闪存影子块的OLAP查询处理任务,与事实表缓存中的其他行存储数据共同提供主节点上的OLAP查询处理支持;
4.4)从高性能服务器主节点闪存向存储服务器集群闪存进行数据复制时可能产生较大的延迟,包括集群采用多复本机制时向多个服务器的数据复制延迟。存储服务器集群节点完成闪存影子块数据复制时,如果高性能服务器节点闪存空间不足,可以由存储服务器节点闪存影子块接替高性能服务器节点闪存影子块提供OLAP查询处理,并释放高性能服务器节点闪存中相应影子块的存储空间;
4.5)存储服务器节点采用内存循环队列加载闪存影子块数据,并将其对应的行组列按事实表列分片粒度进行列合并、列压缩,生成列分片,添加到存储服务器节点事实表分片链接表,更新事实表分片数据集;
4.6)在完成事实表列分片的持久存储后,由事实表分片承担相应的OLAP查询处理任务,存服务器节点闪存和高性能服务器节点闪存中相应的影子块数据不再承担OLAP查询处理任务,并可以释放其占用的存储空间。
综上所述,本发明面向内存数据仓库一体机架构上更新数据的多级缓存方法,既包括不同集群节点的数据缓存,也包括节点上内存、闪存缓存之间的行列存储数据转换和复制过程,主要是利用闪存将数据按列缓存减少内存缓存空间消耗,并承担OLAP查询处理任务,提高数据库一体机的内存使用效率。通过多级缓存之间的数据转换及OLAP查询转换策略,提供面向实时更新数据的OLAP查询处理能力。
实施例:如图4所示,本发明提出的行列转换及多级缓存机制用于支持内存数据仓库平台的实时OLAP查询处理,实时OLAP查询处理过程分为四个处理阶段。
第一阶段为OLAP查询的维表处理阶段,OLAP查询命令分解为面向相关维表的子查询,在相关维表上进行选择和投影操作,并将维表操作结果转换为列存储结构的维向量,将维表动态映射为列,与事实表记录完成其后的OLAP查询处理任务。
数据库一体机的高性能服务器节点作为内存数据仓库的主节点,由行存储数据库引擎负责维表与事实表上的更新操作,事实表需要完成行列存储结构的转换,事实表整体可以被划分为三个集合,主节点事实表被列缓存的行组、主节点事实表未被列缓存的行组、存储服务器节点事实表分片。
主节点事实表被列缓存的行组可能存在四个复本:事实表行缓存中的行组,主节点闪存影子数据块,存储服务器节点闪存影子数据块,存储服务器节点列分片。在第二个阶段中,每个复本都可作为OLAP查询处理分片,如图4中虚线框中的数据代表依次产生的四个复本。当主节点内存空间有限时,需要尽早使用右侧的数据复本,释放左侧数据复本,减少主节点内存及闪存存储空间消耗。当右侧复本通过异步方式完成后,将复本状态设置为活跃(active),作为主复本参与OLAP查询处理,左侧相应复本在其上查询执行完后设置为不活跃(inactive),由***进程在空闲时回收或释放其存储空间。
主节点事实表未被列缓存的行组构成内存数据仓库最新的事实表记录子集,第三个阶段由行存储引擎提供该事实表子集上的OLAP查询处理。由于列缓存不断将事实表行缓存数据进行列存储转换,该行缓存记录数量控制在较小的规模,行存储数据库引擎能够提供较小的OLAP查询响应时间。
存储服务器节点事实表分片是内存数据仓库的主存储,采用列存储模型,行被按一定的记录粒度划分为列分片(column slice)。事实表行组大小设置需要保证行组列大小为闪存数据块大小的整数倍,以提高闪存存储效率,事实表列分片大小设置通常为行组记录数量的整数倍,以提高数据块合并的存储效率,同时,相对于行组大小,列分片通常采用较大的粒度,每个列分片作为独立的数据压缩存储单位,设置独立的压缩元数据,如压缩字典表等。在第四个阶段中,OLAP查询在事实表分片上的执行以列分片为单位,按列分片的数据压缩元数据访问相应列分片,完成OLAP查询处理任务。
上述各实施例仅用于说明本发明,各部件的数据结构、数据类型、应用位置及实现技术都是可以有所变化的,在本发明技术方案的基础上,凡根据本发明原理对个别部件进行的改进和等同变换,均不应排除在本发明的保护范围之外。
Claims (6)
1.一种面向数据库一体机的内存数据仓库行列存储转换实现方法,其特征在于包括以下步骤:
1)构建内存数据仓库一体机存储模型:在数据库一体机架构上,采用维表集中存储,事实表分布存储策略;
2)设置存储引擎;
所述步骤2)中,具体设置方法如下:
2.1)维表采用行存储引擎,利用成熟的事务型内存数据库***支持***、修改或删除的更新操作;维表上的查询为选择和投影操作,当维表大于预设大小且查询选择率低于预设查询选择率阈值时,其中,预设大小和预设选择率阈值根据实际情况确定,为维属性创建位图索引;
2.2)事实表存储分为两种类型:
2.2.1)在数据库一体机高性能服务器集群维表存储引擎中设置事实表缓存,用于缓存***的行存储结构事实表记录,同时设置一个内存列存储结构事实表缓存,用于实现事实表记录的内存行列转换;
2.2.2)事实表数据以水平分片方式存储于存储服务器集群;事实表存储采用列存储,事实表列按优化配置参数划分为列分片,每个列分片是一个独立的列数据压缩存储单位,独立设置列分片压缩算法及相关压缩元数据;
3)设置行列存储模型转换策略;
所述步骤3)中,具体设置方法如下:
3.1)维表映射为维度,在OLAP查询处理时维表映射为一个向量列,表示OLAP查询在维表上的选择和投影操作结果;当维表用数据库存储时,设置维表主键列为AUTO_INCREMENT类型,自动为维表分配连续的主键值,删除的记录产生缺失的主键值;
3.2)事实表数据的行列转换包括从高性能服务器集群事实表缓存到列缓存,从列缓存到闪存,从高性能服务器集群闪存到存储服务器集群闪存,从存储服务器闪存到内存,从内存行组到内存压缩列分片;
4)在数据库一体机上的实时OLAP查询处理任务分解为在主节点事实表行缓存中未进行列转换的行组、影子数据列缓存以及存储服务器节点事实表主分片上的分布式OLAP查询处理任务,实现基于实时数据上的OLAP分析处理;
所述步骤4)中,实时OLAP查询处理根据不同的优化策略执行步骤如下:
4.1)在高性能服务器主节点,事实表缓存使用行存储引擎,行缓存以优化的逻辑行组为数据管理单位,采用异步的方式通过后台工作线程将行记录转换为列记录,存储于影子列缓存,事实表缓存作为事实表最新数据分片,参与OLAP的查询处理执行;
4.2)事实表行缓存记录向影子列缓存记录转换时使用循环队列管理影子列行组数据,影子列缓存数据只用于行列转换,不提供对OLAP查询处理的支持;
4.3)内存影子列行组异步地转换为闪存列存储结构的影子块,将内存列数据物化,释放内存影子列行组空间,与事实表缓存中的其他行存储数据共同提供主节点上的OLAP查询处理支持;
4.4)存储服务器集群节点完成闪存影子块数据复制时,如果高性能服务器节点闪存空间不足,由存储服务器节点闪存影子块接替高性能服务器节点闪存影子块提供OLAP查询处理,并释放高性能服务器节点闪存中相应影子块的存储空间;
4.5)存储服务器节点采用内存循环队列加载闪存影子块数据,并将其对应的行组列按事实表列分片粒度进行列合并、列压缩,生成列分片,添加到存储服务器节点事实表分片链接表,更新事实表分片数据集;
4.6)在完成事实表列分片的持久存储后,由事实表分片承担相应的OLAP查询处理任务,存服务器节点闪存和高性能服务器节点闪存中相应的影子块数据不再承担OLAP查询处理任务,并释放其占用的存储空间。
2.如权利要求1所述的面向数据库一体机的内存数据仓库行列存储转换实现方法,其特征在于:所述步骤1)中,数据仓库中的维表集中存储于数据库一体机高性能服务器集群,维表采用多维关系模型,即维表记录映射为维度成员,维表主键映射为维度坐标。
3.如权利要求2所述的面向数据库一体机的内存数据仓库行列存储转换实现方法,其特征在于:在维表增加一个删除标志列D_Flag,逻辑标识删除的维记录,该维记录对应的主键值能分配给新***的维记录。
4.如权利要求1所述的面向数据库一体机的内存数据仓库行列存储转换实现方法,其特征在于:所述步骤1)中,事实表在数据库一体机架构中采用分布式存储策略,事实表以水平分片方式存储在存储服务器集群节点,事实表分片采用列存储,列按照优化的行数划分为列分片,列分片作为列数据压缩存储单位。
5.如权利要求1所述的面向数据库一体机的内存数据仓库行列存储转换实现方法,其特征在于:所述步骤3.2)中,具体步骤如下:
3.2.1)高性能服务器集群事实表缓存以优化的行组数对***记录进行逻辑分区,以行组为单位异步地将***的事实表行记录以列为单位存储在列缓存中,作为事实表行记录的影子列,不参与查询处理;
3.2.2)以循环队列的方式组织以行组为单位的列缓存,在队列尾***新的行组列数据;
3.2.3)列缓存异步地以列为单位将内存行组列存储为闪存行组列,完成闪存存储的内存行组列被循环队列头新***的行组列覆盖,复用列缓存空间;
3.2.4)闪存行组列异步地按事实表分布存储策略从高性能服务器集群节点复制到对应的存储服务器集群节点闪存中;
3.2.5)存储服务器闪存中的行组列加载为内存行组列,作为存储服务器集群节点上的影子列,影子列同样采用循环队列结构组织内存行组列;
3.2.6)以异步的方式将若干个行组列整合为列存储结构的列分片,列分片作为独立的数据压缩单元,根据数据特征和数据访问需求选择压缩方法,列分片与其他事实表列分片组成存储服务器节点事实表分片。
6.如权利要求1所述的面向数据库一体机的内存数据仓库行列存储转换实现方法,其特征在于:所述步骤4.3)中,当主节点内存空间不足时,影子块作为事实表缓存记录的闪存复本能提供基于闪存的列存储结构事实表分片数据访问,提供基于闪存影子块的OLAP查询处理任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710064124.XA CN106874437B (zh) | 2017-02-04 | 2017-02-04 | 面向数据库一体机的内存数据仓库行列存储转换实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710064124.XA CN106874437B (zh) | 2017-02-04 | 2017-02-04 | 面向数据库一体机的内存数据仓库行列存储转换实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106874437A CN106874437A (zh) | 2017-06-20 |
CN106874437B true CN106874437B (zh) | 2019-08-23 |
Family
ID=59165924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710064124.XA Active CN106874437B (zh) | 2017-02-04 | 2017-02-04 | 面向数据库一体机的内存数据仓库行列存储转换实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874437B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069487A (zh) * | 2017-09-28 | 2019-07-30 | 北京国双科技有限公司 | 一种数据处理方法、装置及*** |
CN107818155A (zh) * | 2017-10-27 | 2018-03-20 | 许继电气股份有限公司 | 一种配电主站及配电主站数据的存储方法 |
CN109842653B (zh) * | 2017-11-27 | 2022-04-01 | 大唐移动通信设备有限公司 | 一种进行数据传输的方法和设备 |
CN110309233B (zh) * | 2018-03-28 | 2022-11-15 | 腾讯科技(深圳)有限公司 | 数据存储的方法、装置、服务器和存储介质 |
CN108959354A (zh) * | 2018-05-04 | 2018-12-07 | 北京小米移动软件有限公司 | 数据处理方法、装置及服务器 |
CN109344239A (zh) * | 2018-09-20 | 2019-02-15 | 四川昆仑智汇数据科技有限公司 | 一种基于时序特征的业务过程模型查询方法及查询*** |
CN109701275B (zh) * | 2018-12-11 | 2022-04-22 | 北京像素软件科技股份有限公司 | 基于网络游戏影子角色的操作交互方法及装置 |
US10909101B2 (en) | 2019-04-19 | 2021-02-02 | Advanced New Technologies Co., Ltd. | Updating and querying a bitmap index |
CN110059090B (zh) * | 2019-04-19 | 2020-11-03 | 创新先进技术有限公司 | 一种位图索引的写入/转储/合并/查询方法和装置 |
CN111949648B (zh) * | 2019-05-14 | 2024-03-01 | 北京沃东天骏信息技术有限公司 | 内存缓存数据***和数据索引方法 |
CN112579706A (zh) * | 2019-09-27 | 2021-03-30 | 景超 | 一种数据仓库模型及其应用 |
CN110704488B (zh) * | 2019-09-29 | 2022-02-08 | 北京元年科技股份有限公司 | 用于管理数据的方法及相应的***、计算机设备和介质 |
CN110990402B (zh) * | 2019-11-26 | 2020-11-13 | 中科驭数(北京)科技有限公司 | 由行存储到列存储的格式转化方法、查询方法及装置 |
CN113268317B (zh) * | 2020-02-17 | 2023-10-31 | 北京搜狗科技发展有限公司 | 一种任务处理方法、装置及电子设备 |
CN113297244B (zh) * | 2020-05-29 | 2022-05-06 | 阿里巴巴集团控股有限公司 | 数据库操作方法、装置、设备及存储介质 |
CN111737364B (zh) * | 2020-07-22 | 2020-12-11 | 同盾控股有限公司 | 安全多方数据融合与联邦共享方法、装置、设备及介质 |
CN111984696B (zh) * | 2020-07-23 | 2023-11-10 | 深圳市赢时胜信息技术股份有限公司 | 一种新型数据库和方法 |
CN113064919B (zh) * | 2021-03-31 | 2022-11-22 | 北京达佳互联信息技术有限公司 | 数据处理方法、数据存储***、计算机设备及存储介质 |
CN113867649B (zh) * | 2021-10-20 | 2024-05-10 | 上海万向区块链股份公司 | 自适应的区块链数据存储插件化的***与方法 |
CN114706861B (zh) * | 2022-06-08 | 2022-09-16 | 天津南大通用数据技术股份有限公司 | 一种在列存储引擎中按列动态分组存储的方法 |
US20240004902A1 (en) * | 2022-06-29 | 2024-01-04 | International Business Machines Corporation | Performance of row table to columnar table replication |
CN115438114B (zh) * | 2022-11-09 | 2023-03-24 | 浪潮电子信息产业股份有限公司 | 存储格式转换方法、***、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663116B (zh) * | 2012-04-11 | 2014-04-23 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
CN102663114B (zh) * | 2012-04-17 | 2013-09-11 | 中国人民大学 | 面向并发olap的数据库查询处理方法 |
CN103345518B (zh) * | 2013-07-11 | 2016-08-10 | 清华大学 | 基于数据块的自适应数据存储管理方法及*** |
-
2017
- 2017-02-04 CN CN201710064124.XA patent/CN106874437B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106874437A (zh) | 2017-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874437B (zh) | 面向数据库一体机的内存数据仓库行列存储转换实现方法 | |
US9501550B2 (en) | OLAP query processing method oriented to database and HADOOP hybrid platform | |
CN104866608B (zh) | 一种数据仓库中基于连接索引的查询优化方法 | |
CN103942342B (zh) | 一种内存数据库oltp&olap并发查询优化方法 | |
CN108600321A (zh) | 一种基于分布式内存云的图数据存储方法和*** | |
Santos et al. | Real-time data warehouse loading methodology | |
US20080059492A1 (en) | Systems, methods, and storage structures for cached databases | |
Hubail et al. | Couchbase analytics: NoETL for scalable NoSQL data analysis | |
EP2577511A1 (en) | Query execution systems and methods | |
CN104376109B (zh) | 一种基于数据分布库的多维度数据分布方法 | |
CN104572505B (zh) | 一种保证海量数据缓存最终一致性的***及方法 | |
CN103473260A (zh) | 一种面向并发olap的测试数据分层聚簇查询处理***及方法 | |
US11782924B2 (en) | Distributed join index for shared-nothing and log-structured databases | |
Mohan et al. | Parallelism in relational database management systems | |
CN106155934A (zh) | 一种云环境下基于重复数据的缓存方法 | |
US12013854B2 (en) | Methods and systems for transforming distributed database structure for reduced compute load | |
CN108228725B (zh) | 基于分布式数据库的gis应用*** | |
CN115114294A (zh) | 数据库存储模式的自适应方法、装置、计算机设备 | |
CN116541427A (zh) | 数据查询方法、装置、设备及存储介质 | |
Arnold et al. | A high-performance distributed relational database system for scalable OLAP processing | |
Santos et al. | Leveraging 24/7 availability and performance for distributed real-time data warehouses | |
CN105573834B (zh) | 一种基于异构平台的高维词汇树构建方法 | |
Tarun et al. | Distributed Database Systems Design Challenges and Countermeasures-A Study | |
He et al. | Continuously Bulk Loading over Range Partitioned Tables for Large Scale Historical Data | |
Zhu et al. | Research and application of data partition technology in distributed database |
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 |