CN117648385A - 适用于多维数据库的内外存压缩及元组更新插入方法 - Google Patents
适用于多维数据库的内外存压缩及元组更新插入方法 Download PDFInfo
- Publication number
- CN117648385A CN117648385A CN202311579994.2A CN202311579994A CN117648385A CN 117648385 A CN117648385 A CN 117648385A CN 202311579994 A CN202311579994 A CN 202311579994A CN 117648385 A CN117648385 A CN 117648385A
- Authority
- CN
- China
- Prior art keywords
- tuple
- block
- value
- index
- data
- 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.)
- Pending
Links
- 238000007906 compression Methods 0.000 title claims abstract description 59
- 230000006835 compression Effects 0.000 title claims abstract description 59
- 238000012966 insertion method Methods 0.000 title claims abstract description 6
- 238000000034 method Methods 0.000 claims abstract description 45
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 24
- 238000003780 insertion Methods 0.000 claims abstract description 18
- 230000037431 insertion Effects 0.000 claims abstract description 18
- 238000012217 deletion Methods 0.000 claims abstract description 7
- 230000037430 deletion Effects 0.000 claims abstract description 7
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 13
- 239000011159 matrix material Substances 0.000 abstract description 8
- 238000013461 design Methods 0.000 abstract description 6
- 230000003068 static effect Effects 0.000 abstract description 3
- 238000012937 correction Methods 0.000 abstract description 2
- 238000003491 array Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000013144 data compression Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000002243 precursor Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一种适用于多维数据库的内外存压缩及元组更新插入方法,涉及多维数据库技术领域,方法包括:基于扩展压缩行储存xCRS算法,对多维数据库的所有元组进行压缩;并基于该压缩算法计算所述元组压缩后在所述多维度数据库底层块存储中所对应的磁盘区块编号、块内索引以及偏移量,完成对压缩后的所述元组的查询;基于所述磁盘区块编号和块内索引,完成对所述元组的更新;在处理插入请求时,首先查询待插入元组在压缩结构中的前序节点,并基于查询到的所述元组的前序节点,在增量缓冲区中插入新的元组;该方法设计了将压缩行存储适用的范围从静态的多维矩阵扩展到灵活支持增删改查的多维数据库中的xCRS算法、增量缓冲区的结构和相关算法,用于处理多维压缩行存储xCRS表中增量数据的问题,同时能够用于工程实践。
Description
技术领域
本发明涉及多维数据库技术领域。
背景技术
关系型数据库理论对数据库相关信息技术领域的产业发展起到了推动作用,但是在技术高速更新换代的今天,关系型数据库的局限性伴随着信息技术的大规模应用逐步体现出来。对于现实物理世界中存在的大量多维数据,基于关系模式的关系型数据库很难建立一个直接的模型,这会对多维数据模型的设计还是后续的多维数据查询优化产生很大的影响,导致其在处理相对复杂的多维度事务时面临着很大的局限性。
相比于传统的关系数据库,多维数据库所采用的数据模型可以简洁地对真实物理世界中的事务进行直观描述,而不必对其进行解构进而抽象表达出技术上能够处理的模型,因为多维数据库中的数据是以数组形式存放的,所以其可以更新数据而无需索引,因此多维数据库非常适合于大规模多维度数据的存储,查询和分析等应用。
多维数据库可以被认为是一种针对多维数据的在线分析处理(OLAP)程序的需求进行特殊适配的数据库,其将关系型数据库中的所有二维表共同构建一个“数据立方体”,将多个表中具有关系的若干条表数据映射为多维空间中的一个点,从理论上讲,多维数据库由于减少了冗余的关系表所附属数据,在数据存储要求相同的情况下,多维数据库在理论上拥有比关系数据库更加高效的存储结构,对数据的检索也拥有更好的查询处理性能,同时,数据科学家可以通过更为直观的多维视图来观察数据,进而对其进行各种分析和挖掘等操作。
多维数据库在数据建模、数据分析和挖掘潜在信息等领域有比关系型数据库有更好的表现和性能,但是它也像传统关系型数据库一样面临着各种数据库领域需要解决的问题,例如数据库管理系统如何在有限的主存和外存中更有效地存储和管理庞大的数据量。基于实际业务数据的特性,多维数据库中存在大量稀疏矩阵,就会产生空间浪费和不必要的IO代价。
传统的对海量数据进行存储的方式是使用并行环境与分布式处理系统对大数据进行分布式处理,或是通过海量的存储空间将大数据进行装载然后再根据大数据处理算法,或者是大数据计算框架进行计算。这种处理方式虽然能带来效率上的提高,但是却会产生大量计算资源的消耗,分布式的处理系统难以避免随之产生的通信延迟;同时随着数据量的扩增,硬件资源也需要同步扩增,因此一味的消耗资源来处理海量数据问题不能称之为一个长久之计。传统的基于压缩行存储(CRS)对多维数据进行稀疏数据的压缩是一种很好的思路,但是面对多维数据库这种需要大批量增删改查的业务需求的支持较差。
因此,如何提供一种适用于多维数据压缩的扩展方法,使得存储的利用率提高,从而压缩多维数据所占用的空间,同时还能提高多维数据上执行查询或更新的速度,成为本领域亟待解决的技术问题。
发明内容
为了解决上述技术问题,本发明提供了一种适用于多维数据库的内外存压缩及元组更新插入方法,该方法设计了将压缩行存储适用的范围从静态的多维矩阵扩展到支持增删改查的多维数据库中的xCRS算法、增量缓冲区的结构和相关算法,用于处理多维压缩行存储xCRS表中增量数据的问题,同时能够用于工程实践。
基于同一发明构思,本发明具有四个独立的技术方案:
1、一种适用于多维数据库的内外存压缩及元组更新插入方法,包括如下步骤:
S1、基于扩展压缩行储存xCRS算法,对多维数据库的所有元组进行压缩;
S2、计算压缩后的元组在所述多维度数据库底层块存储中所对应的磁盘区块编号、块内索引以及偏移量,完成对压缩后的所述元组的查询;
S3、基于所述磁盘区块编号和块内索引,完成对所述元组的更新;
S4、获取待插入元组的前序节点元组,并基于步骤S2的方法对所述前序节点元组进行查询,再基于所述前序节点元组将所述待插入元组插入至增量缓冲区。
进一步地,步骤S1包括:
S11、创建压缩控制信息,包括:经压缩后数据元组的总数,rptr在磁盘区块中的偏移量,cind在磁盘区块中的偏移量,以及val所在磁盘区块的偏移量;
S12、使用一个循环对迭代器中的元组进行遍历,并保存压缩相关信息;
所述遍历过程包括:
根据所述元组中预先设置好的列维度d0中的成员的编号作为该元组的cind值,并保存在记录cind信息的磁盘块对应的位置上;
根据所述元组上数据的值val作为其数据,并保存在记录val信息的磁盘块区间中对应磁盘位置上对应块内位置中;
遍历去掉预设选择的列维度d0的统计剩余维度,计算出所述元组所在行的行编号,同时对所述行编号进行更新。
进一步地,步骤S2包括:
首先初始化磁盘区块编号和块内索引为0;
获取查询元组中各个成员的编号;
根据d0-dn-1维的信息计算元组在步骤S1构建的xCRS表中对应的行索引,根据d0维的信息计算元组在所述xCRS表中对应的列索引;
根据所述行索引从所述xCRS表中查得对应行的起始偏移量;
确定存在的元组并遍历,直到找到输入元组的cind值等于xCRS表中的cind值记录,该记录对应的val表中的取值即为要找的元组的值;
根据上一步的遍历变量确定磁盘区块编号和块内索引,所述磁盘区块编号的值为遍历变量除以每个数据块中装载的最大数据量得出,所述块内索引为遍历变量除以每个数据块中装载的最大数据量的计算取余得出;
根据块内索引计算偏移量,以及所述偏移量在块中对应段的基础偏移量。
进一步地,所述确定存在的元组,包括:
获取startOffset值不等于-1的位置的元组,作为起始位置;
基于所述行索引遍历元组,直到找到下一个startOffset值不等于-1的位置,作为终止位置,根据所述起始位置和所述终止位置确定存在的元组的范围。
进一步地,步骤S3包括:
根据所述磁盘区块编号和块内索引更新对应位置的数据val值。
进一步地,步骤S4包括:
收到插入请求后,根据待插入元组的信息查询其对应的前序节点元组;
计算出所述前序节点元组对应的磁盘区块编号和块内索引;
创建新的增量缓冲单元,并根据所述前序节点元组设置行索引和列偏移量,将下一个增量缓冲单元的地址初始化为空;
将所述增量缓冲单元插入多维数据库的增量缓冲区中。
进一步地,所述对所述元组的更新还包括:根据所述磁盘区块编号和块内索引将对应位置val值设为空值,实现元组删除。
2、一种适用于多维数据库的内外存压缩及元组更新插入装置,包括:
压缩模块,用于基于扩展压缩行储存xCRS算法,对多维数据库的所有元组进行压缩;
查询模块,用于计算所述元组在所述多维度数据库底层块存储中所对应的磁盘区块编号、块内索引以及偏移量,完成对压缩后的所述元组的查询;
更新模块,用于基于所述磁盘区块编号和块内索引,完成对所述元组的更新;
插入模块,用于将所述查询模块中查询到的所述元组作为前序节点,插入新的元组。
3、一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法。
4、一种电子设备,包括处理器和存储装置,所述存储装置中存有多条指令,所述处理器用于读取所述存储装置中的多条指令并执行上述方法。
本发明提供的适用于多维数据库的内外存压缩及元组更新插入方法,至少包括如下有益效果:
(1)对扩展压缩行储存算法进行了改进,在其基础上提出了一种基于链表和缓冲区的压缩行储存的压缩算法,使其满足多维数据库的需求,设计了一个适用于商用多维数据库系统GmmCube的内外存压缩模块;
(2)该方法能够节约存储空间,相比于原有基于多维矩阵的数据存储模块在测试数据集上能节约90%的物理存储空间,同时在访问数据时,该模块通过局部性优化使得对数据进行查询和检索的效率也有所提升。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为多维矩阵在空间中的示意图;
图2为多维矩阵压缩得到的结果图;
图3为在xCRS表中增加nextptr行的示意图;
图4为扩展压缩行储存增量缓冲区设计示意图;
图5为本发明提供的适用于多维数据库的内外存压缩及元组更新插入方法一种实施例的流程图;
图6为对多维数据库的所有元组进行压缩方法的步骤示意图;
图7为完成对压缩后的所述元组的查询的步骤示意图;
图8为插入新的元组数据的步骤示意图;
图9为多维数据压缩增量缓存的设计示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其它情况下,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本申请,但是本申请还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施例的限制。
本发明的实施例基于现有的压缩技术进行扩展,以下对本发明基于的技术基础进行说明。
1、行压缩格式与扩展压缩行储存方法
行压缩格式(Compressed Row Storage,CRS)是一种广泛使用的数据压缩算法,该算法将原有的二维空间中的点映射到三个一维空间中(亦可以理解为三个一维数组),三个一维空间分别为:元素的值,元素所在行的列号,以及每个数据行的偏移量。行压缩格式是一种全局的编码格式,数值行和列号行的记录分别记录非零元素的数值及其所在行的列索引,而行偏移则表示某一行的第一个元素在值数组中的位置。
多维稀疏矩阵压缩在多维数据库上能具体实现的主要方法有在行压缩储存格式在多维数据上进行改进的扩展压缩行储存法,具体思想是在在压缩行储存方法的基础上,将该方法适用的维度从二维的行和列扩展到K-维空间(k>2),其技术方案如下:
为了在多维空间使用CRS方法,需要选取一种映射,将k维数组转换到压缩行储存方法中的行和列的形式,具体的操作是将原本的k-维空间映射到一个含有行(Dj为第j个维度d构成集合的势)的二维形式;在这种映射的作用下,原多维空间的每一个行元素能够转化为一个独一无二的键值(key),这个键值则又是通过行偏移量row offsets和维度d0的索引值共同决定的;对于行偏移量,它使用k-1个索引值,比如nk-1,…,n2,n1来表示;而对于行中的每一个元素使用,进一步地可以使用/>的形式计算;因此通过这种维度映射,对于每一个行元素都能计算出一个独一无二的键值。
2、扩展压缩行储的存数据结构实现形式
根据上面的内容,我们可以得出扩展压缩行储存对多维数据中的非零元素的储存方式:对于数据记录本身和它们在原有的多维矩阵中对应的维度d0的索引被储存在两个一维数组:val值和cind值;除此之外,还需要再使用一个一维数组rptr来储存cind中每个行的起始位置,如果xCRS中的行没有有效的元素,那么这个一行的起始位置就被标记为缺省值“-1”。在xCRS中,每一个行在rptr中都有一个条目,其位置对应着这个行的行偏移值(rowoffset),所以我们可以定义:一个xCRS表是由三个一维数组val和cind和rptr组成的数据表,图1和图2给出xCRS存储的一种案例。
扩展压缩行储存在多维数组上具有简单且高效的特性,但是这种存储格式更适用于存储静态的多维数据;出于多维数据库频繁更新的特性,我们需要对其进行修改以适配增删改的需求。
对于扩展行储存格式,如果需要对压缩后数据进行删除或者是修改的话,只需要先根据压缩后的偏移量计算出这个值在value数组中的位置,再根据索引从压缩后的非零数据对应位置修改即可,如果是删除的话,将该处记录设置为空值;如果是需要更改的话,只需要修改该处的数值为新的数值即可完成修改与删除操作。以下介绍本发明实施例方法基于的原理及理论基础。
1、扩展压缩行储存对增加操作的支持
在展开对扩展压缩行储存插的增加操作讨论之前,需要提出多维空间下的前序节点这一概念,定义为:n维空间中的点a(<(a1,a2,......,an),vala>)是点b(<(b1,b2,......,bn),valb>)的前序节点,当且仅当点a是满足而/>最大的点。
其中,C是一个保存多维行的倍率系数的一维数组,满足而Dr表示多维空间的维度r中的所有元素构成集合的势。
这里提出一种基于链表的扩展压缩行储存增量支持,在原有的压缩后的三个行数组构成的表的基础上,增加一个指针行,用于储存“溢出”的增量内容,记录其为nextptr行,其结构如图3所示。
对于增量缓冲区,其设计思路借鉴于哈希桶算法,而与之不同的每个前序节点对应一个链表,链表上则新增加的数据,采用链表的数据结构,使得可以按照节点可以按照的顺序进行排序,在增量缓冲区中选择合适的位置,然后进行时间复杂度为O(1)的链表插入操作即可,其结构如图4所示。
这样,每当收到一个插入新记录的请求时,对于n维空间,假设其为新插入记录在该空间中的元组为m(<(m1,m2,......,mn),valm>),
首先便需要在xCRS表中找到其前序节点m0,
然后从该记录的nextptr行中得到该条记录对应的插入缓冲区地址addr(m0),在该地址对应的链表头进行判断,如果为空,则直接将该条插入的数据登记到记录,该记录的row设置为cind设置为mn,val可以设置为新插入记录的数值valm,nextptr设置为空即可;
如果链表头不为空,则开始比较的数值,直到在链表中可以找到mprev,mafter的位置满足/>当且仅当存在有不等式/>成立;
此时在链表中的节点mprer,mafter之间插入新的记录即可。
实施例一:
参见图3,在一些实施例中,提供一种适用于多维数据库的内外存压缩的元组更新及插入方法,包括如下步骤:
S1、基于扩展压缩行储存xCRS算法,对多维数据库的所有元组进行压缩;
S2、计算压缩后的元组在所述多维度数据库底层块存储中所对应的磁盘区块编号、块内索引以及偏移量,完成对压缩后的所述元组的查询;
S3、基于所述磁盘区块编号和块内索引,完成对所述元组的更新;
S4、获取待插入元组的前序节点元组,并基于步骤S2的方法对所述前序节点元组进行查询,再基于所述前序节点元组将所述待插入元组插入至增量缓冲区。
具体地,步骤S1中,输入为装载有多维数据元组tuple的迭代器iterator,以及每个磁盘块最大装载数量maxNumberOfValuePerBlock。
输出为xCRS表,包含val值,cind值,rptr值三行。val值也叫value值,用于存储数据记录本身;cind值用于存储数据在原有的多维矩阵中对应的维度d0的索引;rptr值用于储存cind值中每个行的起始位置。也即,数据记录本身对应的数值在压缩后的xCRS表中被存储为val列,数据记录所在d0维的位置在压缩后的xCRS表中被存储为cind列,被折叠为行的维度d0-dn-1的信息存在xCRS表中的rptr行中。
步骤S1具体包括如下步骤:
S11、创建压缩控制信息,包括:经压缩后数据元组的总数,rptr在磁盘区块中的偏移量,cind在磁盘区块中的偏移量,和val所在磁盘区块的偏移量
S12、使用一个循环对迭代器中的元组进行遍历,并保存压缩相关信息;
所述遍历过程包括:
根据所述元组中预先设置好的列维度d0中的成员的编号作为该元组的cind值,并保存在记录cind信息的磁盘块对应的位置上;
根据所述元组上数据的值val作为其数据,并保存在记录val信息的磁盘块区间中对应磁盘位置上对应块内位置中;
遍历去掉预设选择的列维度d0的统计剩余维度,计算出所述元组所在行的行编号,同时对所述行编号进行更新。
具体步骤参见图5伪代码,实现从多维数据到xCRS表的构建:
第一步:创建压缩控制信息CompressCtrlData,其中记录了经压缩后数据元组的总数,rptr表在磁盘区块中的位置(以偏移量的形式),cind表在磁盘区块中的偏移量,和val表所在磁盘区块的偏移量。
第二步:使用一个循环对迭代器iterator中的元组tuple进行遍历:
a.根据元组tuple中预先设置好的列维度d0中的成员member的编号(no)作为该元组的cind值,将保存在记录cind信息的磁盘块对应的位置上。
b.根据元组tuple上数据的值value作为其数据,将保存在记录value磁盘块区间中对应磁盘位置上对应块内位置中。
c.遍历统计剩余的维度(去掉预设选择的列维度d0),计算出元组所在行的行编号rowIndex,同时对其进行更新。
第三步:保存压缩相关信息CompressCtrlData
第四步:初始化压缩扩展缓冲区,以备后续的插入使用。
优选地,步骤S2的算法用于在多维数据库存储引擎中处理元组访存的过程,具体功能是根据多维数据元组包含的信息计算其在多维度数据库底层块存储中所对应的的块号(blockNumber)、单元索引(cellIndex)、偏移量(offset)等信息。参见图6,包括如下步骤:
S21、首先初始化磁盘区块编号blockNumber和块内索引cellIndex为0;
S22、获取查询元组tuple中各个member的编号memnos;
S23、根据d0-dn-1维的信息计算元组在步骤S1构建的xCRS表中对应的行索引tupleRowIndex,根据d0维的信息计算元组在所述xCRS表中对应的列索引tupleCind;
S24、根据所述行索引tupleRowIndex从所述xCRS表中查得对应行的起始偏移量startIndex;
S25、确定存在的元组并遍历,直到找到输入元组的cind值等于xCRS表中的cind值记录,该记录对应的value表中的取值即为要找的元组的值;
S26、根据上一步的遍历变量确定磁盘区块编号和块内索引,所述磁盘区块编号的值为遍历变量index除以每个数据块中装载的最大数据量得出,所述块内索引为遍历变量index除以每个数据块中装载的最大数据量的计算取余得出;
S27、根据块内索引计算偏移量offset,以及所述偏移量在块中对应段的基础偏移量baseOffset。一个数据块Block中有多个数据段Segment。
其中,在xCRS表中,每一个行具有一个独一无二的行编号,被称为行编号RowIndex,这个RowIndex的计算是由该行对应维度d1-dn-1中的成员member(member是多维数据库为了方便业务而抽象出的一个概念,这里可以理解为多维数据元组在这个维度上的取值)的所具有的信息计算而出。其他涉及到的参数参见表1。
表1
blockNumber | 数据所处的块号 |
cellIndex | 数据所处块内部地址索引 |
offset | 数据块内偏移量(cellIndex*Sizeof(data)) |
baseOffset | 数据段的基础偏移量(相较于其他数据段) |
优选地,所述确定存在的元组,包括:
获取startOffset值不等于-1的位置的元组,作为起始位置;
基于所述行索引遍历元组,直到找到下一个startOffset值不等于-1的位置,作为终止位置,根据所述起始位置和所述终止位置确定存在的元组的范围。
需要说明的是,startOffset值为预先设定的值,如果startOffset值不等于-1,表示压缩元组所属的行存在,否则便表示该元组对应的行不存在,同时该元组页不存在。
优选地,步骤S4包括:
S41、收到插入请求后,查询待插入元组在压缩结构中的前序节点元组;
S42、计算出所述前序节点元组对应的磁盘区块编号和块内索引;
S43、创建新的增量缓冲单元,并根据所述前序节点元组设置行索引和列偏移量,将下一个增量缓冲单元的地址初始化为空;
S45、将所述增量缓冲单元插入多维数据库的增量缓冲区中。
多维数据压缩增量缓存模块主要实现对扩展压缩行储存的增量支持。主要结构为一个支持动态扩展的缓冲区CompressExtendBuffer,每当数据块系统存储引擎收到一个插入请求时,会首先根据插入元组的信息查询其对应的前序节点的位置及其在插入缓冲区中的地址,然后在缓冲区中对应位置插入该条记录,每当数据块查询引擎需要对一条面向新插入数据进行查询获取其数值时,则在缓冲区中沿着缓冲区对应的链表访问对应的值即可,插入过程的伪代码流程大致如图8提供的算法所示。参见图9,本方法在原有的压缩后的三个行数组构成的表的基础上,增加一个指针行,用于储存“溢出”的增量内容,记录其为nextptr行。在增量缓冲区插入新的数据,每当数据库系统存储引擎收到一个插入请求时,算法会执行以下的操作:
1.首先根据插入元组的信息查询其对应的前序节点元组Tupleforward;
2.然后计算出前序节点元组Tupleforward的磁盘区块编号blockNumber和块内索引cellIndex;
3.然后创建新的xCRSUnit增量缓冲单元,并设置其属性:rowIndex(前文提到的行索引),cind(d0维度上的列偏移量),下一个增量缓冲单元的地址nextptr(初始化为空);
4.最后将其插入多维数据库的增量缓冲区中,等待时机合并进主数据区。
如果新插入的数据过多,多维数据块数据引擎可能会因为链表过长导致查询性能的下降,因此需要对增量缓冲区定时与主数据区进行合并,合并的时机可以是用户主动发出请求或者是管理模块检测到满足特定的条件,在增量缓冲区合并到主数据表时,存储引擎会将多维数据压缩后的xCSR表和增量缓冲区重新读取到内存,然后重新计算一次新xCSR表即可。
作为一种较优的实施方式,步骤S3包括:
根据所述磁盘区块编号和块内索引更新对应位置的数据val值。
作为一种较优的实施方式,所述对所述元组的更新还包括:根据所述磁盘区块编号和块内索引将对应位置val值设为空值,实现元组删除。如果需要对压缩后数据进行删除或者是修改的话,只需要先根据压缩后的偏移量计算出这个值在value数组中的位置,再参考步骤S2根据索引从压缩后的非零数据对应位置修改即可,如果是删除的话,将该处记录设置为空值;如果是需要更改的话,只需要修改该处的数值为新的数值即可完成修改与删除操作。
具体地,根据步骤S2对应的算法5-7中的calcIndex(tuple)计算出需要更新\删除元组在物理存储中的value表中对应的位置(块标号blockNumber和块内索引cellIndex);更新该位置(块标号blockNumber和块内索引cellIndex)对应的数据val。
实施例二:
在一些实施例中,提供一种适用于多维数据库的内外存压缩的元组更新及插入装置,包括:
压缩模块,用于基于扩展压缩行储存xCRS算法,对多维数据库的所有元组进行压缩;
查询模块,用于计算所述元组在所述多维度数据库底层块存储中所对应的磁盘区块编号、块内索引以及偏移量,完成对压缩后的所述元组的查询;
更新模块,用于基于所述磁盘区块编号和块内索引,完成对所述元组的更新;
插入模块,用于将所述查询模块中查询到的所述元组作为前序节点,插入新的元组。
实施例三:
在一些实施例中,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法。
实施例四:
在一些实施例中,提供一种电子设备,包括处理器和存储装置,所述存储装置中存有多条指令,所述处理器用于读取所述存储装置中的多条指令并执行上述方法。
应当理解,在本申请实施例中,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或该处理器也可以是任何常规的处理器等。
存储器可以包括只读存储器、快闪存储器和随机存储器,并向处理器提供指令和数据。存储器的一部分或全部还可以包括非易失性随机存取存储器。
应当理解,上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述计算机程序可存储于以计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其他的方式实现。例如,以上所描述的装置/设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种适用于多维数据库的内外存压缩及元组更新插入方法,其特征在于,包括如下步骤:
S1、基于扩展压缩行储存xCRS算法,对多维数据库的所有元组进行压缩;
S2、计算压缩后的元组在所述多维度数据库底层块存储中所对应的磁盘区块编号、块内索引以及偏移量,完成对压缩后的所述元组的查询;
S3、基于所述磁盘区块编号和块内索引,完成对所述元组的更新;
S4、获取待插入元组的前序节点元组,并基于步骤S2的方法对所述前序节点元组进行查询,再基于所述前序节点元组将所述待插入元组插入至增量缓冲区。
2.根据权利要求1所述的方法,其特征在于,步骤S1包括:
S11、创建压缩控制信息,包括:经压缩后数据元组的总数,rptr在磁盘区块中的偏移量,cind在磁盘区块中的偏移量,以及val所在磁盘区块的偏移量;
S12、使用一个循环对迭代器中的元组进行遍历,并保存压缩相关信息;
所述遍历过程包括:
根据所述元组中预先设置好的列维度d0中的成员的编号作为该元组的cind值,并保存在记录cind信息的磁盘块对应的位置上;
根据所述元组上数据的值val作为其数据,并保存在记录val信息的磁盘块区间中对应磁盘位置上对应块内位置中;
遍历去掉预设选择的列维度d0的统计剩余维度,计算出所述元组所在行的行编号,同时对所述行编号进行更新。
3.根据权利要求2所述的方法,其特征在于,步骤S2包括:
首先初始化磁盘区块编号和块内索引为0;
获取查询元组中各个成员的编号;
根据d0-dn-1维的信息计算元组在步骤S1构建的xCRS表中对应的行索引,根据d0维的信息计算元组在所述xCRS表中对应的列索引;
根据所述行索引从所述xCRS表中查得对应行的起始偏移量;
确定存在的元组并遍历,直到找到输入元组的cind值等于xCRS表中的cind值记录,该记录对应的val表中的取值即为要找的元组的值;
根据上一步的遍历变量确定磁盘区块编号和块内索引,所述磁盘区块编号的值为遍历变量除以每个数据块中装载的最大数据量得出,所述块内索引为遍历变量除以每个数据块中装载的最大数据量的计算取余得出;
根据块内索引计算偏移量,以及所述偏移量在块中对应段的基础偏移量。
4.根据权利要求3所述的方法,其特征在于,所述确定存在的元组,包括:
获取startOffset值不等于-1的位置的元组,作为起始位置;
基于所述行索引遍历元组,直到找到下一个startOffset值不等于-1的位置,作为终止位置,根据所述起始位置和所述终止位置确定存在的元组的范围。
5.根据权利要求1所述的方法,其特征在于,步骤S3包括:
根据所述磁盘区块编号和块内索引更新对应位置的数据val值。
6.根据权利要求1所述的方法,其特征在于,步骤S4包括:
收到插入请求后,根据待插入元组的信息查询其对应的前序节点元组;
计算出所述前序节点元组对应的磁盘区块编号和块内索引;
创建新的增量缓冲单元,并根据所述前序节点元组设置行索引和列偏移量,将下一个增量缓冲单元的地址初始化为空;
将所述增量缓冲单元插入多维数据库的增量缓冲区中。
7.根据权利要求1所述的方法,其特征在于,所述对所述元组的更新还包括:根据所述磁盘区块编号和块内索引将对应位置val值设为空值,实现元组删除。
8.一种适用于多维数据库的内外存压缩及元组更新插入装置,其特征在于,包括:
压缩模块,用于基于扩展压缩行储存xCRS算法,对多维数据库的所有元组进行压缩;
查询模块,用于计算所述元组在所述多维度数据库底层块存储中所对应的磁盘区块编号、块内索引以及偏移量,完成对压缩后的所述元组的查询;
更新模块,用于基于所述磁盘区块编号和块内索引,完成对所述元组的更新;
插入模块,用于将所述查询模块中查询到的所述元组作为前序节点,插入新的元组。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一所述的方法。
10.一种电子设备,包括处理器和存储装置,其特征在于,所述存储装置中存有多条指令,所述处理器用于读取所述存储装置中的多条指令并执行如权利要求1-7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311579994.2A CN117648385A (zh) | 2023-11-24 | 2023-11-24 | 适用于多维数据库的内外存压缩及元组更新插入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311579994.2A CN117648385A (zh) | 2023-11-24 | 2023-11-24 | 适用于多维数据库的内外存压缩及元组更新插入方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117648385A true CN117648385A (zh) | 2024-03-05 |
Family
ID=90044350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311579994.2A Pending CN117648385A (zh) | 2023-11-24 | 2023-11-24 | 适用于多维数据库的内外存压缩及元组更新插入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117648385A (zh) |
-
2023
- 2023-11-24 CN CN202311579994.2A patent/CN117648385A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5943677A (en) | Sparsity management system for multi-dimensional databases | |
CN110413611B (zh) | 数据存储、查询方法及装置 | |
CN101916261B (zh) | 一种分布式并行数据库系统的数据分区方法 | |
CA2723731C (en) | Managing storage of individually accessible data units | |
Buccafurri et al. | A quad-tree based multiresolution approach for two-dimensional summary data | |
Almodaresi et al. | An efficient, scalable, and exact representation of high-dimensional color information enabled using de Bruijn graph search | |
US20120303633A1 (en) | Systems and methods for querying column oriented databases | |
CN102737033A (zh) | 数据处理设备及其数据处理方法 | |
CN110990402B (zh) | 由行存储到列存储的格式转化方法、查询方法及装置 | |
CN104866608A (zh) | 一种数据仓库中基于连接索引的查询优化方法 | |
WO2006046669A1 (ja) | データベース管理装置、方法、プログラム | |
CN103942342A (zh) | 一种内存数据库oltp&olap并发查询优化方法 | |
Namiot | Time Series Databases. | |
CN106471501B (zh) | 数据查询的方法、数据对象的存储方法和数据系统 | |
US20130325900A1 (en) | Intra-block partitioning for database management | |
CN103678519A (zh) | 一种支持Hive DML增强的混合存储系统及其方法 | |
US20140188924A1 (en) | Techniques for ordering predicates in column partitioned databases for query optimization | |
Su et al. | Indexing and parallel query processing support for visualizing climate datasets | |
US11294816B2 (en) | Evaluating SQL expressions on dictionary encoded vectors | |
CN111104457A (zh) | 基于分布式数据库的海量时空数据管理方法 | |
CN102207964B (zh) | 实时海量数据索引建立方法及系统 | |
CN100399338C (zh) | 一种数据记录处理方法 | |
CN110389953B (zh) | 基于压缩图的数据存储方法、存储介质、存储装置和服务器 | |
Kvet et al. | Relational pre-indexing layer supervised by the DB_index_consolidator Background Process | |
CN117648385A (zh) | 适用于多维数据库的内外存压缩及元组更新插入方法 |
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 |