掌桥专利:专业的专利平台
掌桥专利
首页

数据源运维方法、装置、设备及计算机可读存储介质

文献发布时间:2024-04-18 20:01:30


数据源运维方法、装置、设备及计算机可读存储介质

技术领域

本申请涉及数据库技术领域,尤其涉及一种数据源运维方法、装置、设备及计算机可读存储介质。

背景技术

异构数据源涉及多个数据结构和存取方式等条件不一样的数据源,异构数据源因其灵活性、可以适应多云环境、降低单点故障风险等优势,在众多领域得到了广泛应用,例如,业务服务平台通常采用异构数据源为客户提供业务服务,以保证业务服务的高可用性。

为了保证异构数据源的稳定性、性能、可用性和安全性等,运维人员会对异构数据源进行查询或者操作。目前,异构数据源的运维主要是通过运维人员调用存储过程进行手动维护,然而这种人工运维方式的运维效率低。

发明内容

本申请的主要目的在于提供一种数据源运维方法、装置、设备及计算机可读存储介质,旨在提高运维异构数据源的运维效率。

为实现上述目的,本申请提供一种数据源运维方法,所述数据源运维方法包括以下步骤:

构造包含参数占位符的预编译语句;

确定目标异构数据源,并分别使用各个目标子数据源各自的参数值替换所述预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句,其中,所述目标子数据源为所述目标异构数据源包含的各个子数据源;

分别在各个所述目标子数据源中执行各自对应的可执行语句,以对所述目标异构数据源进行运维。

可选地,在所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤之前,还包括:

创建集群管理器,并创建集群对象、数据源对象和操作对象,其中,所述集群对象中包括多个所述数据源对象,所述数据源对象中包括多个所述操作对象;

分别对所述集群对象、所述数据源对象和所述操作对象赋予唯一标识,并通过所述集群管理器记录所述集群对象、所述数据源对象与所述操作对象之间的对应关系和所述唯一标识;

创建选择器,并关联所述集群管理器和所述选择器;

通过所述选择器和所述集群管理器定位各个所述目标子数据源。

可选地,所述关联所述集群管理器和所述选择器的步骤,包括:

创建用于标识所述选择器的选择器注解;

在所述集群管理器中创建选择器接口,并将所述选择器注解与选择器接口关联。

可选地,所述选择器包括集群选择器和操作对象选择器,所述通过所述选择器和所述集群管理器定位各个所述目标子数据源的步骤,包括:

根据所述集群管理器中各个所述集群对象的唯一标识,调用所述集群选择器从各个所述集群对象中定位目标集群对象;

根据所述集群管理器中各个所述操作对象的唯一标识,和,所述集群对象、所述数据源对象与所述操作对象之间的对应关系,调用所述操作对象选择器在所述目标集群对象中定位目标数据源对象。

可选地,所述构造包含参数占位符的预编译语句的步骤,包括:

构造不同运维操作对应的预编译语句;

所述分别使用各个目标子数据源各自的参数值替换所述预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句的步骤,包括:

从所述不同运维操作对应的预编译语句中,确定与目标运维操作对应的目标预编译语句;

分别使用各个目标子数据源各自的参数值替换所述目标预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句。

可选地,运维操作为删除操作,在所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤之前,还包括:

确定各个所述目标子数据源中的预删除分区;

若确定各个所述目标子数据源中的预删除分区正确,则执行所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤,以对所述预删除分区进行删除。

可选地,在所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤之后,还包括:

检测各个操作后子数据源中是否存在待删除数据,其中,所述操作后子数据源为执行所述可执行语句后的目标子数据源;

若各个所述操作后子数据源中均不存在待删除数据,则确定删除操作成功。

为实现上述目的,本申请还提供一种数据源运维装置,所述数据源运维装置包括:

构造模块,用于构造包含参数占位符的预编译语句;

替换模块,用于确定目标异构数据源,并分别使用各个目标子数据源各自的参数值替换所述预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句,其中,所述目标子数据源为所述目标异构数据源包含的各个子数据源;

执行模块,用于分别在各个所述目标子数据源中执行各自对应的可执行语句,以对所述目标异构数据源进行运维。

为实现上述目的,本申请还提供一种数据源运维设备,所述数据源运维设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据源运维程序,所述数据源运维程序被所述处理器执行时实现如上所述的数据源运维方法的步骤。

此外,为实现上述目的,本申请还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据源运维程序,所述数据源运维程序被处理器执行时实现如上所述的数据源运维方法的步骤。

本申请中,通过构造包含参数占位符的预编译语句;确定目标异构数据源,并分别使用各个目标子数据源各自的参数值替换所述预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句,其中,所述目标子数据源为所述目标异构数据源包含的各个子数据源;分别在各个所述目标子数据源中执行各自对应的可执行语句,以对所述目标异构数据源进行运维。本申请实现了通过预编译语句对异构数据源的各个子数据源进行自动化运维,提高了运维异构数据源的运维效率。

附图说明

图1为本申请实施例方案涉及的硬件运行环境的结构示意图;

图2为本申请数据源运维方法第一实施例的流程示意图;

图3为本申请一实施方式涉及的集群管理器的结构类图;

图4为本申请一实施方式涉及的选择器的结构类图;

图5为本申请一实施方式涉及的统一数据存取的结构类图;

图6为本申请一实施方式涉及的删除操作的预检流程图;

图7为本申请一实施方式涉及的删除操作的复检流程图;

图8为本申请一实施方式涉及的数据源运维系统的系统架构图;

图9为本申请数据源运维装置较佳实施例的功能模块示意图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

如图1所示,图1是本申请实施例方案涉及的硬件运行环境的设备结构示意图。

需要说明的是,本申请实施例数据源运维设备,所述数据源运维设备可以是智能手机、个人计算机、服务器等设备,在此不做具体限制。

如图1所示,该数据源运维设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的设备结构并不构成对数据源运维设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据源运维程序。操作系统是管理和控制设备硬件和软件资源的程序,支持数据源运维程序以及其它软件或程序的运行。在图1所示的设备中,用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与服务器建立通信连接;而处理器1001可以用于调用存储器1005中存储的数据源运维程序,并执行以下操作:

进一步地,所述将所述第三音频数据的音频特征输入至增益预测模型进行预测,得到所述第一频段中各个频点分别对应的预测增益的操作之前,处理器1001还可以用于调用存储器1005中存储的数据源运维程序,执行以下操作:

构造包含参数占位符的预编译语句;

确定目标异构数据源,并分别使用各个目标子数据源各自的参数值替换所述预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句,其中,所述目标子数据源为所述目标异构数据源包含的各个子数据源;

分别在各个所述目标子数据源中执行各自对应的可执行语句,以对所述目标异构数据源进行运维。

进一步地,在所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤之前,处理器1001还可以用于调用存储器1005中存储的数据源运维程序,执行以下操作:

创建集群管理器,并创建集群对象、数据源对象和操作对象,其中,所述集群对象中包括多个所述数据源对象,所述数据源对象中包括多个所述操作对象;

分别对所述集群对象、所述数据源对象和所述操作对象赋予唯一标识,并通过所述集群管理器记录所述集群对象、所述数据源对象与所述操作对象之间的对应关系和所述唯一标识;

创建选择器,并关联所述集群管理器和所述选择器;

通过所述选择器和所述集群管理器定位各个所述目标子数据源。

进一步地,所述关联所述集群管理器和所述选择器的步骤,包括:

创建用于标识所述选择器的选择器注解;

在所述集群管理器中创建选择器接口,并将所述选择器注解与选择器接口关联。

进一步地,所述选择器包括集群选择器和操作对象选择器,所述通过所述选择器和所述集群管理器定位各个所述目标子数据源的步骤,包括:

根据所述集群管理器中各个所述集群对象的唯一标识,调用所述集群选择器从各个所述集群对象中定位目标集群对象;

根据所述集群管理器中各个所述操作对象的唯一标识,和,所述集群对象、所述数据源对象与所述操作对象之间的对应关系,调用所述操作对象选择器在所述目标集群对象中定位目标数据源对象。

进一步地,所述构造包含参数占位符的预编译语句的步骤,包括:

构造不同运维操作对应的预编译语句;

所述分别使用各个目标子数据源各自的参数值替换所述预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句的步骤,包括:

从所述不同运维操作对应的预编译语句中,确定与目标运维操作对应的目标预编译语句;

分别使用各个目标子数据源各自的参数值替换所述目标预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句。

进一步地,运维操作为删除操作,在所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤之前,处理器1001还可以用于调用存储器1005中存储的数据源运维程序,执行以下操作:

确定各个所述目标子数据源中的预删除分区;

若确定各个所述目标子数据源中的预删除分区正确,则执行所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤,以对所述预删除分区进行删除。

进一步地,在所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤之后,处理器1001还可以用于调用存储器1005中存储的数据源运维程序,执行以下操作:

检测各个操作后子数据源中是否存在待删除数据,其中,所述操作后子数据源为执行所述可执行语句后的目标子数据源;

若各个所述操作后子数据源中均不存在待删除数据,则确定删除操作成功。

基于上述的结构,提出数据源运维方法的各个实施例。

参照图2,图2为本申请数据源运维方法第一实施例的流程示意图。

本申请实施例提供了数据源运维方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。在本实施例中,数据源运维方法的执行主体可以是个人电脑、智能手机、服务器等设备,在本实施例中并不做限制,以下为便于描述,省略执行主体进行各实施例的阐述。在本实施例中,所述数据源运维方法包括:

步骤S10,构造包含参数占位符的预编译语句;

异构数据源涉及多个数据结构和存取方式等条件不一样的数据源,异构数据源因其灵活性、可以适应多云环境、降低单点故障风险等优势,在众多领域得到了广泛应用。业务服务平台通常采用异构数据源为客户提供业务服务,以保证业务服务的高可用性,例如,在金融领域,信用卡业务、消费业务、证券交易业务等金融业务有各自的业务服务平台,业务服务平台承担了大量客户的查询和访问,业务服务平台采用异构数据源提供查询服务,可以提高查询服务的高可用性能。

目前异构数据源的运维主要是通过调用存储过程进行手动维护,这种人工运维方式的运维效率低。

本实施例提出一种异构数据源的统一存取规则,实现了对异构数据源进行自动化运维操作,从而提高运维异构数据源的运维效率。

具体地,构造包含参数占位符的预编译语句。预编译语句是一种在数据库中执行查询或操作时提前编译并存储的数据库查询模板,预编译语句中的变量用参数占位符表示,在使用时,将变量注入到参数占位符即可得到可执行的数据库语句。

预编译语句的类型在此不做限制,例如,在一可行实施方式中,预编译语句可以是SQL(Structured Query Language,结构化查询语言)。构造预编译语句的具体方式在此不做限制,例如,在一可行实施方式中,可以使用预编译语句构造器来生成预编译语句。

进一步地,在一可行实施方式中,当预编译语句中的变量存在多个时,每个变量用不同的参数占位符表示。例如,预编译语句:“select count(*)from$4where TABLE_SCHEMA=?1and TABLE_NAME=?2and PARTITION_NAME IN(?c3)”,其中,“?1”、“?2”、“?c3”、“$4”即为参数占位符,“1”、“2”、“3”、“4”对应入参的位置,数字前的符号表示入参的变量类型;“?”表示单个参数值,也即,1号位注入SCHEMA的单个参数值,2号位注入TABLE_NAME的单个参数值;“?c”表示集合类型的参数值,也即,3号位注入集合类型的参数值;“$”表示表名,也即,4号位入参可直接注入表名。

进一步地,在一可行实施方式中,在生成预编译语句后,可以使用不同的数据源进行测试和验证预编译语句,以确保预编译语句并能够在所选数据源上执行成功。

步骤S20,确定目标异构数据源,并分别使用各个目标子数据源各自的参数值替换所述预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句,其中,所述目标子数据源为所述目标异构数据源包含的各个子数据源;

本实施例中,当异构数据源触发运维操作时,从多个数据源中确定需要进行运维的异构数据源,以下称为目标异构数据源,目标异构数据源包含的多个目标子数据源。在具体实施方式中,可以是根据预设的运维需求确定目标异构数据源,也可以是按照运维人员的指令确定目标异构数据源,在此不做限制。

在一可行实施方式中,触发异构数据源运维的条件可以是预设的运维规则,运维规则具体可以根据实际需求进行设置,例如,运维规则可以是运维周期,也可以是数据源超负载,在此不做限制;在另一可行实施方式中,也可以是按照运维人员的指令确定触发运维,还可以通过其它方式触发异构数据源运维在对,在此不做赘述。

在对目标异构数据源进行运维时,对于各目标子数据源中任一个目标子数据源,使用目标子数据源的参数值替换预编译语句的参数占位符得到目标子数据源对应的可执行语句。在具体实施方式中,目标子数据源的参数值可以按照实际的运维需求和运维规则从目标子数据源中获取,也可以是通过运维人员手动输入,具体可以根据实际需求进行设置,在此不做限制。

由于预编译语句中可能存在多种类型的参数占位符,在使用目标子数据源的参数值替换预编译语句的参数占位符得到目标子数据源对应的可执行语句的过程中,使用参数占位符同一类型的参数值进行参数注入,具体过程可以是:获取与预编译语句中的占位符相对应的参数值,参数可以是单个值、集合,或者其他数据类型,具体取决于预编译语句的需求;将参数值按照占位符的顺序或名称与预编译语句进行匹配,然后将参数值注入到预编译语句中。

例如,在一可行实施方式中,对于预编译语句:“select count(*)from$4whereTABLE_SCHEMA=?1and TABLE_NAME=?2and PARTITION_NAME IN(?c3)”,假设注入的参数:“?1”为”COXDBO”,“?2”为”test”,“?c3”为{”PART_202605”,”PART_202606”,”PART_202606”},“$4”为”table”,则对应的SQL为select count(*)from table where TABLE_SCHEMA='COXDBO'AND TABLE_NAME='test'and PARTITION_NAME IN('PART_202605','PART_202606','PART_202607')。

步骤S30,分别在各个所述目标子数据源中执行各自对应的可执行语句,以对所述目标异构数据源进行运维。

得到各个目标子数据源各自的可执行语句后,连接各个可执行语句到对应的各个目标子数据源中,分别在各个目标子数据源中执行各自对应的可执行语句,以实现对目标子数据源进行查询、更新、删除、修改或其他操作,以对目标异构数据源进行运维。

进一步地,在一可行实施方式中,由于目标子数据源的数据库语言可能与可执行语句不同,因此,在执行可执行语句之前,可以将可执行语句转换成目标子数据源可以执行的数据库语言,以保证运维操作可以顺利进行。

进一步地,在一可行实施方式中,根据运维操作的实际需求,可以在执行完可执行语句之后,返回运维执行结果。示例性地,在一可行实施方式中,可以定义统一结果集,将表下标、查询结果集、更新结果(例如更新行数、更新后总行书等)等通过统一结果集返回。

在运维操作完成后,关闭目标子数据源连接和可执行语句等资源,以释放数据源连接池和数据源资源。进一步地,运维操作的结果可以通过消息通知等方式发送至运维人员的用户终端,以使运维人员及时获知运维结果。

进一步地,在一可行实施方式中,在执行可执行语句的过程中,可能会发生各种异常,例如数据源连接失败、可执行语句语法错误等,因此本实施方式中可以设置异常处理机制来捕获和处理这些异常,确保数据源运维过程中的稳定性和安全性。

本实施例中,通过构造包含参数占位符的预编译语句;确定目标异构数据源,并分别使用各个目标子数据源各自的参数值替换预编译语句的参数占位符,得到各个目标子数据源各自对应的可执行语句,其中,目标子数据源为目标异构数据源包含的各个子数据源;分别在各个目标子数据源中执行各自对应的可执行语句,以对目标异构数据源进行运维。本申请实现了通过预编译语句对异构数据源的各个子数据源进行自动化运维,实现了提高运维异构数据源的运维效率。

进一步地,基于上述第一实施例,提出本申请数据源运维方法的第三实施例,本实施例中,步骤S20:确定目标异构数据源之前,还包括:

步骤S40,创建集群管理器,并创建集群对象、数据源对象和操作对象,其中,所述集群对象中包括多个所述数据源对象,所述数据源对象中包括多个所述操作对象;

本实施例中,通过集群管理器对数据源进行管理和运维,集群管理器可以管理和协调集群中的资源,提高数据源运维系统的资源利用率,简化管理任务,提供自动化运维功能,从而提高异构数据源运维的运维效率。

在进行异构数据源运维之前,需要创建一个用于进行集群管理器,本实施方式中所指的集群为数据源集群,集群管理器是数据源集群管理器。

创建集群对象、数据源对象和操作对象,其中,集群对象中包括多个数据源对象,数据源对象中包括多个操作对象。异构数据源的各个目标子数据源可以在同一个集群对象中,也可以处于不同的集群对象中,在此不做限制。

步骤S50,分别对所述集群对象、所述数据源对象和所述操作对象赋予唯一标识,并通过所述集群管理器记录所述集群对象、所述数据源对象与所述操作对象之间的对应关系和所述唯一标识;

本实施例中,在创建集群对象、数据源对象和操作对象之后,对集群对象、数据源对象和操作对象分别赋予唯一标识,以根据该唯一标识查询和检索特定的集群对象、数据源对象或者操作对象的相关信息,从而提高数据管理和操作的效率。具体地,唯一标识可以是数字、字符串、UUID(Universally Unique Identifier,通用唯一标识符)或其它具有唯一性的标识,具体在此不做限制。

本实施例中,可以在集群管理器中创建一个记录或数据库,用于存储集群对象、数据源对象和操作对象之间的对应关系,对于每个集群对象、数据源对象和操作对象,将其唯一标识与相应对象的详细信息关联起来,在记录中,建立集群对象、数据源对象和操作对象之间的关联。具体对应关系的记录可以通过关系数据库表、键值对存储或其他适合的方式实现,在此不做限制。

进一步地,在一可行实施方式中,随着集群、数据源和操作的创建和变更,还可以在集群管理器中及时更新管理器中记录的集群对象、数据源对象和操作对象,并且更新集群对象、数据源对象与操作对象之间的对应关系。

步骤S60,创建选择器,并关联所述集群管理器和所述选择器;

本实施例中,创建选择器,选择器用于选择特定的数据源对象或操作对象,本实施例中,集群管理器具备必要的权限和接口,以便与选择器协作。本实施例中的选择器包括多种类型的选择器,具体分类可以按照单次选择对象的数量以及选择器的具体功能进行类型区分,在此不做限制。示例性地,在一可行实施方式中,选择器可以包括选择单一对象的单一选择器,和,选择多个对象的多值选择器,单一选择器下包括单一数据源选择器和单一操作对象选择器,多值选择器下包括多值数据源选择器和多值操作对象选择器。

在创建选择器后,关联集群管理器和选择器。在一可行实施方式中,选择器可以是以组件的形式嵌入到集群管理器中,具体可以是通过集群管理器的设置或配置选项实现,本实施方式中,每个集群管理器下都配置有各自的选择器,集群管理器能够直接调用或控制各自的选择器;在另一可行实施方式中,也可以是各个集群管理器共享选择器,具体可以是通过将选择器的标识或引用添加到集群管理器配置中实现,本实施方式中,每个集群管理器可以通过调用选择器提供的接口或方法来实现与选择器的交互。

进一步地,在一可行实施方式中,选择器和集群管理器之间的关联建立后,可以对选择器和管理器进行验证,以确保选择器能够正确地与集群管理器交互,从而保证数据源运维过程的正常执行。具体进行验证方式在此不做限制,例如,在一可行实施方式中,可以是模拟选择器操作,例如创建、更新、删除等操作,并验证集群管理器的响应是否符合预期,以确定选择器和管理器是否能正常交互。

步骤S70,通过所述选择器和所述集群管理器定位各个所述目标子数据源。

通过选择器,基于所述集群管理器中各个所述操作对象的唯一标识,以及,集群对象、数据源对象与操作对象之间的对应关系,定位各个目标子数据源对象,将目标子数据源对象对应的数据源确定目标子数据源。

示例性地,在一可行实施方式中,参照图3,图3为一实施方式涉及的集群管理器结构类图。如图3所示,图3中每个方框表示一个类,各个类之间的连接线表征类之间的联系,不同类型的连接线表征不同的关系,类的基本关系包括关联、泛化、聚合、实现、依赖、继承和组合,具体地,如图3所示的实线+箭头表征关联关系,虚线+空心三角形表征实现关系。

以如图3中所示的集群管理器ClusterManager和集群Cluster为例,集群管理器ClusterManager和集群Cluster为之间通过实线+箭头连接,表征集群管理器ClusterManager和集群Cluster是关联关系。

集群管理器ClusterManager和集群Cluster之间标注了“0..*”和“0..1”,“0..*”和“0..1”表示多重性,具体标注在集群管理器ClusterManager端的“0..1”的表示:集群管理器ClusterManager可以具有0或1个关联实例,集群Cluster端标注的“0..*”表示:集群Cluster可以具有0或多个关联实例。

以图3中所示的集群管理器ClusterManager和数据源管理器DataSourceClusterManager为例,集群管理器ClusterManager和数据源管理器DataSourceClusterManager之间通过虚线+空心三角形连接,表征集群管理器ClusterManager和数据源管理器DataSourceClusterManager之间是实现关系,也即,数据源管理器DataSourceClusterManager实现了集群管理器ClusterManager的接口或抽象类,数据源管理器DataSourceClusterManager为数据源集群管理器,管理数的集群为据源集群。

图3中集群Cluster、源Source、操作对象Operand、表操作对象TableOperand之间的类关系,可以参照上述描述,在此不做赘述。其中,集群管理器ClusterManager、集群Cluster、源Source、和操作对象Operand中的T表征元素类型。

以下对于各个类的属性和方法进行简要说明,具体实施方式中,各个类的属性和方法还可以具有除以下记载之外的其它属性和方法,在此不做限制:

集群管理器ClusterManager具有方法:根据集群标识获取集群对象;获取所有集群标识;获取所有集群。

数据源管理器DataSourceClusterManager具有属性:数据源集群和标识对应表。数据源管理器DataSourceClusterManager具有方法:进行数据源的配置。

集群Cluster是一个表示集群的类,本实施方式中具体为数据源集群,具有以下方法:获取集群标识;获取所有数据源标识;获取所有数据源对象。

数据源集群DataSourceCluster是集群Cluster的实现,具有以下属性:数据源标识和数据源对象对应表;所在集群的标识。具有以下方法:获取数据源集群。

源Source是一个表示源的类,具有以下属性:所属的集群对象;获取源的标识;获取所有操作对象标识;获取所有操作数对象。

源JdbcSource是源Source的实现,具有以下属性:操作对象标识和操作数对象对应表;操作对象集;所在集群标识;所在数据源标识;获取数据源对象。具有以下方法:创建JdbcSource对象。

操作对象Operand是一个表示操作对象的类,具有以下属性:默认索引。具有以下方法:表示操作对象所属的源对象;获取操作对象的标识;获取操作对象所在的数据源。

表操作对象TableOperand是操作对象Operand的具体实现,具有以下属性:表示该表操作对象所属的数据源对象;操作对象的标识;数据源对象。

进一步地,在一可行实施方式中,步骤S60包括:

步骤S601,创建用于标识所述选择器的选择器注解;

本实施方式中各个集群管理器之间共享选择器,可以减少选择器占用过多资源,避免资源浪费的情况,降低异构数据源运维成本。本实施方式中,通过对选择器自定义注解的方式,使得各个集群管理器可以共享选择器,具体地,创建用于标识所述选择器的选择器注解。

进一步地,在一可行实施方式中,选择器和集群管理器之间可以维护一个消息队列,在选择器端创建一个异步线程池,当多个集群管理器同时调用同一个选择器时,通过消息队列和异步线程池可以实现选择器异步处理集群管理器的请求。具体异步处理过程可以是:创建一个消息队列以充当集群管理器和选择器之间的通信通道;配置消息队列到集群管理器和选择器;集群管理器发出请求,并发布至消息队列;消息队列将请求传递给选择器的异步线程池;选择器端中的异步线程池从消息队列中获取集群管理器的请求并异步处理;选择器处理完成后,选择器可以将结果封装成响应消息并返回至消息队列。本实施方式实现了选择器并发处理多个请求,提高数据源运维系统的性能和可伸缩性。

步骤S602,在所述集群管理器中创建选择器接口,并将所述选择器注解与选择器接口关联。

在集群管理器中创建选择器接口,并将选择器注解与选择器接口关联,在调用选择器时,通过解析注解即可调用选择器。

进一步地,在一可行实施方式中,所述选择器包括集群选择器和操作对象选择器,步骤S70包括:

步骤S701,根据所述集群管理器中各个所述集群对象的唯一标识,调用所述集群选择器从各个所述集群对象中定位目标集群对象;

本实施方式中,根据集群管理器中各个集群对象的唯一标识,调用集群选择器从各个集群对象中定位目标集群对象。

步骤S702,根据所述集群管理器中各个所述操作对象的唯一标识,和,所述集群对象、所述数据源对象与所述操作对象之间的对应关系,调用所述操作对象选择器在所述目标集群对象中定位目标数据源对象。

根据集群管理器中各个操作对象的唯一标识,和,集群对象、数据源对象与操作对象之间的对应关系,调用操作对象选择器在目标集群对象中定位目标数据源对象。

示例性地,在一可行实施方式中,参照图4,图4为一实施方式涉及的选择器的结构类图,图4中各个类之间的关系可以参照图3的说明,在此不做赘述,以下对各个类进行简要说明,不构成对各个类的限制:

Selector是表示选择器的类,具有以下方法:测试连接。

ClusterSelector表示集群选择器,用于选择集群对象。NamedClusterSelector是集群名称选择器,用于赋予集群唯一标识的管理器类,具有以下属性:集群标识。

MoreValueSelector是多值选择器,用于选择多个对象的选择器,包括ClusterMoreValueSelector和ClusterMoreValueSelector。ClusterMoreValueSelector是多集群选择器,用于选择多个集群,具有以下方法:查询集群对象;查询集群对象后直接执行。OperandMoreValueSelector是多操作对象选择器,用于选择多个操作对象。

OperandSelector是操作对象选择器,用于选择操作对象,具有以下方法:查询操作对象;查询操作对象后直接执行。操作对象Operand是一个表示操作对象的类,T表示操作对象的类型,具有以下属性:默认索引,具有以下方法:表示操作对象所属的源对象;获取操作对象的标识;获取操作对象所在的数据源。HashOperandSelector是基于Hash算法的对象选择器,使用Hash算法的方式选择操作对象的类,具有以下属性:哈希分区对应表;数据操作集对应表;对象哈希值,具有以下方法:适配集群;基于数据源集群对象创建哈希值。ReturnFirstOperandSelector是一个只返回第一个操作对象的选择器,具有以下属性:操作集对应表,具有以下方法:查询操作集。

示例性地,在一可行实施方式中,如图5所示,图5为一实施方式涉及的统一数据存取的结构类图。图5中BasisSQLInfoGenerator和SQLInfo之间的连接线由空心菱形+实线+箭头组成,表征聚合关系,也即SQLInfo是BasisSQLInfoGenerator的一部分。连接线旁标注的“0..*”和“0..1”,“0..*”和“0..1”表示多重性,具体标注在BasisSQLInfoGenerator端的“0..1”的表示:BasisSQLInfoGenerator可以具有0或1个实例,SQLInfo端标注的“0..*”表示:SQLInfo可以具有0或多个实例。同样地,ClusterMapperProxy与ClusterMapperProxy和ResultWrapper也为聚合关系。

图5中BasisResultWrapper与QueryData、UpdateResult、BatchUpdateResult之间的实心菱形+实线表征组合关系,也即,BasisResultWrapper由QueryData、UpdateResult和BatchUpdateResult组合而成。

图5中实线+箭头表示关联关系,虚线+空心三角形表示实现关系,具体说明可以参照图3的说明,在此不做赘述。

以下对图5中各个类进行简要说明:

UniformDataaccessor是统一数据存取,一个用于访问数据的类,具有以下属性:jdbc模板对象列表,用于存储不同的数据访问模板,具有以下方法:SQL执行;进行SQL执行;异步执行SQL:执行批量更新操作;执行更新操作;执行查询操作。

ObjectWrapperUniformDataaccessor是一个表示对象组装适配的类,是UniformDataaccessor类的一个包装或扩展,具有以下方法:创建SQL说明;总计数据量。

ClusterMapperProxy是一个表示集群操作代理的类,具有以下属性:数据访问对象;对象工厂,具有以下方法:创建一个集群代理对象。

SQLInfoGenerator是一个SQL生成器,具有以下方法:创建一个SQLInfo对象。BasisSQLInfoGenerator是基础的SQL生成器,具有以下属性:SQL的正则表达式;jdbc模板管理器,具有以下方法:获取集群;获取SQL类型;获取表索引;获取SQL参数。SQLInfo表示SQL实体,具有以下属性:集群标识;SQL类型;表索引;SQL;SQL参数;汇总行,具有以下方法:标准化几种类型的判断。

ResultWrapper是一个结果集组装适配器,具有以下方法:获取数据集群。BasisResultWrapper是基础的结果组装集适配器,具有以下方法:获取方法返回类型;获取执行器;判断方法是否为结果包装方法;检查查询结果是否成功。ResultMap是结果集,具有以下属性:结果对应表,具有以下方法:添加数据;获取结果数据;创建一个结果集对象。BaseResult是一个基础结果集,具有以下属性:索引。QueryData是一个用于查询结果的类。UpdateResult是一个用于更新操作结果的类。BatchUpdateResult是一个用于批量更新操作结果的类。

本实施例中,通过集群管理器和选择器对数据源进行管理和运维,可以集中管理和协调集群中的资源,提高数据源运维系统的资源利用率,简化管理任务,提供自动化运维功能,从而提高异构数据源运维的运维效率。

进一步地,基于上述第一和/或者第二实施例,提出本申请数据源运维方法第三实施例,本实施例中,步骤S10包括:

步骤S101,构造不同运维操作对应的预编译语句;

不同的数据库语句对应不同的操作,因此,在构造预编译语句时,可以针对不同的数据源运维操作构造不同的预编译语句。每个运维操作通常对应不同的预编译语句,预编译语句根据具体的运维操作和要执行的数据库语句来创建的,在此不做限制。

本实施例中,步骤S20包括:

步骤S201,从所述不同运维操作对应的预编译语句中,确定与目标运维操作对应的目标预编译语句;

本实施方式中,将需要对目标异构数据源执行的运维操作称为目标运维操作,由于不同的运维操作对应不同的预编译语句,因此在运维目标异构数据源之前,需要从各个运维操作各自对应的预编译语句中,确定与目标运维操作对应的目标预编译语句。

在一可行实施方式中,可以基于对目标异构数据源的目标运维需求,从各个运维操作各自对应的预编译语句中,确定与目标运维需求的目标运维操作对应的目标预编译语句。

步骤S202,分别使用各个目标子数据源各自的参数值替换所述目标预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句。

本实施方式中,确定目标预编译语句后,分别使用各个目标子数据源各自的参数值替换目标预编译语句的参数占位符,得到各个目标子数据源各自对应的可执行语句。

进一步地,在一可行实施方式中,运维操作为删除操作,步骤S30包括:

步骤S301,确定各个所述目标子数据源中的预删除分区;

在删除数据源中的数据时,可能会发生漏删数据的情况,为了保证删除操作的准确性,提高数据源运维的运维准确度,本实施方式中,运维操作为删除操作,对于要删除的数据进行预检,在预检通过的情况下执行删除操作。

本实施方式中,每个数据源中的数据表按照某种规则将其划分为多个逻辑部分或物理存储单元,也即数据表分区,每个分区包含一部分数据,并可以独立地进行管理、查询和维护。本实施方式按照数据表分区进行预检,具体地,确定各个目标子数据源中要删除的分区,以下为方便描述称为预删除分区以示区分。

步骤S302,若确定各个所述目标子数据源中的预删除分区正确,则执行所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤,以对所述预删除分区进行删除。

若确定各个目标子数据源中的预删除分区正确,则执行分别在各个目标子数据源中执行各自对应的可执行语句的步骤,以对所述预删除分区进行删除。

在具体实施方式中,检测各个目标子数据源中的预删除分区是否正确,可以是通过检测预删除分区的数据是否均为要删除的数据,在此不做限制。

本实施方式可以保护数据完整性,避免错误操作,增强数据安全性,从而实现减少不必要的数据损失和操作错误,提高数据源运维的可靠性和可用性。

进一步地,在一可行实施方式中,在步骤S30之后,还包括:

步骤S80,检测各个操作后子数据源中是否存在待删除数据,其中,所述操作后子数据源为执行所述可执行语句后的所述目标子数据源;

本实施方式中,将删除预删除分区后的数据表称为操作后数据表,本实施方式通过对操作后数据表进行复检,以保证删除操作的准确性,从而提高数据源运维的准确性。

具体地,对各个操作后数据表进行检测,检测各个操作后数据表是否均不存在待删除数据。若各个操作后数据表中不存在待删除数据,则确定预删除分区删除成功。

步骤S90,若各个所述操作后子数据源中均不存在待删除数据,则确定删除操作成功。

若各个操作后子数据源中均不存在待删除数据,则确定删除操作成功。

若各个操作后数据表中存在待删除数据,则确定预删除分区删除失败,通知运维人员进行人工删除。

本实施方式通过在删除操作后复检,可以确保数据完整性、合规性和安全性,可以减少数据丢失和泄露的风险,从而实现减少不必要的数据损失和操作错误,提高数据源运维的可靠性和可用性。

进一步地,在一可行实施方式中,目标运维操作可以是删除操作,且按照一定周期T自动触发删除操作,以实现对目标异构数据源自动运维。本实施方式中,在进行当前周期的删除操作之前,预先检查删除操作对应的内容是否准确,以确定是否进行当前周期的删除操作,具体地,参照图6,预先检查可以是发生在进入当前周期的前一日,也即图6中所示的T-1日,图6中所示的T日即为进入当前周期的一日,本实施方式中,进行删除前预检的流程可以是:

在T-1日,查询目标异构数据源下各个数据表;

逐个数据表查询分区情况,并将分区情况发送至第三方平台,例如,招乎平台;

获取预删除分区(也即确定各个所述目标子数据源中的预删除分区),并进行预删除动作提醒;

预删除动作执行后,检测预删除分区是否正确;若预删除分区正确,则等待T日任务(也即若确定各个所述目标子数据源中的预删除分区正确,则执行所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤);若预删除分区不正确,则停止T日任务,此时可以通过第三方平台提醒运维人员进行人工运维。

本实施方式中,参照图7,在当前周期进行删除操作以及操作复检的过程可以是:

在T日,删除分区(也即分别在各个所述目标子数据源中执行各自对应的可执行语句);

进行删除动作复检(也即在分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤之后,检测各个操作后子数据源中是否存在待删除数据);

检测是否删除成功;若删除成功,则结束当前周期的删除操作(也即若各个所述操作后子数据源中均不存在待删除数据,则确定删除操作成功),此时可以发送删除成功的通知至第三方平台,以使运维人员确定当前周期的删除操作完成;若删除不成功,则发送通知至第三方平台,以通知运维人员进行人工干预。

本实施例中,通过构造不同运维操作对应的预编译语句;从不同运维操作对应的预编译语句中,确定与目标运维操作对应的目标预编译语句;分别使用各个目标子数据源各自的参数值替换目标预编译语句的参数占位符,得到各个目标子数据源各自对应的可执行语句。本实施例实现了对各个运维操作均实现自动化,提高了数据源运维的运维效率。

示例性地,在一可行实施方式中,参照图8,图8为一服务平台的架构示意图,本服务平台采用tidb(分布式关系数据库)、oracle(关系数据库)作为异构数据源进行数据存储,其中热点数据通过Hash(哈希)算法分库分表存储于oracle中。

本实施方式中,数据处理平台包括:管理器、选择器和统一数据管理。本实施方式中,构造集群管理器,同时创建集群对象和源对象,在环境初始化时,对集群、数据源、操作对象赋予唯一标识,并记录集群、数据源和操作对象的一一对应关系,实现对异构数据源的有效管理。

本实施方式中构造选择器,具体包括集群选择器、操作对象选择器、多值选择器。集群选择器可根据集群标识命中某个具体的集群;操作对象选择器则可以在集群中选择一个具体的操作对象,同时返回数据源和表操作对象;多值选择器可同时选择多个集群或者多个操作对象。

本实施方式制定不同数据源之间的统一数据管理规则,通过定义预编译语句构造器获取预编译SQL,并通过不同的占位符来注入变量、单个变量值、集合变量,以在不同的数据源中执行。

本实施方式中,通过定时统计数据、增删分区进行数据源运维。并且本实施方式中服务平台与框架平台连接,用于对数据源运维的相关信息进行记录和通知,例如,通过统一日志对数据源运维的相关信息进行记录,通过机构内部oa(OfficeAutomation,办公自动化系统)平台和调度平台将数据源运维的相关信息向运维人员进行通知。

此外,本申请实施例还提出一种数据源运维装置,参照图9,所述数据源运维装置包括:

构造模块10,用于构造包含参数占位符的预编译语句;

替换模块20,用于确定目标异构数据源,并分别使用各个目标子数据源各自的参数值替换所述预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句,其中,所述目标子数据源为所述目标异构数据源包含的各个子数据源;

执行模块30,用于分别在各个所述目标子数据源中执行各自对应的可执行语句,以对所述目标异构数据源进行运维。

进一步地,所述数据源运维装置还包括创建模块,用于:

创建集群管理器,并创建集群对象、数据源对象和操作对象,其中,所述集群对象中包括多个所述数据源对象,所述数据源对象中包括多个所述操作对象;

分别对所述集群对象、所述数据源对象和所述操作对象赋予唯一标识,并通过所述集群管理器记录所述集群对象、所述数据源对象与所述操作对象之间的对应关系和所述唯一标识;

创建选择器,并关联所述集群管理器和所述选择器;

通过所述选择器和所述集群管理器定位各个所述目标子数据源。

进一步地,所述创建模块,还用于:

创建用于标识所述选择器的选择器注解;

在所述集群管理器中创建选择器接口,并将所述选择器注解与选择器接口关联。

进一步地,所述选择器包括集群选择器和操作对象选择器,执行模块30还用于:

根据所述集群管理器中各个所述集群对象的唯一标识,调用所述集群选择器从各个所述集群对象中定位目标集群对象;

根据所述集群管理器中各个所述操作对象的唯一标识,和,所述集群对象、所述数据源对象与所述操作对象之间的对应关系,调用所述操作对象选择器在所述目标集群对象中定位目标数据源对象。

进一步地,构造模块10还用于:

构造不同运维操作对应的预编译语句;

所述创建模块还用于:

从所述不同运维操作对应的预编译语句中,确定与目标运维操作对应的目标预编译语句;

分别使用各个目标子数据源各自的参数值替换所述目标预编译语句的参数占位符,得到各个所述目标子数据源各自对应的可执行语句。

进一步地,运维操作为删除操作,数据源运维装置还包括删除预检模块,用于:

确定各个所述目标子数据源中的预删除分区;

若确定各个所述目标子数据源中的预删除分区正确,则执行所述分别在各个所述目标子数据源中执行各自对应的可执行语句的步骤,以对所述预删除分区进行删除。

进一步地,数据源运维装置还包括删除复检模块,用于:

检测各个操作后子数据源中是否存在待删除数据,其中,所述操作后子数据源为执行所述可执行语句后的所述目标子数据源;

若各个所述操作后子数据源中均不存在待删除数据,则确定删除操作成功。

本申请数据源运维装置各实施例,均可参照本申请数据源运维方法各个实施例,此处不再赘述。

此外,本申请实施例还提出一种计算机可读存储介质,所述存储介质上存储有数据源运维程序,所述数据源运维程序被处理器执行时实现如下所述的数据源运维方法的步骤。

本申请数据源运维设备和计算机可读存储介质各实施例,均可参照本申请数据源运维方法各个实施例,此处不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的区域可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。

以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

技术分类

06120116564733