CN115905259B - 一种支持行级并发控制的纯列式更新方法及装置 - Google Patents
一种支持行级并发控制的纯列式更新方法及装置 Download PDFInfo
- Publication number
- CN115905259B CN115905259B CN202211489220.6A CN202211489220A CN115905259B CN 115905259 B CN115905259 B CN 115905259B CN 202211489220 A CN202211489220 A CN 202211489220A CN 115905259 B CN115905259 B CN 115905259B
- Authority
- CN
- China
- Prior art keywords
- data
- updated
- data packet
- field
- length field
- 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 52
- 238000003860 storage Methods 0.000 claims abstract description 93
- 238000011065 in-situ storage Methods 0.000 claims abstract description 35
- 238000004590 computer program Methods 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 abstract description 14
- 238000012217 deletion Methods 0.000 abstract description 10
- 230000037430 deletion Effects 0.000 abstract description 10
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000004364 calculation method Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004140 cleaning Methods 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000000638 solvent extraction Methods 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
-
- 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/23—Updating
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种支持行级并发控制的纯列式更新方法及装置,本申请提供了当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据;依据所述事务控制块将所述新数据进行提交。本申请采用列式存储结构和行级并发控制的事务控制机制相结合,其中事务控制机制使用Undo技术进行多版本并发控制,使得本发明支持列式存储的原地更新和删除,且不产生墓碑数据,不同数据行之间的事务互不影响。
Description
技术领域
本发明涉及数据库技术领域,具体涉及一种支持行级并发控制的纯列式更新方法及装置。
背景技术
HTAP(Hybrid Transaction and Analytical Process,混合事务和分析处理),是混合OLTP(On-Line Transaction Processing,联机事务处理)和OLAP(On-LineAnalytical Processing,联机实时分析)业务同时处理的系统。OLTP是事件驱动、面向应用的,也称为面向交易的处理过程。其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作的快速响应。OLAP是面向数据分析的,也称为面向信息分析处理过程。它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。
现有的存储包括行式存储和列式存储,行存储系统以行的方式来组织数据。它的特点是数据一行一行的写入,写入一行数据记录时,该行的所有列都在一个存储空间存储。列式存储将每一列的数据组织在一起连续存储,放在不同的存储区域。
行式存储不利于分析查询,列式存储不利于更新。行列混合也给系统带来了一定的问题,一是行列之间要互相转换带来了系统开销,二是转换后的数据更新困难。
发明内容
鉴于所述问题,提出了本申请以便提供克服所述问题或者至少部分地解决所述问题的一种支持行级并发控制的纯列式更新方法及装置,包括:
一种支持行级并发控制的纯列式更新方法,包括:
当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;
依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;
当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据;
依据所述事务控制块将所述新数据进行提交。
优选地,所述依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块的步骤,还包括:
依据所述事务控制块记录相对应的Undo数据。
优选地,所述依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块的步骤,还包括:
当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据。
优选地,所述当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据的步骤,包括:
依据所述待更新数据包生成定长字段的第二偏移,并依据所述第二偏移生成变长字段的第二位置信息;
通过所述事务控制块进行记录,并依据所述第二位置信息和所述待更新数据包进行原地更新生成所述新数据。
优选地,所述将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据的步骤,包括:
依据所述待更新数据包生成变长字段的第一偏移,并依据所述第一偏移生成变长字段的第一位置信息;
依据所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据,并在所述第一位置信息进行标记。
优选地,所述确定所述待更新数据包中所包含数据的字段类型和字段长度的步骤,包括:
当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成所述新数据。
优选地,所述确定所述待更新数据包中所包含数据的字段类型和字段长度的步骤,包括:
当所述待更新数据包为变长字段且字段长度的字段相较于原有数据不变时,则将所述待更新数据包进行原地更新生成所述新数据。
优选地,所述确定所述待更新数据包中所包含数据的字段类型和字段长度的步骤,包括:
当所述待更新数据包为变长字段且字段长度的字段相较于原有数据变短时,则将所述待更新数据包进行原地更新生成所述新数据。
为实现本申请还包括一种支持行级并发控制的纯列式更新装置,包括:
接收模块,用于当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;
事物控制块模块,用于依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;
更新模块,用于当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据;
事务控制块提交模块,用于依据所述事务控制块将所述新数据进行提交。
为实现本申请还包括一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现所述的支持行级并发控制的纯列式更新方法的步骤。
本申请具有以下优点:
在本申请的实施例中,针对现有的“行式存储不利于分析查询、列式存储不利于更新、行列混合需要相互转换并更新困难”的问题,本申请提供了将待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据的解决方案,具体为:当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据。本申请采用列式存储结构和行级并发控制的事务控制机制相结合,其中事务控制机制使用Undo技术进行多版本并发控制,使得本发明支持列式存储的原地更新和删除,且不产生墓碑数据,不同数据行之间的事务互不影响。HTAP场景采用纯列存的存储结构,将数据块类型分为事务控制块,定长数据块和变长数据块,可以支持并发更新和高效查询,且没有转换开销。对于定长字段采用定长块存储,支持在线原地更新,对于变长字段,将一个或多个变长值按批存储并可预留更新空间。
附图说明
为了更清楚地说明本申请的技术方案,下面将对本申请的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的一种支持行级并发控制的纯列式更新方法的步骤流程图;
图2是本申请一实施例提供的一种支持行级并发控制的纯列式更新方法的模块结构图;
图3是本申请一实施例提供的一种支持行级并发控制的纯列式更新方法的模块结构图;
图4是本申请一实施例提供的一种现有技术方案一的方案流程图;
图5是本申请一实施例提供的一种现有技术方案二的CU划分方式图;
图6是本申请一实施例提供的一种现有技术方案二的压缩示意图;
图7是本申请一实施例提供的一种现有技术方案二的列存储引擎整体架构图;
图8是本申请一实施例提供的一种支持行级并发控制的纯列式更新装置的结构框图;
图9是本发明一实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的所述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请涉及部分专业术语,在下列进行说明:
定长字段:可以用固定的存储长度表示的字段类型,如INTEGER(整型数)等。
变长字段:实际存储长度不定的字段类型,如VARCHAR(可变长度字符串)字段等。
存储段:一块逻辑的存储区域,可以连续存储一段定长字段或者变长字段,且可以按列读取或更新一批行号对应的实际数据。
事务控制块:一个事务控制的最小单元,记录数据行的Undo(撤销)入口信息及事务提交等事务相关信息,用于事务回滚及一致性读等场景。
事务控制存储段:用于存储事务控制块的存储段,事务控制块为定长字段。
列式变长字段数据存储段:一块用于存储变长字段实际数据的存储段,可写入一段变长字段,写入完毕会返回该变长字段的位置信息。
Undo:撤销数据是反转DML语句结果所需的信息。撤销数据通常被称为“回滚数据”。
列式变长字段位置信息存储段:一块用于存储变长字段位置信息的存储段,其中位置信息为定长字段。
发明人通过分析现有技术发现:现有技术一和现有技术二,下面分别阐述:
现有技术一的流程如图4所示,Oracle Database In-Memory Column Store(IMCS):从Oracle 12开始,Oracle引入了IMCS特性,即在SGA中再单独开辟一块内存空间,以列存储的方式来存储对象,从而提升查询的性能。IMCS存储并不能代替行存,而是对行式存储在分析领域的一个补充。该方案的缺点:
1.需要消耗大量的内存,不适用于海量数据的分析场景。
2.对于新写入的数据,需要转换到列式存储格式,有转换开销和时延。
系统重启后需要重新加载列存数据,且数据产生两份,存储成本高。
现有技术方案二,OpenGauss中列存储引擎的存储基本单位是CU(CompressionUnit,压缩单元),即表中一列的一部分数据组成的压缩数据块。行存储引擎中是以行作为单位来管理,而当使用列存储时,整个表整体按照不同列划分为若干个CU,划分方式如图5所示。
如图5所示,假设以6万行作为一个单位,则一个12万行、4列宽的表被划分为8个CU,每个CU对应一个列上的6万个列数据。图中有列0、列1、列2、列3四列,数据按照行切分了两个行组(Row Group),每个行组有固定的行数。针对每个行组按照列做数据压缩,形成CU。每个行组内部各个列的CU的行边界是完全对齐的。当然,大部分时候,CU在经过压缩后,因为数据特征与压缩率的不同,文件大小会完全不同,如图6所示。
为了管理表对应的CU,与执行器层进行对接来提供各种功能,列存储引擎使用了CUDesc(压缩单元描述符)表来记录一个列存储表中CU对应的元信息,如图7所示。
与此同时,每张列存储表还配有一张Delta表,Delta表自身为行存储表。当有少量的数据插入到一张列存储表时,数据会被暂时放入Delta表,等到到达阈值或满足一定条件或操作时再行整合为CU文件。Delta表可以帮助避免单点数据操作带来的加重的CU操作与开销。
由于列存的操作基本单位CU是由CUDesc表中的行进行管理的,因此列存可见性的单位,也是CU级别(CUDesc),不同于行存的行级别。多个事务之间在一个CU上的并发管控,实际上取决于在其对应的CUDesc记录上是否冲突。
列存储的CU中数据的删除,实际上是标记删除。删除操作,相当于是更新了CUDesc表中CU对应CUDesc记录的delete bitmap(删除位图)结构,标记列中某行对应数据已被删除,而CU文件数据不会被更改。
由于CU以及CUDesc的元数据管理模式,原有系统中的Vacuum机制实际上并不会非常有效的清除CU中已经失效的存储空间。
但现有技术二的缺点:
1.同时使用行存和列存,有Delta表到CU的转换开销。
2.列存储的更新遵循仅允许追加的原则,即CU文件仅会向后进行延展扩充,亦或是启用新的CU文件,而不是在对应行在CU中的位置就地更新,当更新操作频繁时,会产生大量的墓碑数据,导致数据文件膨胀。
3.同一CU上的两条无关记录的更新会影响彼此,因为一个事务的更新会因为在CUDesc上的锁冲突而触发另一个事务回滚或者重读。
4.对于删除的数据,仍然占用空间,需要执行清理操作,清理操作需要清理无用行,还会合并数据块,整个过程会锁定表,影响业务正常执行。
在本申请的实施例中,针对现有的“行式存储不利于分析查询、列式存储不利于更新、行列混合需要相互转换并更新困难”的问题,本申请提供了将待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据的解决方案,具体为:当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据。本申请采用列式存储结构和行级并发控制的事务控制机制相结合,其中事务控制机制使用Undo技术进行多版本并发控制,使得本发明支持列式存储的原地更新和删除,且不产生墓碑数据,不同数据行之间的事务互不影响。HTAP场景采用纯列存的存储结构,将数据块类型分为事务控制块,定长数据块和变长数据块,可以支持并发更新和高效查询,且没有转换开销。对于定长字段采用定长块存储,支持在线原地更新,对于变长字段,将一个或多个变长值按批存储并可预留更新空间。
参照图1,示出了本申请一实施例提供的一种支持行级并发控制的纯列式更新方法的步骤流程图,具体包括如下步骤:
S110、当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;
S120、依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;
S130、当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据;
S140、依据所述事务控制块将所述新数据进行提交。
下面,将对本示例性实施例中的支持行级并发控制的纯列式更新方法作进一步地说明。
本申请还包括定长字段的访问,定长字段有个特点,假如存储段是个一维数组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长度的存储空间。
本申请还包括变长字段的访问,变长字段的访问分两步:通过定长字段的公式计算出位置信息的偏移,并从位置信息存储段读取位置信息。通过位置信息在数据存储段读取变长字段实际数据。
如上述步骤S110所述,当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段。
在本发明一实施例中,可以结合下列描述进一步说明步骤S110所述“当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段”的具体过程。
如下列步骤所述,依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;依据所述待更新数据包将所述事务控制块进行记录。依据所述事务控制块将所述新数据进行提交。
在一具体实施例中,当接收到待更新数据包时,明确更新的数据行和字段信息,并传递给列式存储引擎;其中,所述待更新数据包中包括更新的数据行和字段信息。
在一具体实施例中,事务控制块分配:从事务控制存储段分配若干事务控制块,每个事务控制块对应于这若干行更新的其中一行。
在一具体实施例中,当数据生成新数据后,事务提交:把分配的事务控制块上的事务置为提交状态,并且推进系统改变序号,结束事务,使更新生效,对其它会话可见。
如上述步骤S120所述,依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块。
在本发明一实施例中,可以结合下列描述进一步说明步骤S120所述“依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块”的具体过程。
如下列步骤所述,事务控制块分配,从事务控制存储段分配若干事务控制块,每个事务控制块对应于这若干行更新的其中一行。
如上述步骤S130所述,当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据。
在本发明一实施例中,可以结合下列描述进一步说明步骤S130所述“当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据”的具体过程。
如下列步骤所述,依据所述待更新数据包生成定长字段的第二偏移,并依据所述第二偏移生成变长字段的第二位置信息;通过所述事务控制块进行记录,并依据所述第二位置信息和所述待更新数据包进行原地更新生成所述新数据。
在一具体实施例中,定长字段数据更新:通过偏移计算公式计算出更新的定长字段的第二偏移;其中,所述偏移计算公式是上述第一公式,并依据所述第二偏移生成变长字段的第二位置信息,使用原地更新的方式更新定长字段的数据,更新前,通过事物控制块记录Undo数据,并通过WAL机制记录REDO日志。如图2所示。
在本发明一实施例中,当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据。
在本发明一实施例中,可以结合下列描述进一步说明步骤所述“当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据”的具体过程。
如下列步骤所述,依据所述待更新数据包生成变长字段的第一偏移,并依据所述第一偏移生成变长字段的第一位置信息;依据所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据,并在所述第一位置信息进行标记。
在一具体实施例中,变长字段数据更新:通过偏移计算公式计算出更新的变长字段的位置信息的第一偏移,在位置信息存储段中读取对应的变长字段的第一位置信息,并通过第一位置信息更新变长字段实际数据段的数据;其中,所述偏移计算公式是上述第一公式。由于可能出现变长字段数据长度的变化,变长字段数据实际存储位置可能发生变化,但是第一位置信息不变,这是由变长字段实际数据段的能力保证的。在更新长度变长的场景,变长字段实际数据段可以采用迁移的方式,对该列的该行数据新找一个足够大小的存储空间进行存储,并在原位置信息做标记,使得根据原位置信息能找到新的数据位置。由于存储单元预留了一定的空闲空间,新找的存储空间大部分情况只需要在预留的空闲空间进行分配即可,而且修改只影响该行数据,不影响其它行,因此更新代价也较小。
如下列步骤所述,当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成所述新数据。
如下列步骤所述,当所述待更新数据包为变长字段且字段长度的字段相较于原有数据不变时,则将所述待更新数据包进行原地更新生成所述新数据。
如下列步骤所述,当所述待更新数据包为变长字段且字段长度的字段相较于原有数据变短时,则将所述待更新数据包进行原地更新生成所述新数据。
在一具体实施例中,变长字段数据更新:通过偏移计算公式计算出更新的变长字段的位置信息的第一偏移,在位置信息存储段中读取对应的变长字段的第一位置信息,并通过第一位置信息更新变长字段实际数据段的数据;其中,所述偏移计算公式是上述第一公式。由于可能出现变长字段数据长度的变化,变长字段数据实际存储位置可能发生变化,但是位置信息不变,这是由变长字段实际数据段的能力保证的。在更新长度不变或者变短的场景,变长字段实际数据段可以采用原地更新的方式进行更新,不产生数据搬迁。
在一具体实施例中,假设一个表t有C1,C2,C3列,其中C1为定长字段类型INTEGER,长度4个字节,C2为变长字段类型VARCHAR,长度不确定,C3为定长字段BITINT,长度8个字节,三列都可能随时被修改和查询。
该发明的存储段数据组织方式如图3所示,定长列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个字节,三列都可能随时被修改和查询。具体如图3所示。
在一具体实施例中,写入流程,如执行insert into t values(1,‘abc’,100);先从事务控制存储段申请事务控制块a,并把该插入操作与a绑定,a同时会决定该插入操作写入的实际逻辑行号,如图2中的第10行。
C1列写入4位定长数值1,C2列写入变长字符串’abc’,C3列写入8位定长数值100。
C1、C3列写入的位置由下列公式决定,如计算出图2中的第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不需要访问。
确定读取一个批次的数据长度,如一次读取图2中的10行数据。
从C1的存储段逻辑行号0开始,连续读取图2中的10行,并记录当前读取的结束位置。
从C2的位置存储段逻辑行号0开始,连续读取图2中的10行,并记录当前读取的结束位置。根据图2中的10行的位置信息,分别从C2的实际数据存储段读出图2中的10行实际的数据,并重新组织成连续的10行变长数据。
对C1和C2读取的数据,组织成统一的列式数据集,并通过Undo日志把未提交的修改回滚,使数据集回到一致性读的状态。
返回列式数据集给上层应用。
在上次读取结束位置开始,重复上述“从C1的存储段逻辑行号0开始”的步骤,直到数据读取完毕。
在一具体实施例中,删除流程:如执行delete from t where c1=1and c2=‘abc’;
先通过查询条件确定要删除的行,如图2中的第10行。
从事务控制存储段申请事务控制块a,表示图2中的第10行需要删除。
把图2中的第10行的有效位置为无效,并记录Undo数据,并通过WAL机制记录REDO日志。下次写入将会复用图2中的第10行数据行的槽位。
C1、C3列数据删除:记录C1、C3列的UND0,实际数据不擦除。
C2列数据删除:位置信息和实际数据都不擦除。
事务提交,完成删除。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图8,示出了本申请一实施例提供的一种支持行级并发控制的纯列式更新装置,具体包括如下模块,
接收模块810:用于当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;
事物控制块模块820:用于依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;
更新模块830:用于当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据;
事务控制块提交模块840:用于依据所述事务控制块将所述新数据进行提交。
在本发明一实施例中,所述接收模块810包括:
匹配子模块:用于依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;
记录子模块:用于依据所述待更新数据包将所述事务控制块进行记录。
在本发明一实施例中,所述更新模块830包括:
第二偏移子模块:用于依据所述待更新数据包生成定长字段的第二偏移,并依据所述第二偏移生成变长字段的第二位置信息;
新数据生成子模块:用于通过所述事务控制块进行记录,并依据所述第二位置信息和所述待更新数据包进行原地更新生成所述新数据。
迁移模块:用于当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据。
在本发明一实施例中,所述迁移模块包括:
提交子模块:用于依据所述事务控制块将所述新数据进行提交。
第一位置信息子模块:用于依据所述待更新数据包生成变长字段的第一偏移,并依据所述第一偏移生成变长字段的第一位置信息;
标记子模块:用于依据所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据,并在所述第一位置信息进行标记。
定长字段子模块:用于当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成所述新数据。
变长字段数据不变子模块:用于当所述待更新数据包为变长字段且字段长度的字段相较于原有数据不变时,则将所述待更新数据包进行原地更新生成所述新数据。
变长字段数据变短子模块:用于当所述待更新数据包为变长字段且字段长度的字段相较于原有数据变短时,则将所述待更新数据包进行原地更新生成所述新数据。
为实现本申请还包括一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现所述的支持行级并发控制的纯列式更新方法的步骤。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
在本具体实施例与上述具体实施例中有重复的操作步骤,本具体实施例仅做简单描述,其余方案参考上述具体实施例描述即可。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图9,示出了本申请的一种支持行级并发控制的纯列式更新方法的计算机设备,具体可以包括如下:
上述计算机设备12以通用计算设备的形式表现,计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,内存28,连接不同系统组件(包括内存28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、音视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
内存28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器30和/或高速缓存存储器32。计算机设备12可以进一步包括其他移动/不可移动的、易失性/非易失性计算机体统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(通常称为“硬盘驱动器”)。尽管图9中未示出,可以提供用于对可移动非易失性磁盘(如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质界面与总线18相连。存储器可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块42,这些程序模块42被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其他程序模块42以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24、摄像头等)通信,还可与一个或者多个使得操作人员能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过I/O接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN)),广域网(WAN)和/或公共网络(例如因特网)通信。如图9所示,网络适配器20通过总线18与计算机设备12的其他模块通信。应当明白,尽管图9中未示出,可以结合计算机设备12使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元16、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统34等。
处理单元16通过运行存储在内存28中的程序,从而执行各种功能应用以及数据处理,例如实现本申请实施例所提供的一种支持行级并发控制的纯列式更新方法。
也即,上述处理单元16执行上述程序时实现:当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据。
在本申请实施例中,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有实施例提供的一种支持行级并发控制的纯列式更新方法。
也即,给程序被处理器执行时实现:当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在操作人员计算机上执行、部分地在操作人员计算机上执行、作为一个独立的软件包执行、部分在操作人员计算机上部分在远程计算机上执行或者完全在远程计算机或者服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到操作人员计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种支持行级并发控制的纯列式更新方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (7)
1.一种支持行级并发控制的纯列式更新方法,其特征在于,包括:
当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;
依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;
当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据;
当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据;
当所述待更新数据包为变长字段且字段长度的字段相较于原有数据变短时,则将所述待更新数据包进行原地更新生成所述新数据;
依据所述事务控制块将所述新数据进行提交。
2.根据权利要求1所述的支持行级并发控制的纯列式更新方法,其特征在于,所述依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块的步骤,还包括:
依据所述事务控制块记录相对应的Undo数据。
3.根据权利要求1所述的支持行级并发控制的纯列式更新方法,其特征在于,所述当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据的步骤,包括:
依据所述待更新数据包生成定长字段的第二偏移,并依据所述第二偏移生成变长字段的第二位置信息;
通过所述事务控制块进行记录,并依据所述第二位置信息和所述待更新数据包进行原地更新生成所述新数据。
4.根据权利要求1所述的支持行级并发控制的纯列式更新方法,其特征在于,所述将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据的步骤,包括:
依据所述待更新数据包生成变长字段的第一偏移,并依据所述第一偏移生成变长字段的第一位置信息;
依据所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据,并在所述第一位置信息进行标记。
5.根据权利要求1所述的支持行级并发控制的纯列式更新方法,其特征在于,所述确定所述待更新数据包中所包含数据的字段类型和字段长度的步骤,包括:
当所述待更新数据包为定长字段时或当所述待更新数据包为变长字段且字段长度的字段相较于原有数据不变时,则将所述待更新数据包原地更新生成所述新数据。
6.一种支持行级并发控制的纯列式更新装置,其特征在于,包括:
接收模块,用于当接收到待更新数据包时,确定所述待更新数据包中所包含数据的字段类型和字段长度;其中,所述字段类型包括定长字段和变长字段;
事物控制块模块,用于依据所述待更新数据包在预设事务控制存储段中匹配所述待更新数据包中每行数据相对应的事务控制块;
更新模块,用于当所述待更新数据包为定长字段时,则将所述待更新数据包原地更新生成新数据;当所述待更新数据包的字段类型为变长字段且字段长度的字段相较于原有数据变长时,则将所述待更新数据包迁移到与之相对应的位置并覆盖所述原有数据生成新数据;当所述待更新数据包为变长字段且字段长度的字段相较于原有数据变短时,则将所述待更新数据包进行原地更新生成所述新数据;
事务控制块提交模块,用于依据所述事务控制块将所述新数据进行提交。
7.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至5中任一项所述的支持行级并发控制的纯列式更新方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211489220.6A CN115905259B (zh) | 2022-11-25 | 2022-11-25 | 一种支持行级并发控制的纯列式更新方法及装置 |
PCT/CN2022/135898 WO2024108640A1 (zh) | 2022-11-25 | 2022-12-01 | 一种支持行级并发控制的纯列式更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211489220.6A CN115905259B (zh) | 2022-11-25 | 2022-11-25 | 一种支持行级并发控制的纯列式更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115905259A CN115905259A (zh) | 2023-04-04 |
CN115905259B true CN115905259B (zh) | 2023-09-05 |
Family
ID=86477537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211489220.6A Active CN115905259B (zh) | 2022-11-25 | 2022-11-25 | 一种支持行级并发控制的纯列式更新方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115905259B (zh) |
WO (1) | WO2024108640A1 (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0336548A2 (en) * | 1988-04-08 | 1989-10-11 | International Business Machines Corporation | Supporting long fields of recoverable database records in a computer system |
CN103631937A (zh) * | 2013-12-06 | 2014-03-12 | 北京趣拿信息技术有限公司 | 构建列存储索引的方法、装置及系统 |
CN105793843A (zh) * | 2013-09-21 | 2016-07-20 | 甲骨文国际公司 | 用于oltp和分析工作量的用于内存数据库的组合行和列式存储 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9483516B2 (en) * | 2014-03-14 | 2016-11-01 | Sap Se | Multi-version concurrency control across row store and column store |
CN103942342B (zh) * | 2014-05-12 | 2017-02-01 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
CN110109910A (zh) * | 2018-01-08 | 2019-08-09 | 广东神马搜索科技有限公司 | 数据处理方法及系统、电子设备和计算机可读存储介质 |
CN108959587B (zh) * | 2018-07-10 | 2021-03-02 | 上海达梦数据库有限公司 | 基于列存储的数据更新方法、装置、服务器及存储介质 |
-
2022
- 2022-11-25 CN CN202211489220.6A patent/CN115905259B/zh active Active
- 2022-12-01 WO PCT/CN2022/135898 patent/WO2024108640A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0336548A2 (en) * | 1988-04-08 | 1989-10-11 | International Business Machines Corporation | Supporting long fields of recoverable database records in a computer system |
CN105793843A (zh) * | 2013-09-21 | 2016-07-20 | 甲骨文国际公司 | 用于oltp和分析工作量的用于内存数据库的组合行和列式存储 |
CN103631937A (zh) * | 2013-12-06 | 2014-03-12 | 北京趣拿信息技术有限公司 | 构建列存储索引的方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2024108640A1 (zh) | 2024-05-30 |
CN115905259A (zh) | 2023-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7410181B2 (ja) | ハイブリッド・インデックス作成方法、システム、プログラム | |
US9922077B2 (en) | Reducing the cost of update, delete, and append-only insert operations in a database | |
EP3047397B1 (en) | Mirroring, in memory, data from disk to improve query performance | |
US10360146B2 (en) | Group garbage collection for multi-version concurrency control in database systems | |
US9606921B2 (en) | Granular creation and refresh of columnar data | |
US8700674B2 (en) | Database storage architecture | |
US5999943A (en) | Lob locators | |
US6061678A (en) | Approach for managing access to large objects in database systems using large object indexes | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
US8977597B2 (en) | Generating and applying redo records | |
US5613113A (en) | Consistent recreation of events from activity logs | |
US7376674B2 (en) | Storage of multiple pre-modification short duration copies of database information in short term memory | |
US6738790B1 (en) | Approach for accessing large objects | |
US20060020634A1 (en) | Method, system and program for recording changes made to a database | |
US9811560B2 (en) | Version control based on a dual-range validity model | |
US10678772B2 (en) | Sparse infrastructure for tracking ad-hoc operation timestamps | |
US10409799B2 (en) | Supporting updatable repeated values over variable schema | |
CN115905259B (zh) | 一种支持行级并发控制的纯列式更新方法及装置 | |
CN115809268A (zh) | 一种基于分片索引的自适应查询方法和装置 | |
CN115827653B (zh) | 一种用于htap和海量数据的纯列式更新方法及装置 | |
CN115718571B (zh) | 一种基于多维度特征的数据管理方法和装置 | |
CN118051502B (zh) | 数据库的索引处理方法、装置、设备及可读存储介质 | |
CN115878563B (zh) | 一种分布式文件系统目录级快照的实现方法及电子设备 | |
CN117951094A (zh) | 存储空间的回收方法、文件系统、介质和计算设备 | |
CN115729930A (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 |