一种PG数据库的自动化表分区方法及相关装置与流程

文档序号:22833512发布日期:2020-11-06 16:23阅读:187来源:国知局
一种PG数据库的自动化表分区方法及相关装置与流程

本发明涉及数据库技术领域,特别是涉及一种pg数据库的自动化表分区方法、一种pg数据库的自动化表分区装置、一种pg数据库的自动化表分区设备以及一种计算机可读存储介质。



背景技术:

postgresql是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ordbms),通常也称为fg数据库,是一款非常优秀的开源数据库,有丰富的的功能,在功能上是全面超越mysql的一个开源数据库,在性能上也不比mysql差,同时postgresql与oracle一样,都是进程架构,能更好的发挥出多cpu的性能。随着pg数据库的使用越来越普通,对该数据库的优化工作也在不断地发展中。其中对分区表设置就是数据库优化一个重要方面。由于pg数据库的不同版本对表分区的实现有着很大差别。pgv8.x以及现在使用最为普遍的pgv9.x版本,均没有实现内置分区,在表分区的实现上较为困难。pgv10.x以及上版本对表分区的实现愈加完善起来。目前在对pg数据库的测试以及使用中,还是从事手动创建表分区。

在现有技术中,目前对pg数据库表分区的创建,是根据不同数据库版本,手动创建表分区。对于pgv10.x以下版本,按照数据库本身支持的表分区创建,即首先以继承表的方式创建子表的方式实现分区;再通过创建触发器实现数据分发,从而实现向主表插入数据,便可以自动分发到子分区表中。对于pgv10.x及以上版本,因为数据库本身实现了对内置分区的支持,所以不需要创建触发器来实现数据分发,直接创建分区主表,然后再创建分区表即可。

而在现有技术中,手动进行表分区,v10以下版本表分区操作繁琐,耗时长,而且优化后性能提升不明显;v10以上版本,虽然实现了内置表分区,相较于低版本的数据库而言,操作简化,但是当进行数据库测试调优时,频繁操作数据库,逐条手动完成分区表的创建也非常耗工时。效率低下。所以如何能自动识别数据库不同版本并自动完成表分区的创建是本领域技术人员急需解决的问题。



技术实现要素:

本发明的目的是提供一种pg数据库的自动化表分区方法,针对pg数据库不同版本均可以完成自动的表分区;本发明的另一目的在于提供一种种pg数据库的自动化表分区装置、一种pg数据库的自动化表分区设备以及一种计算机可读存储介质,针对pg数据库不同版本均可以完成自动的表分区。

为解决上述技术问题,本发明提供一种pg数据库的自动化表分区方法,包括:

获取pg数据库分区指令;

根据所述pg数据库分区指令获取pg数据库的版本号;

当所述版本号低于v10时,下载并安装pathman插件;

调用所述pathman插件对所述pg数据库进行表分区;

当所述版本号不低于v10时,通过所述pg数据库预设的分区功能模块对所述pg数据库进行表分区。

可选的,在所述获取pg数据库分区指令之前,还包括:

获取pg数据库的安装完成信息;

根据所述安装完成信息建立所述pg数据库的主表。

可选的,所述获取pg数据库分区指令包括:

获取对应所述主表中目标主表的选取指令;

根据所述选取指令生成对应所述目标主表的pg数据库分区指令。

可选的,所述调用所述pathman插件对所述pg数据库进行表分区包括:

获取子分区表的配置信息;

调用所述pathman插件,建立对应所述配置信息的子分区表。

可选的,所述当所述版本号不低于v10时,通过所述pg数据库预设的分区功能模块对所述pg数据库进行表分区包括:

当所述版本号不低于v10时,获取子分区表的配置信息;

调用所述pg数据库预设的分区功能模块,建立对应所述配置信息的子分区表。

本发明还提供了一种pg数据库的自动化表分区装置,包括:

指令获取模块:用于获取pg数据库分区指令;

版本号获取模块:用于根据所述pg数据库分区指令获取pg数据库的版本号;

pathman插件模块:当所述版本号低于v10时,下载并安装pathman插件;

低版本分区模块:用于调用所述pathman插件对所述pg数据库进行表分区;

高版本分区模块:用于当所述版本号不低于v10时,通过所述pg数据库预设的分区功能模块对所述pg数据库进行表分区。

可选的,还包括:

pg数据库模块:用于获取pg数据库的安装完成信息;

主表模块:用于根据所述安装完成信息建立所述pg数据库的主表。

可选的,所述指令获取模块包括:

选取指令单元:用于获取对应所述主表中目标主表的选取指令;

指令获取单元:用于根据所述选取指令生成对应所述目标主表的pg数据库分区指令。

本发明还提供了一种pg数据库的自动化表分区设备,所述设备包括:

存储器:用于存储计算机程序;

处理器:用于执行所述计算机程序时实现如上述任一项所述pg数据库的自动化表分区方法的步骤。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述pg数据库的自动化表分区方法的步骤。

本发明所提供的一种pg数据库的自动化表分区方法,包括获取pg数据库分区指令;根据pg数据库分区指令获取pg数据库的版本号;当版本号低于v10时,下载并安装pathman插件;调用pathman插件对pg数据库进行表分区;当版本号不低于v10时,通过pg数据库预设的分区功能模块对pg数据库进行表分区。在对pg数据库进行分区时,首先会根据pg数据库的版本号判断pg数据库是v10以下版本还是v10以上版本。当pg数据库的版本低于v10时,会自动下载安装pathman插件,并基于pathman插件完成pg数据库的表分区;当pg数据库的版本不低于v10时,会基于pg数据库自带的分区功能模块完成pg数据库的表分区,从而实现针对pg数据库不同版本均可以完成自动化的表分区。

本发明还提供了一种pg数据库的自动化表分区装置、一种pg数据库的自动化表分区设备以及一种计算机可读存储介质,同样具有上述有益效果,在此不再进行赘述。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的一种pg数据库的自动化表分区方法的流程图;

图2为本发明实施例所提供的一种具体的pg数据库的自动化表分区方法的流程图;

图3为本发明实施例所提供的一种pg数据库的自动化表分区装置的结构框图;

图4为本发明实施例所提供的一种pg数据库的自动化表分区设备的结构框图。

具体实施方式

本发明的核心是提供一种pg数据库的自动化表分区方法。在现有技术中,目前对pg数据库表分区的创建,是根据不同数据库版本,手动创建表分区。对于pgv10.x以下版本,按照数据库本身支持的表分区创建,即首先以继承表的方式创建子表的方式实现分区;再通过创建触发器实现数据分发,从而实现向主表插入数据,便可以自动分发到子分区表中。对于pgv10.x及以上版本,因为数据库本身实现了对内置分区的支持,所以不需要创建触发器来实现数据分发,直接创建分区主表,然后再创建分区表。

而在现有技术中,手动进行表分区,v10以下版本表分区操作繁琐,耗时长,而且优化后性能提升不明显;v10以上版本,虽然实现了内置表分区,相较于低版本的数据库而言,操作简化,但是当进行数据库测试调优时,频繁操作数据库,逐条手动完成分区表的创建也非常耗工时。效率低下。

而本发明所提供的一种pg数据库的自动化表分区方法,包括获取pg数据库分区指令;根据pg数据库分区指令获取pg数据库的版本号;当版本号低于v10时,下载并安装pathman插件;调用pathman插件对pg数据库进行表分区;当版本号不低于v10时,通过pg数据库预设的分区功能模块对pg数据库进行表分区。在对pg数据库进行分区时,首先会根据pg数据库的版本号判断pg数据库是v10以下版本还是v10以上版本。当pg数据库的版本低于v10时,会自动下载安装pathman插件,并基于pathman插件完成pg数据库的表分区;当pg数据库的版本不低于v10时,会基于pg数据库自带的分区功能模块完成pg数据库的表分区,从而实现针对pg数据库不同版本均可以完成自动化的表分区。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例所提供的一种pg数据库的自动化表分区方法的流程图。

参见图1,在本发明实施例中,pg数据库的自动化表分区方法包括:

s101:获取pg数据库分区指令。

有关pg数据库分区指令的具体形式可以根据实际情况自行设定,在此不做具体限定,只要服务器接收到该pg数据库分区指令时可以执行下述步骤即可。

具体的,在本发明实施例中可以预先封装一auto.sh脚本,而在本步骤中可以通过上述auto.sh脚本执行本步骤。

s102:根据pg数据库分区指令获取pg数据库的版本号。

在本步骤中,会根据s101中获取的pg数据库分区指令来检查安装的取pg数据库的版本号,该版本号通常以vx的形式表示,其中x表示为具体的数字。

具体的,本步骤具体可以通过上述auto.sh脚本中的psql--version获取当前linux系统的pg数据库版本号。

s103:当版本号低于v10时,下载并安装pathman插件。

当pg数据库的版本号低于v10时,意味着该pg数据库没有实现内置分区,即无法通过pg数据库自身实现表分区功能。因此在本步骤中,具体会自动下载pathman插件、安装编译该pathman插件、并且设置环境变量,以便于pathman插件的调用。

具体的,在本发明实施例中可以预先封装一extension.sh脚本。在需要执行本步骤时,会自动执行extension.sh脚本,通过extension.sh脚本实现pathman插件的下载以及安装。

s104:调用pathman插件对pg数据库进行表分区。

在本步骤中,当安装完pathman插件之后,可以调用pathman插件对版本低于v10的pg数据库进行表分区。有关pathman插件的具体内容可以参考现有技术,在此不再进行赘述。在本步骤中,具体会通过pathman插件实现对低版本pg数据库的表分区。

s105:当版本号不低于v10时,通过pg数据库预设的分区功能模块对pg数据库进行表分区。

当pg数据库的版本号不低于v10时,意味着该pg数据库实现了内置分区,即可以通过pg数据库自身实现表分区功能。因此在本步骤中,具体会通过高版本pg数据库预设的分区功能模块对pg数据库进行表分区。具体的,在本发明实施例中通常预先封装一installed.sh脚本。在执行本步骤时,可以自动执行该installed.sh脚本,通过installed.sh脚本基于pg数据库预设的分区功能模块对pg数据库进行表分区。

本发明实施例所提供的一种pg数据库的自动化表分区方法,包括获取pg数据库分区指令;根据pg数据库分区指令获取pg数据库的版本号;当版本号低于v10时,下载并安装pathman插件;调用pathman插件对pg数据库进行表分区;当版本号不低于v10时,通过pg数据库预设的分区功能模块对pg数据库进行表分区。在对pg数据库进行分区时,首先会根据pg数据库的版本号判断pg数据库是v10以下版本还是v10以上版本。当pg数据库的版本低于v10时,会自动下载安装pathman插件,并基于pathman插件完成pg数据库的表分区;当pg数据库的版本不低于v10时,会基于pg数据库自带的分区功能模块完成pg数据库的表分区,从而实现针对pg数据库不同版本均可以完成自动化的表分区。

有关本发明所提供的一种pg数据库的自动化表分区方法的具体内容将在下述发明实施例中做详细介绍。

请参考图2,图2为本发明实施例所提供的一种具体的pg数据库的自动化表分区方法的流程图。

参见图2,在本发明实施例中,pg数据库的自动化表分区方法包括:

s201:获取pg数据库的安装完成信息。

有关安装完成信息的具体形式可以根据实际情况自行设定,在此不做具体限定。在本发明实施例中,安装完成信息通常为pg数据库刚刚完成时所生成的信息。而在本步骤中,当获取pg数据库的安装完成信息时,通常意味着pg数据库刚刚安装完成。

s202:根据安装完成信息建立pg数据库的主表。

在本步骤中,具体会根据上述安装完成信息建立pg数据库的主表,该主表的数量可以为一个也可以为多个,在本发明实施例中不做具体限定。

s203:获取对应主表中目标主表的选取指令。

在本步骤中,用户通常需要从上岁数步骤中建立的主表中,选取一需要进行表分区的目标主表。相应的在本步骤中,服务器会获取到一个对应目标主表的选取指令。

s204:根据选取指令生成对应目标主表的pg数据库分区指令。

在本步骤中,具体会根据上述选取指令生成对应所述目标主表的pg数据库分区指令,以便在下述本步骤中根据该pg数据库分区指令对目标主表进行表分区。

具体的,在本发明实施例中,具体可以通过auto.sh脚本中的rpm–qa|greppostgresql来判断是否正在安装有pg数据库,并执行上述s201至s204以最终生成pg数据库分区指令。

s205:根据pg数据库分区指令获取pg数据库的版本号。

s206:当版本号低于v10时,下载并安装pathman插件。

上述s205至s206与上述发明实施例中s102至s103基本一致,详细内容请参考上述发明实施例,在此不再进行赘述。

s207:获取子分区表的配置信息。

在本步骤中,通常是在执行extension.sh脚本时,会让用户输入子分区表的配置信息,例如表名、id字段名、数量等,以便在后续步骤中根据该配置信息生成对应的子分区表。

s208:调用pathman插件,建立对应配置信息的子分区表。

在本步骤中,具体会通过pathman插件,根据上述配置信息建立对应的子分区表,以完成对pg数据库的表分区。有关pathman插件具体执行的过程可以参考现有技术,在此不再进行赘述。

s209:当版本号不低于v10时,获取子分区表的配置信息。

在本步骤中,通常是在执行installed.sh脚本时,会让用户输入子分区表的配置信息,例如表名、id字段名、数量等,以便在后续步骤中根据该配置信息生成对应的子分区表。本步骤的其余内容以在上述发明实施例中s105进行详细介绍,在此不再进行赘述。

s210:调用pg数据库预设的分区功能模块,建立对应配置信息的子分区表。

在本步骤中,通常是通过installed.sh脚本,根据上述配置信息建立对应的子分区表,以完成对pg数据库的表分区。有关分区功能模块具体执行的过程可以参考现有技术,在此不再进行赘述。

本发明实施例所提供的一种pg数据库的自动化表分区方法,在对pg数据库进行分区时,首先会根据pg数据库的版本号判断pg数据库是v10以下版本还是v10以上版本。当pg数据库的版本低于v10时,会自动下载安装pathman插件,并基于pathman插件完成pg数据库的表分区;当pg数据库的版本不低于v10时,会基于pg数据库自带的分区功能模块完成pg数据库的表分区,从而实现针对pg数据库不同版本均可以完成自动化的表分区。

下面对本发明实施例所提供的一种pg数据库的自动化表分区装置进行介绍,下文描述的pg数据库的自动化表分区装置与上文描述的pg数据库的自动化表分区方法可相互对应参照。

请参考图3,图3为本发明实施例所提供的一种pg数据库的自动化表分区装置的结构框图。

参见图3,在本发明实施例中,pg数据库的自动化表分区装置可以包括:

指令获取模块100:用于获取pg数据库分区指令。

版本号获取模块200:用于根据所述pg数据库分区指令获取pg数据库的版本号。

pathman插件模块300:当所述版本号低于v10时,下载并安装pathman插件。

低版本分区模块400:用于调用所述pathman插件对所述pg数据库进行表分区。

高版本分区模块500:用于当所述版本号不低于v10时,通过所述pg数据库预设的分区功能模块对所述pg数据库进行表分区。

作为优选的,在本发明实施例中,还可以包括:

pg数据库模块:用于获取pg数据库的安装完成信息。

主表模块:用于根据所述安装完成信息建立所述pg数据库的主表。

作为优选的,在本发明实施例中,所述指令获取模块100可以包括:

选取指令单元:用于获取对应所述主表中目标主表的选取指令;

指令获取单元:用于根据所述选取指令生成对应所述目标主表的pg数据库分区指令。

作为优选的,在本发明实施例中,所述低版本分区模块400可以包括:

第一配置信息单元:用于获取子分区表的配置信息。

第一划区单元:用于调用所述pathman插件,建立对应所述配置信息的子分区表。

作为优选的,在本发明实施例中,所述高版本分区模块500可以包括:

第二配置信息单元:当所述版本号不低于v10时,获取子分区表的配置信息。

第二划区单元:用于调用所述pg数据库预设的分区功能模块,建立对应所述配置信息的子分区表。

本实施例的pg数据库的自动化表分区装置用于实现前述的pg数据库的自动化表分区方法,因此pg数据库的自动化表分区装置中的具体实施方式可见前文中pg数据库的自动化表分区方法的实施例部分,例如,指令获取模块100,版本号获取模块200,pathman插件模块300,低版本分区模块400,高版本分区模块500分别用于实现上述页缓存回收方法中步骤s101至s105,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。

下面对本发明实施例提供的一种pg数据库的自动化表分区设备进行介绍,下文描述的pg数据库的自动化表分区设备与上文描述的pg数据库的自动化表分区方法以及pg数据库的自动化表分区装置可相互对应参照。

请参考图4,图4为本发明实施例所提供的一种pg数据库的自动化表分区设备的结构框图。

参照图4,该pg数据库的自动化表分区设备可以包括处理器11和存储器12。

所述存储器12用于存储计算机程序;所述处理器11用于执行所述计算机程序时实现上述发明实施例中所述的pg数据库的自动化表分区方法。

本实施例的pg数据库的自动化表分区设备中处理器11用于安装上述发明实施例中所述的pg数据库的自动化表分区装置,同时处理器11与存储器12相结合可以实现上述任一发明实施例中所述的pg数据库的自动化表分区方法。因此基于pg数据库的自动化表分区设备中的具体实施方式可见前文中的pg数据库的自动化表分区方法的实施例部分,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一发明实施例中所介绍的一种pg数据库的自动化表分区方法。其余内容可以参照现有技术,在此不再进行展开描述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种pg数据库的自动化表分区方法、一种pg数据库的自动化表分区装置、一种pg数据库的自动化表分区设备以及一种计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1