CN115827653B - 一种用于htap和海量数据的纯列式更新方法及装置 - Google Patents
一种用于htap和海量数据的纯列式更新方法及装置 Download PDFInfo
- Publication number
- CN115827653B CN115827653B CN202211489238.6A CN202211489238A CN115827653B CN 115827653 B CN115827653 B CN 115827653B CN 202211489238 A CN202211489238 A CN 202211489238A CN 115827653 B CN115827653 B CN 115827653B
- Authority
- CN
- China
- Prior art keywords
- data
- updated
- updating
- format
- column
- 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 75
- 238000003860 storage Methods 0.000 claims abstract description 121
- 238000011065 in-situ storage Methods 0.000 claims abstract description 81
- 238000012545 processing Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 7
- 230000006835 compression Effects 0.000 claims description 3
- 238000007906 compression Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000012217 deletion Methods 0.000 description 9
- 230000037430 deletion Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 238000013500 data storage Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- WVCHIGAIXREVNS-UHFFFAOYSA-N 2-hydroxy-1,4-naphthoquinone Chemical compound C1=CC=C2C(O)=CC(=O)C(=O)C2=C1 WVCHIGAIXREVNS-UHFFFAOYSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 230000009466 transformation Effects 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
本发明实施例提供了一种用于HTAP和海量数据的纯列式更新方法及装置,本申请提供了当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;存储类型包括可原地更新格式和不可原地更新格式;所述存储类型依据数据的更新频率进行分类;当所述状态类型为冷数据且存储类型全部为可原地更新格式时,则依据所述位置信息对所述目标数据进行原地更新生成所述新数据。通过本申请的根据数据的状态类型即列更新的需要,来决定以可原地更新格式或者不可原地更新格式来存储数据,提高更新效率。
Description
技术领域
本发明涉及数据库技术领域,具体涉及一种用于HTAP和海量数据的纯列式更新方法及装置。
背景技术
HTAP(Hybrid Transaction and Analytical Process,混合事务和分析处理),系统中存在两种数据,一是近期的热数据,另外是海量的冷数据。热数据需要高效的更新,冷数据侧重快速的查询。但是这并非说热数据不需要查询,且冷数据不存在更新。实际情况是热数据需要查询,冷数据也有概率更新。
数据库系统有两类存储格式,行式存储和列式存储,行存储系统以行的方式来组织数据。有利于数据一行一行的写入,写入一条数据记录时。列式存储将每一列的数据组织在一起。
行式存储不利于分析查询,列式存储不利于更新。现有的更新查询效率低,对冷数据的更新必然产生新版本,带来额外合并开销;现有技术更新需要删除再更新,效率低;清理时阻塞更新删除,降低整体更新能力。
发明内容
鉴于所述问题,提出了本申请以便提供克服所述问题或者至少部分地解决所述问题的一种用于HTAP和海量数据的纯列式更新方法及装置,包括:
一种用于HTAP和海量数据的纯列式更新方法,所述方法用于HTAP和海量数据的数据更新,包括:
当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;存储类型包括可原地更新格式和不可原地更新格式;所述待更新数据包的数据包含列数据;所述状态类型依据第一预设周期内的第一更新频率进行分类;所述冷数据的列存储类型依据列数据的第二预设更新频率分类,所述第二预设更新频率高于阈值的使用可原地更新格式,否则使用不可原地更新格式;
当所述待更新数据包的所有列为可原地更新格式时,则依据所述更新信息对目标数据进行原地更新生成所述新数据。
优选地,所述确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型的步骤,包括:
所述热数据的列存储类型采用可原地更新格式,并依据所述位置信息对所述目标数据进行原地更新生成所述新数据。
优选地,所述确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型的步骤,包括:
当所述状态类型为冷数据且存储类型部分为不可原地更新格式时,则依据所述位置信息对目标数据进行标记删除并生成新数据;
或;
当所述状态类型为冷数据且存储类型全部为不可原地更新格式时,则依据所述位置信息对所述目标数据进行标记删除并生成所述新数据。
优选地,所述确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型的步骤,包括:
当数据的状态类型为热数据,且在第一预设周期内的当前更新频率低于所述第一更新频率时,则状态类型由热数据变为冷数据。
为实现本申请还包括一种用于HTAP和海量数据的纯列式查询方法,所述方法用于HTAP和海量数据的数据查询,包括:
当接收待查询数据包时,确定所述待查询数据包中所包含数据的位置信息;
依据所述位置信息读取目标数据。
优选地,所述依据所述位置信息读取目标数据的步骤,包括:
依据所述位置信息读取列数据和列数据辅助信息;
依据所述列数据和所述列数据辅助信息读取所述目标数据。
为实现本申请还包括一种用于HTAP和海量数据的纯列式更新装置,所述装置用于HTAP和海量数据的数据更新,包括:
待更新数据包模块,用于当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;存储类型包括可原地更新格式和不可原地更新格式;所述待更新数据包的数据包含列数据;所述状态类型依据第一预设周期内的第一更新频率进行分类;所述冷数据的列存储类型依据列数据的第二预设更新频率分类,所述第二预设更新频率高于阈值的使用可原地更新格式,否则使用不可原地更新格式;
新数据模块,用于当所述待更新数据包的所有列为可原地更新格式时,则依据所述更新信息对目标数据进行原地更新生成所述新数据。为实现本申请还包括一种用于HTAP和海量数据的纯列式读取装置,所述装置用于HTAP和海量数据的数据查询,包括:
位置信息模块,用于当接收待查询数据包时,确定所述待查询数据包中所包含数据的位置信息;
读取模块,用于依据所述位置信息读取目标数据。
为实现本申请还包括一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现所述的用于HTAP和海量数据的纯列式更新方法的步骤。
为实现本申请一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现所述的用于HTAP和海量数据的纯列式更新方法的步骤。
本申请具有以下优点:
在本申请的实施例中,针对现有技术中“对冷数据的更新必然产生新版本,带来额外合并开销;现有技术更新需要删除再更新,效率低”的问题,本申请提供了当状态类型为冷数据且存储类型并非全部为可原地更新格式时,则依据位置信息对目标数据进行标记删除并生成新数据的解决方案,具体为:当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;存储类型包括可原地更新格式和不可原地更新格式;所述存储类型依据数据的更新频率进行分类;当所述待更新数据包的所有列为可原地更新格式时,则依据所述更新信息对目标数据进行原地更新生成所述新数据。通过本申请的根据数据的状态类型即列更新的需要,来决定以可原地更新格式或者不可原地更新格式来存储数据,数据未变冷时具备所有列的原地更新能力,不会产生无效版本,提高更新效率。数据变冷后仍然可保留具备更新需求的列的更新能力。不用加Slice粒度的事务锁,转换期间Slice可正常工作,转换对业务是透明无感知的。统一的列式内存格式,非常方便的合并Active Format列和StableFormat列的查询结果。对上层计算提供统一的列存格式。
附图说明
为了更清楚地说明本申请的技术方案,下面将对本申请的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的一种用于HTAP和海量数据的纯列式更新方法的步骤流程图;
图2是本申请一实施例提供的一种用于HTAP和海量数据的纯列式更新方法的模块结构图;
图3是本申请一实施例提供的一种用于HTAP和海量数据的Slice数据组织方式图;
图4是本申请一实施例提供的一种用于HTAP和海量数据的纯列式查询方法的步骤流程图;
图5是本申请一实施例提供的一种用于HTAP和海量数据的现有技术二的示意图;
图6是本申请一实施例提供的一种用于HTAP和海量数据的纯列式更新装置的结构框图;
图7是本申请一实施例提供的一种用于HTAP和海量数据的纯列式查询装置的结构框图;
图8是本发明一实施例提供的一种计算机设备的结构示意图;
图9是本申请一实施例提供的一种支持行级并发控制的纯列式更新方法的模块结构图;
图10是本申请一实施例提供的一种支持行级并发控制的纯列式更新方法的模块结构图。
具体实施方式
为使本申请的所述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
发明人通过分析现有技术发现:
现有技术方案一:Greenplum AOCO(Append-Optimized Column-Oriented),AOCO表将数据按行分为segment(段),segment内数据按列组织,支持压缩编码。segment只支持append-only方式写入,写入的每批数据可独立编码压缩。不支持原地更新,segment更新通过visibility bitmap标记删除,然后产生新版本插入到可写入的segment。查询时按列式查询所有segment。
由于segment是append-only的,因而不论segment是否写满,更新都会产生新版本。这样如果存在频繁更新,就会产生空洞,并且无效版本的数据也存在segment中,不方便清理。Greenplum采用vacuum来整理segment,整理时查询出segment下的有效数据,生成新的segment,然后清除visibility bitmap和老的segment文件。这期间会加segment粒度的事务锁,影响并发更新删除。
但方案的缺点:不论热数据,冷数据,更新都会产生新版本。清理时阻塞更新删除,降低整体更新能力。
现有技术二:
SAP HANA中Main Store采用列式存储,Delta Store分为2层:L1-delta采用的是方便写入更新的行存存储。L2-delta采用的是列式存储,主要作用是实现批量向Mainstore合并。具体如图5所示。
L2-delta和main store都不能原地更新,写入和更新都在L1-delta上进行。然后先将提交数据从L1-delta合并到L2-delta。再从L2-delta合并到main store。查询需要同时查delta store和main store。
该方案的缺点:实现复杂,delta同时使用行存和列存。对冷数据的更新必然产生新版本,带来额外合并开销。查询时需要将行式数据和列式数据进行合并,影响查询性能。
需要说明的是,本申请中涉及部分名称,解释如下:
以下部分是实现原地更新的其中一种方法,但本申请不限于以下方法进行实现。
需要说明的是,本申请的实现依赖于支持行级并发控制的纯列式更新方法,下面对支持行级并发控制的纯列式更新方法进行说明:
支持行级并发控制的纯列式更新方法提供了将待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据的解决方案,具体为:当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据。本申请采用列式存储结构和行级并发控制的事务控制机制相结合,其中事务控制机制使用Undo技术进行多版本并发控制,使得本方法支持列式存储的原地更新和删除,且不产生墓碑数据,不同数据行之间的事务互不影响。HTAP场景采用纯列存的存储结构,将数据块类型分为事务控制块,定长数据块和变长数据块,可以支持并发更新和高效查询,且没有转换开销。对于定长字段采用定长块存储,支持在线原地更新,对于变长字段,将一个或多个变长值按批存储并可预留更新空间。
具体包括如下步骤:
当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;
依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;
当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据;
依据所述事务控制块将所述新数据进行提交。
下面,将对支持行级并发控制的纯列式更新方法作进一步地说明。
本方法还包括定长字段的访问,定长字段有个特点,假如存储段是个一维数组A,那么第rowNo行的定长数据在这个数组的起始位置A[offset]唯一和确定的,可以通过下列第一公式计算出来:
offset=rowNo*size(rowNo≥0)第一公式
其中offset为定长字段第rowNo行的起始偏移,size为定长数据的长度。
现在把存储区划分为若干大小相等的块(block),每个块进行顺序的逻辑编号,块号用block_id表示,并用offset表示块内的偏移。此时,一个一维表示的存储区的位置offset可以换成二维数组的形式表示:<block_id,offset>。同样的,定长数据在这个二维数组里面的位置是唯一和确定的,可以通过下面公式计算出来:
block_id=(rowNo*size)/block_size(rowNo≥0)
offset=(rowNo*size)%block_size(rowNo≥0)
其中block_size为块大小。数据写入时,找到一块可用的位置进行写入,由于字段长度已定,即使写入数据长度不满size大小,也占用size长度的存储空间。
本方法还包括变长字段的访问,变长字段的访问分两步:通过定长字段的公式计算出位置信息的偏移,并从位置信息存储段读取位置信息。通过位置信息在数据存储段读取变长字段实际数据。
如上述步骤所述,当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段。
在本方法一实施例中,可以结合下列描述进一步说明步骤所述“当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段”的具体过程。
如下列步骤所述,依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;依据所述待更新数据包将所述事务控制块进行记录。依据所述事务控制块将所述新数据进行提交。
在一具体实施例中,当接收到待更新数据包时,明确更新的数据行和字段信息,并传递给列式存储引擎;其中,所述待更新数据包中包括更新的数据行和字段信息。
在一具体实施例中,事务控制块分配:从事务控制存储段分配若干事务控制块,每个事务控制块对应于这若干行更新的其中一行。
在一具体实施例中,当数据生成新数据后,事务提交:把分配的事务控制块上的事务置为提交状态,并且推进系统改变序号,结束事务,使更新生效,对其它会话可见。
如上述步骤所述,依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块。
在本方法一实施例中,可以结合下列描述进一步说明步骤所述“依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块”的具体过程。
如下列步骤所述,事务控制块分配,从事务控制存储段分配若干事务控制块,每个事务控制块对应于这若干行更新的其中一行。
如上述步骤所述,当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据。
在本方法一实施例中,可以结合下列描述进一步说明步骤所述“当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据”的具体过程。
如下列步骤所述,依据所述待更新数据包生成定长字段的第二偏移,并依据所述第二偏移生成变长字段的第二位置信息;通过所述事务控制块进行记录,并依据所述第二位置信息和所述待更新数据包进行原地更新生成所述新数据。
在一具体实施例中,定长字段数据更新:通过偏移计算公式计算出更新的定长字段的第二偏移;其中,所述偏移计算公式是上述第一公式,并依据所述第二偏移生成变长字段的第二位置信息,使用原地更新的方式更新定长字段的数据,更新前,通过事物控制块记录Undo数据,并通过WAL机制记录REDO日志。如图9所示。
在本方法一实施例中,当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据。
在本方法一实施例中,可以结合下列描述进一步说明步骤所述“当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据”的具体过程。
如下列步骤所述,依据所述待更新数据包生成变长字段的第一偏移,并依据所述第一偏移生成变长字段的第一位置信息;依据所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据,并在所述第一位置信息进行标记。
在一具体实施例中,变长字段数据更新:通过偏移计算公式计算出更新的变长字段的位置信息的第一偏移,在位置信息存储段中读取对应的变长字段的第一位置信息,并通过第一位置信息更新变长字段实际数据段的数据;其中,所述偏移计算公式是上述第一公式。由于可能出现变长字段数据长度的变化,变长字段数据实际存储位置可能发生变化,但是第一位置信息不变,这是由变长字段实际数据段的能力保证的。在更新长度变长的场景,变长字段实际数据段可以采用迁移的方式,对该列的该行数据新找一个足够大小的存储空间进行存储,并在原位置信息做标记,使得根据原位置信息能找到新的数据位置。由于存储单元预留了一定的空闲空间,新找的存储空间大部分情况只需要在预留的空闲空间进行分配即可,而且修改只影响该行数据,不影响其它行,因此更新代价也较小。
如下列步骤所述,当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成所述新数据。
如下列步骤所述,当所述待更新数据包为变长字段且字段长度的字段相较于原有数据不变时,则将所述待更新数据包进行原地更新生成所述新数据。
如下列步骤所述,当所述待更新数据包为变长字段且字段长度的字段相较于原有数据变短时,则将所述待更新数据包进行原地更新生成所述新数据。
在一具体实施例中,变长字段数据更新:通过偏移计算公式计算出更新的变长字段的位置信息的第一偏移,在位置信息存储段中读取对应的变长字段的第一位置信息,并通过第一位置信息更新变长字段实际数据段的数据;其中,所述偏移计算公式是上述第一公式。由于可能出现变长字段数据长度的变化,变长字段数据实际存储位置可能发生变化,但是位置信息不变,这是由变长字段实际数据段的能力保证的。在更新长度不变或者变短的场景,变长字段实际数据段可以采用原地更新的方式进行更新,不产生数据搬迁。
在一具体实施例中,假设一个表t有C1,C2,C3列,其中C1为定长字段类型INTEGER,长度4个字节,C2为变长字段类型VARCHAR,长度不确定,C3为定长字段BITINT,长度8个字节,三列都可能随时被修改和查询。
该方法的存储段数据组织方式如图10所示,定长列C1、C3采用定长存储,数据可以原地更新。变长列C2采用变长存储,需要记录位置信息和实际数据信息,通过两跳的方式访问实际数据。数据读取后,组织成统一的列式数据集,返回给上层应用。
更新流程:如执行update from t set c1=2and c2=‘efg’where c1=1and c2=‘abc’;
先通过查询条件确定要更新的行,如第10行
从事务控制存储段申请事务控制块a,表示第10行需要更新
C1列写入4位定长数值2,C2列写入变长字符串’cfg’,C3列不变
C1、C3列更新的位置由如下公式决定,如计算出第10行的偏移并原地更新,随后写入相应的REDO和Undo日志:
block_id=(rowNo*size)/block_size(rowNo≥0)
offset=(rowNo*size)%block_size(rowNo≥0)
C2列先获得实际定长位置信息(4,100,256),并根据位置信息在HEAP存储段中找到实际数据并更新。对于数据更新产生的长度变化,HEAP存储段自动处理,并保证位置信息不变。同时记录REDO和Undo日志。
事务提交,完成写入。
在本申请一具体实施例中,本申请采用列式存储结构和行级并发控制的事务控制机制相结合,其中事务控制机制使用Undo技术进行多版本并发控制,使得本方法支持列式存储的原地更新和删除,且不产生墓碑数据,不同数据行之间的事务互不影响。
查询流程,明确查询的投影信息,并传递给列式存储引擎
定长字段数据读取:当查询的字段包含定长字段,将访问定长字段存储段,查询从逻辑行号0开始,每次返回若干行数据,通过偏移计算公式计算每次返回数据的起始和结束位置,直到存储的最大逻辑行号为止;其中,所述偏移计算公式是上述第一公式。
变长字段数据读取:当查询的字段包含定长字段,将访问变长字段存储段,查询从逻辑行号0开始,每次返回若干行数据,通过偏移计算公式计算每次返回数据在变长字段位置信息存储段的若干个位置信息,并通过位置信息从变长字段实际数据段读取实际数据,并把实际数据按照变长字段格式返回,直到存储的最大逻辑行号为止;其中,所述偏移计算公式是上述第一公式。
定长及变长字段的一致性读:当定长和变长字段获取到后,由于可能存在脏读的情况,需要根据事务控制块应用Undo,把未提交的修改进行回滚,使数据处于一致性读的状态。事务控制块可以通过偏移计算公式计算出来;其中,所述偏移计算公式是上述第一公式。
本方法还包括事务控制块的访问,事务控制块信息按照定长的形式存储,通过上述公式可以计算出事务控制块的偏移,从而取得事务控制块信息。
本申请还包括插入流程,考虑从外部获取到若干行数据的场景,需要把若干行数据插入存储。
事务控制块分配:从事务控制存储段分配若干事务控制块,每个事务控制块对应于这若干行修改的其中一行。
定长字段写入:把若干行数据的定长字段抽取出来,分别写入每个字段对应的定长存储段,写入的位置通过偏移计算公式计算出来。写入前,通过事物控制块记录Undo数据,并通过WAL机制记录REDO日志;其中,所述偏移计算公式是上述第一公式。
变长字段写入:把若干行数据的变长字段抽取出来,分别写入每个字段对应的变长存储段,先写入变长存储的数据段,获取写入的位置信息,再把位置信息写入变长存储段的位置信息存储段,写入位置通过A节的定义的偏移计算出来。写入前,通过事物控制块记录Undo数据,并通过WAL机制记录REDO日志;其中,所述偏移计算公式是上述第一公式。
事务提交:把分配的事务控制块上的事务置为提交状态,并且推进系统改变序号,结束事务,使写入生效,对其它会话可见。
本方法还包括删除流程,明确要删除的数据行和字段信息,并传递给列式存储引擎
事务控制块分配:从事务控制存储段分配若干事务控制块,每个事务控制块对应于这若干行更新的其中一行
数据行标记删除:数据有效位图中的对应数据行的有效位置为无效,并记录Undo数据,并通过WAL机制记录REDO日志。下次写入将会复用置为无效的数据行的槽位。
定长字段数据删除:待删除的定长数据记录Undo数据,实际数并不擦除,后续新写入的数据通过覆盖的方式刷新数据。
变长字段数据删除:位置信息和实际数据都不需要进行额外的修改,下次写入将通过位置信息找到实际数据位置,并进行覆盖写的方式刷新数据。
在一具体实施例中,假设一个表t有C1,C2,C3列,其中C1为定长字段类型INTEGER,长度4个字节,C2为变长字段类型VARCHAR,长度不确定,C3为定长字段BITINT,长度8个字节,三列都可能随时被修改和查询。具体如图10所示。
在一具体实施例中,写入流程,如执行insert into t values(1,‘abc’,100);先从事务控制存储段申请事务控制块a,并把该插入操作与a绑定,a同时会决定该插入操作写入的实际逻辑行号,如图9中的第10行。
C1列写入4位定长数值1,C2列写入变长字符串’abc’,C3列写入8位定长数值100
C1、C3列写入的位置由下列公式决定,如计算出图9中的第10行的写入偏移并写入,随后写入相应的REDO和Undo日志:
block_id=(rowNo*size)/block_size(rowNo≥0)
offset=(rowNo*size)%block_size(rowNo≥0)
C2列先向实际数据存储段——典型的存储结构为HEAP存储——写入变长字符串,并获得实际定长位置信息(4,100,256),表示这个字符串存于第4个文件的第100个数据块的第256字节的偏移,该偏移的头4个字节表示该字符串的长度,随后是实际的数据。同时记录REDO和Undo日志。随后定长位置信息(4,100,256)被写入位置信息存储段中的第10行的偏移。
事务提交,完成写入。
在一具体实施例中,读取流程:如执行select c1,c2 from t;
确定查询的投影列,如C1和C2,C3不需要访问。
确定读取一个批次的数据长度,如一次读取图9中的10行数据。
从C1的存储段逻辑行号0开始,连续读取图9中的10行,并记录当前读取的结束位置。
从C2的位置存储段逻辑行号0开始,连续读取图9中的10行,并记录当前读取的结束位置。根据图9中的10行的位置信息,分别从C2的实际数据存储段读出图9中的10行实际的数据,并重新组织成连续的10行变长数据。
对C1和C2读取的数据,组织成统一的列式数据集,并通过Undo日志把未提交的修改回滚,使数据集回到一致性读的状态。
返回列式数据集给上层应用。
在上次读取结束位置开始,重复上述“从C1的存储段逻辑行号0开始”的步骤,直到数据读取完毕。
在一具体实施例中,删除流程:如执行delete from t where c1=1and c2=‘abc’;
先通过查询条件确定要删除的行,如图9中的第10行。
从事务控制存储段申请事务控制块a,表示图9中的第10行需要删除,把图9中的第10行的有效位置为无效,并记录Undo数据,并通过WAL机制记录REDO日志。下次写入将会复用图9中的第10行数据行的槽位。
C1、C3列数据删除:记录C1、C3列的UND0,实际数据不擦除。
C2列数据删除:位置信息和实际数据都不擦除。
事务提交,完成删除。
本申请的名词解释如下:
Slice:数据片段,也可称为segment,part等等。
Slice Meta:Slice元数据,其中包含Slice当前状态,Slice中列的状态,存储位置等信息。
Active Format:可原地更新的格式。
Stable Format:不可原地更新,排序编码压缩的列存格式。
Hot Slice:其中列使用Active格式存储,可写入及高更新频率。
Cold Slice:其中部分或全部列更新极少,使用Stable格式存储。
冷热规则:由用户指定,如果数据一直存在高频更新,可将冷却时间置为无穷大。
Valid bitmap:Slice的辅助列,记录每行可见性信息,采用列式存储。
列格式转换:热数据写入到Hot Slice,其中的列使用Active Format存储。等到Slice按冷热规则转换为Cold Slice时,将其中部分或全部列(包含辅助列,如Validbitmap等)转换为Stable format存储。
如导入时即知道数据修改频率极低,可直接使用Stable Format存储。
原地更新:将旧数据集中存到其他位置,可高效回收。
不可原地更新:新数据作为新的记录存到其他位置。后续通过合并将原位置的旧数据给删除,此种方式的开销更大。
在本申请的实施例中,针对现有技术中“对冷数据的更新必然产生新版本,带来额外合并开销;现有技术更新需要删除再更新,效率低”的问题,本申请提供了当状态类型为冷数据且存储类型并非全部为可原地更新格式时,则依据位置信息对目标数据进行标记删除并生成新数据的解决方案,具体为:当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;存储类型包括可原地更新格式和不可原地更新格式;所述存储类型依据数据的更新频率进行分类;当所述待更新数据包的所有列为可原地更新格式时,则依据所述更新信息对目标数据进行原地更新生成所述新数据。通过本申请的根据数据的状态类型即列更新的需要,来决定以可原地更新格式或者不可原地更新格式来存储数据,数据未变冷时具备所有列的原地更新能力,不会产生无效版本,提高更新效率。数据变冷后仍然可保留具备更新需求的列的更新能力。不用加Slice粒度的事务锁,转换期间Slice可正常工作,转换对业务是透明无感知的。统一的列式内存格式,非常方便的合并Active Format列和StableFormat列的查询结果。对上层计算提供统一的列存格式。
参照图1,示出了本申请一实施例提供的一种用于HTAP和海量数据的纯列式更新方法的步骤流程图,具体包括如下步骤:
S110、当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;存储类型包括可原地更新格式和不可原地更新格式;所述待更新数据包的数据包含列数据;所述状态类型依据第一预设周期内的第一更新频率进行分类;所述冷数据的列存储类型依据列数据的第二预设更新频率分类,所述第二预设更新频率高于阈值的使用可原地更新格式,否则使用不可原地更新格式;
S120、当所述待更新数据包的所有列为可原地更新格式时,则依据所述更新信息对目标数据进行原地更新生成所述新数据。
下面,将对本示例性实施例中的用于HTAP和海量数据的纯列式更新方法作进一步地说明。
在一具体实施例中,本申请的设计方案框图如图2所示。
如上述步骤S110所述,当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;所述待更新数据包的数据包含列数据;所述状态类型依据第一预设周期内的第一更新频率进行分类;所述冷数据的列存储类型依据列数据的第二预设更新频率分类,所述第二预设更新频率高于阈值的使用可原地更新格式,否则使用不可原地更新格式;
在本发明一实施例中,可以结合下列描述进一步说明步骤S110所述“当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;所述待更新数据包的数据包含列数据;所述状态类型依据第一预设周期内的第一更新频率进行分类;所述冷数据的列存储类型依据列数据的第二预设更新频率分类,所述第二预设更新频率高于阈值的使用可原地更新格式,否则使用不可原地更新格式”的具体过程。
如下列步骤所述,所述热数据的列存储类型采用可原地更新格式,并依据所述位置信息对所述目标数据进行原地更新生成所述新数据。
在一具体实施例中,所述存储类型依据数据的更新频率进行分类;当数据的更新频率低于预设值时,将数据设为冷数据;当数据的更新频率高于预设值时,将数据设为热数据;且预算值由用户自定义。
如下列步骤所述,所述待更新数据包的数据包含列数据;所述状态类型依据第一预设周期内的第一更新频率进行分类;所述冷数据的列存储类型依据列数据的第二预设更新频率分类,所述第二预设更新频率高于阈值的使用可原地更新格式,否则使用不可原地更新格式;
在一具体实施例中,当数据的状态类型为热数据,且在第一预设周期内的当前更新频率低于所述第一更新频率时,则状态类型由热数据变为冷数据。
在一具体实施例中,所述第一周期内的第一更新频率可以由用户自定义,所述第二周期的第二预设更新频率也可以由用户自定义,从而能够将热数据转换为冷数据。
在一具体实施例中,读取Slice meta,获取Slice状态信息,以及每列的位置信息。
如上述步骤所述,当所述状态类型为冷数据且存储类型部分为不可原地更新格式时,则依据所述位置信息对目标数据进行标记删除并生成新数据。
在本发明一实施例中,可以结合下列描述进一步说明步骤所述“当所述状态类型为冷数据且存储类型部分为不可原地更新格式时,则依据所述位置信息对目标数据进行标记删除并生成新数据”的具体过程。
如下列步骤所述,所述热数据的列存储类型采用可原地更新格式,并依据所述位置信息对所述目标数据进行原地更新生成所述新数据。
如下列步骤所述,当所述待更新数据包的所有列为可原地更新格式时,则依据所述更新信息对目标数据进行原地更新生成所述新数据。当所述状态类型为冷数据且存储类型全部为不可原地更新格式时,则依据所述位置信息对所述目标数据进行标记删除并生成所述新数据。
如下列步骤所述,所述热数据的列存储类型采用可原地更新格式,并依据所述位置信息对所述目标数据进行原地更新生成所述新数据。
如下列步骤所述,当所述状态类型为冷数据且存储类型并非全部为可原地更新格式时,则依据所述位置信息对目标数据进行标记删除并生成新数据。
在一具体实施例中,更新流程:根据Slice meta,如Slice还是Hot状态,可直接原地更新。
如Slice是Cold状态,则通过Slice meta查看更新列的存储格式,如果所有更新列都是Active format,可选择进行原地更新,也可以通过Valid bitmap做标记删除,然后将新版本记录写入到其他Hot Slice。
如果Slice为Cold,且并非所有更新列都是Active format,则通过Valid bitmap做标记删除,然后将新版本记录写入到其他Hot Slice。
在一具体实施例中,假设一个表有C1,C2,C3,C4,C5,C6列,其中C1,C2,C3写入后不会修改,C4,C5在写入后经过一段时间几乎不会修改,C6随时可能修改。该发明的Slice数据组织方式如图3所示:
更新流程:
如果Slice是Hot状态,即所有列均为Active Format,那么直接进行原地更新。
如果Slice为Cold状态,且只更新C6,那么可对C6做原地更新,当然也可以按下述步骤3进行标记删除,然后写入新版的方式进行更新。
如果Slice为Cold状态,更新列包含C6之外的其他列。则在valid bitmap做标记删除,并且读取其他非更新列,以及更新列的新值生成新版本记录,写入到其他Hot Slice中。
例如更新C5,C6。则先找到满足更新条件的行RowM,在valid bitmap中找到对应的bit位将该行置为无效。读取RowM的C1,C2,C3,C4列的值,分别为C1,C2,C3,C4,加上C5,C6更新后的值C5',C6'。组成记录新记录RowN(C1,C2,C3,C4,C5',C6')写入到其他Hot Slice中。
参照图4,示出了本申请一实施例提供的一种用于HTAP和海量数据的纯列式查询方法的步骤流程图,具体包括如下步骤:
S410、当接收待查询数据包时,确定所述待查询数据包中所包含数据的位置信息;
S420、依据所述位置信息读取目标数据。
下面,将对本示例性实施例中的用于HTAP和海量数据的纯列式查询方法作进一步地说明。
如上述步骤S410所述,位置信息模块,用于当接收待查询数据包时,确定所述待查询数据包中所包含数据的位置信息。
在本发明一实施例中,可以结合下列描述进一步说明步骤S410所述“位置信息模块,用于当接收待查询数据包时,确定所述待查询数据包中所包含数据的位置信息”的具体过程。
在一具体实施例中,查询流程:
读取Slice meta,获取Slice状态信息,以及每列位置信息等。
根据投影列信息读取列数据,存储可能是Active或Stable format,但内存格式是一致的。
读取valid bitmap信息。合成所有列生成最终结果集。
在一具体实施例中,查询流程:
根据Slice Meta得到投影列的位置和状态信息。
根据列的存储方式读取Active或Stable Format的数据。如查询包含C6,则按其Active Format存储格式读取。
根据查询的可见性要求,读取valid bitmap。
生成最终结果集。
本申请还包括转换流程:按照冷热规则,将C1,C2,C3,C4,C5进行格式转换。转换完成后,更新Slice Meta,切换Slice状态为Cold,更新C1,C2,C3,C4,C5状态。转换期间阻塞对转换列的更新,查询和删除完全不受影响,C6列的更新不受影响。
在一具体实施例中,本申请数据未变冷时具备所有列的原地更新能力,不会产生无效版本。数据变冷后仍然可保留具备更新需求的列的更新能力。不用加Slice粒度的事务锁,转换期间Slice可正常工作,转换对业务是透明无感知的。统一的列式内存格式,非常方便的合并Active Format列和Stable Format列的查询结果。对上层计算提供统一的列存格式。
在一具体实施例中,读取模块,用于依据所述位置信息读取目标数据。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图6,示出了本申请一实施例提供的一种用于HTAP和海量数据的纯列式更新装置,具体包括如下模块,
待更新数据包模块610:用于当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;存储类型包括可原地更新格式和不可原地更新格式;所述待更新数据包的数据包含列数据;所述状态类型依据第一预设周期内的第一更新频率进行分类;所述冷数据的列存储类型依据列数据的第二预设更新频率分类,所述第二预设更新频率高于阈值的使用可原地更新格式,否则使用不可原地更新格式;
新数据模块620:用于当所述待更新数据包的所有列为可原地更新格式时,则依据所述更新信息对目标数据进行原地更新生成所述新数据。
在本发明一实施例中,所述新数据模块620模块包括:
热数据子模块:用于所述热数据的列存储类型采用可原地更新格式,并依据所述位置信息对所述目标数据进行原地更新生成所述新数据。
冷数据子模块:用于当所述状态类型为冷数据且存储类型部分为不可原地更新格式时,则依据所述位置信息对目标数据进行标记删除并生成新数据;
或;
当所述状态类型为冷数据且存储类型全部为不可原地更新格式时,则依据所述位置信息对所述目标数据进行标记删除并生成所述新数据。
状态类型子模块:当数据的状态类型为热数据,且在第一预设周期内的当前更新频率低于所述第一更新频率时,则状态类型由热数据变为冷数据。
参照图7,示出了本申请一实施例提供的一种用于HTAP和海量数据的纯列式查询装置,具体包括如下模块,
位置信息模块710:用于当接收待查询数据包时,确定所述待查询数据包中所包含数据的位置信息;
读取模块720:用于依据所述位置信息读取目标数据。
在本发明一实施例中,所述模块包括:
辅助信息子模块:用于依据所述位置信息读取列数据和列数据辅助信息;
目标数据子模块:用于依据所述列数据和所述列数据辅助信息读取所述目标数据。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
在本具体实施例与上述具体实施例中有重复的操作步骤,本具体实施例仅做简单描述,其余方案参考上述具体实施例描述即可。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图8,示出了本申请的一种用于HTAP和海量数据的纯列式更新方法的计算机设备,具体可以包括如下:
上述计算机设备12以通用计算设备的形式表现,计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,内存28,连接不同系统组件(包括内存28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、音视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
内存28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器30和/或高速缓存存储器32。计算机设备12可以进一步包括其他移动/不可移动的、易失性/非易失性计算机体统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质界面与总线18相连。存储器可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块42,这些程序模块42被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其他程序模块42以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24、摄像头等)通信,还可与一个或者多个使得操作人员能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过I/O接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN)),广域网(WAN)和/或公共网络(例如因特网)通信。如图8所示,网络适配器20通过总线18与计算机设备12的其他模块通信。应当明白,尽管图8中未示出,可以结合计算机设备12使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元16、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统34等。
处理单元16通过运行存储在内存28中的程序,从而执行各种功能应用以及数据处理,例如实现本申请实施例所提供的一种用于HTAP和海量数据的纯列式更新方法。
也即,上述处理单元16执行上述程序时实现:当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;存储类型包括可原地更新格式和不可原地更新格式;当所述状态类型为冷数据且存储类型并非全部为可原地更新格式时,则依据所述位置信息对目标数据进行标记删除并生成新数据。
在本申请实施例中,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有实施例提供的一种用于HTAP和海量数据的纯列式更新方法。
也即,给程序被处理器执行时实现:当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;存储类型包括可原地更新格式和不可原地更新格式;当所述状态类型为冷数据且存储类型并非全部为可原地更新格式时,则依据所述位置信息对目标数据进行标记删除并生成新数据。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在操作人员计算机上执行、部分地在操作人员计算机上执行、作为一个独立的软件包执行、部分在操作人员计算机上部分在远程计算机上执行或者完全在远程计算机或者服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到操作人员计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种用于HTAP和海量数据的纯列式更新方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (6)
1.一种用于HTAP和海量数据的纯列式更新方法,所述方法用于HTAP和海量数据的数据更新,其特征在于,包括:
当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;存储类型包括可原地更新格式和不可原地更新格式;所述待更新数据包的数据包含列数据;所述状态类型依据第一预设周期内的第一更新频率进行分类;所述冷数据的列存储类型依据列数据的第二预设更新频率分类,所述第二预设更新频率高于阈值的使用可原地更新格式,否则使用不可原地更新格式;其中,不可原地更新为排序编码压缩的列存格式;
当所述状态类型为冷数据且存储类型部分为不可原地更新格式时,则依据所述位置信息对目标数据进行标记删除并生成新数据;
或;
当所述状态类型为冷数据且存储类型全部为不可原地更新格式时,则依据所述位置信息对所述目标数据进行标记删除并生成所述新数据;
当所述待更新数据包的所有列为可原地更新格式时,则依据所述更新数据包对目标数据进行原地更新生成所述新数据。
2.根据权利要求1所述的用于HTAP和海量数据的纯列式更新方法,其特征在于,所述确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型的步骤,包括:
所述热数据的列存储类型采用可原地更新格式,并依据所述位置信息对所述目标数据进行原地更新生成所述新数据。
3.根据权利要求1所述的用于HTAP和海量数据的纯列式更新方法,其特征在于,所述确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型的步骤,包括:
当数据的状态类型为热数据,且在第一预设周期内的当前更新频率低于所述第一更新频率时,则状态类型由热数据变为冷数据。
4.一种用于HTAP和海量数据的纯列式更新装置,所述装置用于HTAP和海量数据的数据更新,其特征在于,包括:
待更新数据包模块,用于当接收到待更新数据包时,确定所述待更新数据包中所包含数据的状态类型、位置信息以及列数据的存储类型;其中,所述状态类型包括冷数据和热数据;存储类型包括可原地更新格式和不可原地更新格式;所述待更新数据包的数据包含列数据;所述状态类型依据第一预设周期内的第一更新频率进行分类;所述冷数据的列存储类型依据列数据的第二预设更新频率分类,所述第二预设更新频率高于阈值的使用可原地更新格式,否则使用不可原地更新格式;其中,不可原地更新为排序编码压缩的列存格式;
当所述状态类型为冷数据且存储类型部分为不可原地更新格式时,则依据所述位置信息对目标数据进行标记删除并生成新数据;
或;
当所述状态类型为冷数据且存储类型全部为不可原地更新格式时,则依据所述位置信息对所述目标数据进行标记删除并生成所述新数据;
新数据模块,用于当所述待更新数据包的所有列为可原地更新格式时,则依据所述更新数据包对目标数据进行原地更新生成所述新数据。
5.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至3中任一项所述的用于HTAP和海量数据的纯列式更新方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3中任一项所述的用于HTAP和海量数据的纯列式更新方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211489238.6A CN115827653B (zh) | 2022-11-25 | 2022-11-25 | 一种用于htap和海量数据的纯列式更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211489238.6A CN115827653B (zh) | 2022-11-25 | 2022-11-25 | 一种用于htap和海量数据的纯列式更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115827653A CN115827653A (zh) | 2023-03-21 |
CN115827653B true CN115827653B (zh) | 2023-09-05 |
Family
ID=85531518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211489238.6A Active CN115827653B (zh) | 2022-11-25 | 2022-11-25 | 一种用于htap和海量数据的纯列式更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827653B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515950A (zh) * | 2019-08-26 | 2019-11-29 | 江苏华库数据技术有限公司 | 一种基于列存数据库对海量数据进行高效的批量更新方法 |
CN114217738A (zh) * | 2021-11-25 | 2022-03-22 | 深圳益邦阳光有限公司 | 一种动态队列式循环存储方法、装置、设备及介质 |
CN114416677A (zh) * | 2021-12-30 | 2022-04-29 | 中国电信股份有限公司 | 一种冷存储数据的更新方法、装置、设备及存储介质 |
CN114817425A (zh) * | 2022-06-28 | 2022-07-29 | 成都交大大数据科技有限公司 | 一种冷热数据分类的方法、装置、设备及可读存储介质 |
CN114816838A (zh) * | 2021-01-21 | 2022-07-29 | 武汉斗鱼鱼乐网络科技有限公司 | 用于提高数据恢复效率的方法、装置、介质及计算机设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11080245B2 (en) * | 2017-02-10 | 2021-08-03 | DaStratum, Inc. | Multi-tier cloud file system |
-
2022
- 2022-11-25 CN CN202211489238.6A patent/CN115827653B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515950A (zh) * | 2019-08-26 | 2019-11-29 | 江苏华库数据技术有限公司 | 一种基于列存数据库对海量数据进行高效的批量更新方法 |
CN114816838A (zh) * | 2021-01-21 | 2022-07-29 | 武汉斗鱼鱼乐网络科技有限公司 | 用于提高数据恢复效率的方法、装置、介质及计算机设备 |
CN114217738A (zh) * | 2021-11-25 | 2022-03-22 | 深圳益邦阳光有限公司 | 一种动态队列式循环存储方法、装置、设备及介质 |
CN114416677A (zh) * | 2021-12-30 | 2022-04-29 | 中国电信股份有限公司 | 一种冷存储数据的更新方法、装置、设备及存储介质 |
CN114817425A (zh) * | 2022-06-28 | 2022-07-29 | 成都交大大数据科技有限公司 | 一种冷热数据分类的方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
基于非关系型数据库HBase存储技术的检索研究;王伟晨;;物联网技术(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115827653A (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7410181B2 (ja) | ハイブリッド・インデックス作成方法、システム、プログラム | |
US10120895B2 (en) | Mirroring, in memory, data from disk to improve query performance | |
US10268746B2 (en) | Mechanism to run OLTP workload on in-memory database under memory pressure | |
US8977597B2 (en) | Generating and applying redo records | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
US9779104B2 (en) | Efficient database undo / redo logging | |
EP0303231B1 (en) | Method and device for enabling concurrent access of indexed sequential data files | |
US8700674B2 (en) | Database storage architecture | |
US5613113A (en) | Consistent recreation of events from activity logs | |
US7454403B2 (en) | Method and mechanism of improving performance of database query language statements using data duplication information | |
US10678772B2 (en) | Sparse infrastructure for tracking ad-hoc operation timestamps | |
US11221999B2 (en) | Database key compression | |
US6535895B2 (en) | Technique to avoid processing well clustered LOB's during reorganization of a LOB table space | |
US10409799B2 (en) | Supporting updatable repeated values over variable schema | |
CN111522820A (zh) | 数据存储结构、存储检索方法、系统、设备及存储介质 | |
CN115827653B (zh) | 一种用于htap和海量数据的纯列式更新方法及装置 | |
US20100228787A1 (en) | Online data volume deletion | |
CN115905259B (zh) | 一种支持行级并发控制的纯列式更新方法及装置 | |
CN108984720B (zh) | 基于列存储的数据查询方法、装置、服务器及存储介质 | |
CN115809268B (zh) | 一种基于分片索引的自适应查询方法和装置 | |
CN117056427A (zh) | 混合事务分析系统中的数据处理方法、装置及电子设备 | |
CN117951094A (zh) | 存储空间的回收方法、文件系统、介质和计算设备 | |
CN114168384A (zh) | 一种分区表的备份方法、装置、电子设备及存储介质 | |
CN111444179A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |