一种基于ClickHouse数据库的MVCC多版本折叠树实现系统及方法与流程

专利检索2024-10-20  13


一种基于clickhouse数据库的mvcc多版本折叠树实现系统及方法
技术领域
1.本发明涉及数据库数据存储处理技术领域,具体提供一种基于clickhouse数据库的mvcc多版本折叠树实现系统及方法。


背景技术:

2.clickhouse是一款mpp架构的列式存储数据库,主要用于在线分析处理查询(olap),分析性能超过市场上大部分的列式存储数据库,尤其是对单表的分析性能极好。
3.mvcc(多版本并发控制)数据,包含一个hlc时间戳,它是由两个整型值组成,分别是wall_time和logic_time,用来控制数据的版本信息。当wall_time和logic_time不同时为0时,这条数据便是业务数据,当wall_time和logic_time同时为0时,即为写意图数据。
4.我们在使用clickhouse自带多版本折叠树进行mvcc数据存储时,发现当我们存储多版本数据的情况下,由于我们的版本号列需要进行两种不同的情况的计算,所以clickhouse自带的多版本折叠树无法满足我们的需求(它只会根据版本号保留最新的一个)。
5.因此,我们需要根据clickhouse自带多版本折叠树进行改造,制定出一个能够根据版本号处理,进行多种情况的数据折叠的mvcc折叠树。


技术实现要素:

6.本发明的技术任务是针对上述存在的问题,提供一种能够有效降低硬盘中的数据的读取,减少磁盘io,并能有效降低存储空间使用率的基于clickhouse数据库的mvcc多版本折叠树实现系统。
7.本发明进一步的技术任务是提供一种基于clickhouse数据库的mvcc多版本折叠树实现方法。
8.为实现上述目的,本发明提供了如下技术方案:
9.一种基于clickhouse数据库的mvcc多版本折叠树实现系统,包括多版本折叠树定义声明模块、多版本折叠树合并模块和多版本折叠树查询模块;
10.多版本折叠树定义声明模块:增加一个新的折叠树,设置一个整型列为删除标记列,设置wall_time列和logic_time列为版本号列;
11.多版本折叠树合并模块:对折叠树保存的数据分区进行合并;
12.多版本折叠树查询模块:对多版本折叠树的使用与执行流程进行说明。
13.作为优选,所述删除标记列为选取建表语句中的一整型值列,其值为1表示该条数据插入,等于-1表示删除该条数据。
14.作为优选,版本号列为元组列,包含wall_time和logic_time两个值,排序规则为首先对wall_time进行比较,若值相等再比较logic_time,该列用于对多版本数据进行标记。
15.多版本折叠树声明模块运行包括以下步骤:
16.(1)选取一列整型值作为删除标记;
17.(2)将mvcc数据中的hlc数据,即包含一个wall_time和logic_time两列,保存为一个元组,作为版本号使用。
18.作为优选,clickhouse后台进行不同数据分区合并时,数据分区之间根据该模块中的合并算法进行合并。
19.作为优选,用户执行手动合并语句时,对折叠树中所有数据进行合并,用户执行查询语句时增加final标识时,对读取到的数据进行合并处理。
20.多版本折叠树合并模块运行包括以下步骤:
21.(1)当clickhouse数据分区自动合并、用户执行手动合并或final语句时,触发多版本折叠树的合并执行逻辑;
22.(2)根据排序键对需要合并数据进行排序处理;
23.(3)根据合并模块中的合并规则进行合并处理。
24.作为优选,多版本折叠树查询模块执行过程中,读取多个数据分区后,通过执行算子得到最终的执行结果。
25.多版本折叠树查询模块运行在执行计划中增加合并处理的处理方法,执行过程中,读取多个数据分区后,合并数据,再通过执行算子得到最终的执行结果。
26.一种基于clickhouse数据库的mvcc多版本折叠树实现方法,基于本发明所述基于clickhouse数据库的mvcc多版本折叠树实现系统实现,通过折叠树定义声明模块增加一个新的折叠树,设置一个整型列为删除标记列,设置wall_time列和logic_time列为版本号列;通过多版本折叠树合并模块对折叠树保存的数据分区进行合并;通过多版本折叠树查询模块对多版本折叠树的使用与执行流程进行说明。
27.作为优选,多版本折叠树声明模块运行包括以下步骤:
28.(1)选取一列整型值作为删除标记;
29.(2)将mvcc数据中的hlc数据,即包含一个wall_time和logic_time两列,保存为一个元组,作为版本号使用。
30.作为优选,多版本折叠树合并模块运行包括以下步骤:
31.(1)当clickhouse数据分区自动合并、用户执行手动合并或final语句时,触发多版本折叠树的合并执行逻辑;
32.(2)根据排序键对需要合并数据进行排序处理;
33.(3)根据合并模块中的合并规则进行合并处理。
34.作为优选,多版本折叠树查询模块运行在执行计划中增加合并处理的处理方法,执行过程中,读取多个数据分区后,合并数据,再通过执行算子得到最终的执行结果。
35.与现有技术相比,本发明的基于clickhouse数据库的mvcc多版本折叠树实现系统及具有以下突出的有益效果:
36.(一)实现clickhouse对于mvcc(多版本并发控制)数据的支持,解决原有折叠树无法处理该数据的缺点;
37.(二)通过增加多版本折叠树,降低sql语句的复杂性,当使用不处理多版本数据的折叠树时,会通过使用sql的多层嵌套来过滤掉多版本数据,会导致sql相当复杂,体现多版
本折叠树的sql简洁性;
38.(三)多版本折叠树能够有效存储空间的使用率,当clickhouse中数据分区树到达一定阈值时,会对这些数据分区进行合并,而在这合并的过程中便会去除掉多余的多版本数据以及需要删除的数据,有效降低存储空间的使用率;
39.(四)在使用多版本折叠树进行查询的时候,由于部分多版本数据已经进行了合并处理,所以能够有效降低硬盘中数据的读取,减少磁盘io,具有良好的推广应用价值。
附图说明
40.图1是本发明所述基于clickhouse数据库的mvcc多版本折叠树实现系统的拓扑图。
具体实施方式
41.下面将结合附图和实施例,对本发明的基于clickhouse数据库的mvcc多版本折叠树实现系统及方法作进一步详细说明。
42.实施例
43.如图1所示,本发明的基于clickhouse数据库的mvcc多版本折叠树实现系统,包括多版本折叠树定义声明模块、多版本折叠树合并模块和多版本折叠树查询模块。
44.多版本折叠树定义声明模块:增加一个新的折叠树,设置一个整型列为删除标记列,设置wall_time列和logic_time列为版本号列。删除标记列为选取建表语句中的一整型值列,其值为1表示该条数据插入,等于-1表示删除该条数据。版本号列为元组列,包含wall_time和logic_time两个值,排序规则为首先对wall_time进行比较,若值相等再比较logic_time,该列用于对多版本数据进行标记。
45.多版本折叠树声明模块运行包括以下步骤:
46.(1)选取一列整型值作为删除标记;
47.(2)将mvcc数据中的hlc数据,即包含一个wall_time和logic_time两列,保存为一个元组,作为版本号使用。
48.多版本折叠树合并模块:对折叠树保存的数据分区进行合并。clickhouse后台进行不同数据分区合并时,数据分区之间根据该模块中的合并算法进行合并。
49.多版本折叠树合并模块运行包括以下步骤:
50.(1)当clickhouse数据分区自动合并、用户执行手动合并或final语句时,触发多版本折叠树的合并执行逻辑;
51.(2)根据排序键对需要合并数据进行排序处理;
52.(3)根据合并模块中的合并规则进行合并处理。
53.用户执行手动合并语句时,对折叠树中所有数据进行合并,用户执行查询语句时增加final标识时,对读取到的数据进行合并处理。
54.多版本折叠树查询模块:对多版本折叠树的使用与执行流程进行说明。多版本折叠树查询模块执行过程中,读取多个数据分区后,通过执行算子得到最终的执行结果。
55.多版本折叠树查询模块运行在执行计划中增加合并处理的处理方法,执行过程中,读取多个数据分区后,合并数据,再通过执行算子得到最终的执行结果。
56.本发明的基于clickhouse数据库的mvcc多版本折叠树实现方法,基于本发明所述基于clickhouse数据库的mvcc多版本折叠树实现系统实现,通过折叠树定义声明模块增加一个新的折叠树,设置一个整型列为删除标记列,设置wall_time列和logic_time列为版本号列;通过多版本折叠树合并模块对折叠树保存的数据分区进行合并;通过多版本折叠树查询模块对多版本折叠树的使用与执行流程进行说明。
57.多版本折叠树声明模块运行包括以下步骤:
58.(1)选取一列整型值作为删除标记;
59.(2)将mvcc数据中的hlc数据,即包含一个wall_time和logic_time两列,保存为一个元组,作为版本号使用。
60.多版本折叠树合并模块运行包括以下步骤:
61.(1)当clickhouse数据分区自动合并、用户执行手动合并或final语句时,触发多版本折叠树的合并执行逻辑;
62.(2)根据排序键对需要合并数据进行排序处理;
63.(3)根据合并模块中的合并规则进行合并处理。
64.多版本折叠树查询模块运行在执行计划中增加合并处理的处理方法,执行过程中,读取多个数据分区后,合并数据,再通过执行算子得到最终的执行结果。
65.以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

技术特征:
1.一种基于clickhouse数据库的mvcc多版本折叠树实现系统,其特征在于:包括多版本折叠树定义声明模块、多版本折叠树合并模块和多版本折叠树查询模块;多版本折叠树定义声明模块:增加一个新的折叠树,设置一个整型列为删除标记列,设置wall_time列和logic_time列为版本号列;多版本折叠树合并模块:对折叠树保存的数据分区进行合并;多版本折叠树查询模块:对多版本折叠树的使用与执行流程进行说明。2.根据权利要求1所述的基于clickhouse数据库的mvcc多版本折叠树实现系统,其特征在于:所述删除标记列为选取建表语句中的一整型值列,其值为1表示该条数据插入,等于-1表示删除该条数据。3.根据权利要求2所述的基于clickhouse数据库的mvcc多版本折叠树实现系统,其特征在于:版本号列为元组列,包含wall_time和logic_time两个值,排序规则为首先对wall_time进行比较,若值相等再比较logic_time,该列用于对多版本数据进行标记。4.根据权利要求3所述的基于clickhouse数据库的mvcc多版本折叠树实现系统,其特征在于:clickhouse后台进行不同数据分区合并时,数据分区之间根据该模块中的合并算法进行合并。5.根据权利要求4所述的基于clickhouse数据库的mvcc多版本折叠树实现系统,其特征在于:用户执行手动合并语句时,对折叠树中所有数据进行合并,用户执行查询语句时增加final标识时,对读取到的数据进行合并处理。6.根据权利要求5所述的基于clickhouse数据库的mvcc多版本折叠树实现系统,其特征在于:多版本折叠树查询模块执行过程中,读取多个数据分区后,通过执行算子得到最终的执行结果。7.一种基于clickhouse数据库的mvcc多版本折叠树实现方法,其特征在于:该方法基于权利要求1-6任意一项所述基于clickhouse数据库的mvcc多版本折叠树实现系统实现,通过折叠树定义声明模块增加一个新的折叠树,设置一个整型列为删除标记列,设置wall_time列和logic_time列为版本号列;通过多版本折叠树合并模块对折叠树保存的数据分区进行合并;通过多版本折叠树查询模块对多版本折叠树的使用与执行流程进行说明。8.根据权利要求7所述的基于clickhouse数据库的mvcc多版本折叠树实现方法,其特征在于:多版本折叠树声明模块运行包括以下步骤:(1)选取一列整型值作为删除标记;(2)将mvcc数据中的hlc数据,即包含一个wall_time和logic_time两列,保存为一个元组,作为版本号使用。9.根据权利要求8所述的基于clickhouse数据库的mvcc多版本折叠树实现方法,其特征在于:多版本折叠树合并模块运行包括以下步骤:(1)当clickhouse数据分区自动合并、用户执行手动合并或final语句时,触发多版本折叠树的合并执行逻辑;(2)根据排序键对需要合并数据进行排序处理;(3)根据合并模块中的合并规则进行合并处理。10.根据权利要求9所述的基于clickhouse数据库的mvcc多版本折叠树实现方法,其特征在于:多版本折叠树查询模块运行在执行计划中增加合并处理的处理方法,执行过程中,
读取多个数据分区后,合并数据,再通过执行算子得到最终的执行结果。

技术总结
本发明公开了一种基于ClickHouse数据库的MVCC多版本折叠树实现系统及方法,属于数据库数据存储处理技术领域。本发明的基于ClickHouse数据库的MVCC多版本折叠树实现系统包括多版本折叠树定义声明模块、多版本折叠树合并模块和多版本折叠树查询模块;多版本折叠树定义声明模块:增加一个新的折叠树,设置一个整型列为删除标记列,设置wall_time列和logic_time列为版本号列;多版本折叠树合并模块:对折叠树保存的数据分区进行合并。该发明的基于ClickHouse数据库的MVCC多版本折叠树实现系统能够有效降低硬盘中的数据的读取,具有很好的推广应用价值。有很好的推广应用价值。有很好的推广应用价值。


技术研发人员:李盟 贾德星
受保护的技术使用者:山东浪潮科学研究院有限公司
技术研发日:2021.12.30
技术公布日:2022/4/15
转载请注明原文地址:https://win.8miu.com/read-1144829.html

最新回复(0)