一种分布式的数据库元数据主动发现方法及系统与流程

专利2024-04-17  2



1.本发明属于数据库元数据发现技术领域,尤其涉及一种分布式的数据库元数据主动发现方法及系统。


背景技术:

2.本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
3.目前数据库元数据主动发现的传统实现方式是采用单节点部署以及单线流程模式,进行的数据库元数据发现,如图2所示。大致步骤可分为:配置数据源发现信息,主要配置待发现数据库的ip地址、端口、数据库类型、驱动属性;开启扫描,检测ip地址和端口号是否ping通和开放;检测是否连通,如果检测到无法连接则返回连接失败信息,如果连接成功则让用户输入账号密码;验证是否输入正确,主要验证数据库的驱动程序与目标ip地址账号密码是否正确;如果输入正确并成功连接,则开始获取数据库源数据信息。
4.对于上述的数据库元数据主动发现的实现,仅能满足于中小企业数据量较少,数据分布范围较小的情况。
5.对于大型企业来说,一般会在全国或世界范围内增设下属单位。这些下属单位通常会搭建各种自建系统,以支持其生产、经营、办公等业务。这些数据库或数据平台数量庞大,数据分布广,数据来源复杂,也更容易出现数据安全问题。
6.如果采用传统的数据库元数据主动发现技术来支撑相关安全产品,会导致数据资产的管控和维护成本加大,数据上报困难,给企业数据安全带来严重隐患。


技术实现要素:

7.为了解决上述背景技术中存在的技术问题,本发明提供一种分布式的数据库元数据主动发现方法及系统,其通过消息队列跟管理端交互,接收扫描侦听任务,同步状态心跳、上传扫描侦听日志,对于管理端来说,不用做过多的业务,管理起来更加灵活方便,降低了数据资产的管控和维护成本。
8.为了实现上述目的,本发明采用如下技术方案:
9.本发明的第一个方面提供一种分布式的数据库元数据主动发现方法,其包括:
10.接收到管理端下发的数据库发现任务,解析得到管控区域策略后,启动扫描任务;
11.对扫描任务解析出目标节点的ip地址后,扫描目标节点,在扫描过程中,侦测目标节点信息;
12.对目标节点信息解析后写入到数组中发送给管理端,以获取管理端返回的元数据发现任务;
13.对元数据发现任务解析出数据库连接配置,进行数据库连接,连接成功后,开始读取元数据并进行解析。
14.进一步地,所述目标节点信息包括:目标节点是否处于活动状态、端口开放情况、
运行的数据库类型、版本信息、侦测操作系统与设备类型。
15.进一步地,所述数组写入的信息包括:数据库ip地址、端口和数据库类型。
16.进一步地,获取管理端返回的元数据发现任务后,适配出jdbc驱动,并将数据库连接参数进行封装。
17.进一步地,所述元数据解析出实例信息、库信息、表信息以及字段信息。
18.进一步地,还包括:
19.将元数据解析出的数据与数据库连接配置封装成数据源信息;
20.解析数据源信息,将数据库连接配置、数据库信息、表信息、字段信息写入到数据库中进行持久化保存。
21.进一步地,还包括:生成数据源发现日志,将数据源发现日志传递给管理端。
22.本发明的第二个方面提供一种分布式的数据库元数据主动发现系统,其包括发现子系统主模块和发现子系统扫描组件;
23.所述发现子系统主模块,被配置为:接收到管理端下发的数据库发现任务,解析得到管控区域策略后,启动扫描任务;
24.所述发现子系统扫描组件,被配置为:对扫描任务解析出目标节点的ip地址后,扫描目标节点,在扫描过程中,侦测目标节点信息;
25.所述发现子系统主模块,还被配置为:对目标节点信息解析后写入到数组中发送给管理端,以获取管理端返回的元数据发现任务;
26.所述发现子系统扫描组件,还被配置为:对元数据发现任务解析出数据库连接配置,进行数据库连接,连接成功后,开始读取元数据并进行解析。
27.本发明的第三个方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述所述的一种分布式的数据库元数据主动发现方法中的步骤。
28.本发明的第四个方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述所述的一种分布式的数据库元数据主动发现方法中的步骤。
29.与现有技术相比,本发明的有益效果是:
30.本发明提供了一种分布式的数据库元数据主动发现方法,其统一封装发现子系统主模块,主要用来接收扫描侦听任务,同步状态心跳、上传扫描侦听日志,通过消息队列跟管理端交互。对于管理端来说,扫描数据库时,只需要下发任务到各个发现子系统即可,获取数据时,只需要掌握和收集每个注册进来的子系统状态信息和数据信息即可,不用做过多的业务,管理起来更加灵活方便。
31.本发明提供了一种分布式的数据库元数据主动发现方法,其网络扫描实施前需用户授权,实施时用户可控制扫描的强度,限制扫描的范围,并提供数据采集清单,向客户证明不采集清单外的数据。
32.本发明提供了一种分布式的数据库元数据主动发现方法,其每个发现子系统仅负责自己对应的扫描任务,任务之间相互独立,所以易于维护和控制;每个发现子系统都可以进行独立部署,升级配置,对其他发现子系统不产生影响;每个发现子系统可根据实际业务或数据量选择不同的服务器,可以独立调整硬件,并且可以灵活集成到不同的技术和框架
中;当发现子系统任务失败时,都只影响自己的或者少量其它的发现子系统,而不会大面积波及整个数据库元数据主动发现体系。
附图说明
33.构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
34.图1是本发明实施例一的一种分布式的数据库元数据主动发现方法的流程图;
35.图2是数据库元数据主动发现的传统实现方式的流程图。
具体实施方式
36.下面结合附图与实施例对本发明作进一步说明。
37.应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
38.实施例一
39.本实施例提供了一种分布式的数据库元数据主动发现方法,如图1所示,分为两个阶段,数据库发现阶段和元数据发现阶段。
40.数据库发现阶段大致步骤可分为:
41.步骤1:首先在管理端配置发现策略,主要配置管控区域策略(需要扫描的ip地址范围以及需要排除的ip段),同时管理端开启心跳检测,检测当前注册的发现子系统模块是否存活,便于监控状态和下发数据库发现任务。发现子系统模块包括主模块和扫描组件模块。
42.步骤2:通过管理端下发数据库发现任务,启动数据库发现任务时,管理端会先检测任务的管控区域下是否注册了同ip地址段的发现子系统主模块,如果没有则停止任务,如果有,则将数据库发现任务下发到对应的发现子系统主模块。
43.数据交互方式有很多,可以将消息队列推送数据的方式替换成直接写入到公共的服务器或者数据库中。也可以将消息队列替换成api接口调用的方式。
44.如果采用api接口调用的方式,则步骤2为:通过管理端下发数据库发现任务,启动数据库发现任务时,管理端会先检测任务的管控区域下是否注册了同ip地址段的发现子系统主模块,如果没有则停止任务,如果有,则调用发现子系统主模块提供的数据库发现任务api,将数据库发现任务下发到对应的发现子系统主模块。
45.步骤3:发现子系统主模块接收到管理端下发的数据库发现任务后,会先将内容解析,得到管控区域策略,根据管控区域策略启动扫描任务,启动过程中,数据库发现任务并不会立即执行,而是将扫描任务放到第一消息队列中。
46.如果采用api接口调用的方式,则步骤3为:发现子系统主模块接收到api请求后,会先将内容解析,得到管控区域策略,根据管控区域策略启动扫描任务,启动过程中,主模块调用扫描组件提供的启动扫描任务的api,将数据库发现任务发送给扫描组件。
47.步骤4:发现子系统扫描组件开始执行数据库发现任务:
48.步骤4.1:发现子系统扫描组件通过主动拉取的方式将第一消息队列中的扫描任
务放到自己的内存中并解析出目标节点(服务器)的ip地址,然后开始扫描目标节点。
49.如果采用api接口调用的方式,则步骤4.1为:发现子系统扫描组件接收到扫描任务的api请求后,调用任务函数执行,解析api参数得到目标节点(服务器)的ip地址,然后开始扫描目标节点。
50.步骤4.2:扫描过程中,发现子系统扫描组件目标节点信息,具体包括:侦测目标节点是否处于活动状态以及端口开放情况,侦测运行的数据库类型以及版本信息、侦测操作系统与设备类型等信息,并通过第二消息队列将内容传递给发现子系统主模块。
51.如果采用api接口调用的方式,则步骤4.2为:扫描过程中,发现子系统扫描组件目标节点信息,具体包括:侦测目标节点是否处于活动状态以及端口开放情况,侦测运行的数据库类型以及版本信息、侦测操作系统与设备类型等信息,并调用主模块提供的数据库清单api,将内容提交到发现子系统主模块。
52.步骤4.3:主模块接收到扫描组件发送的信息,解析出发现的数据库ip地址、端口、数据库类型并写入到数组中发送给管理端,数据库发现阶段结束。
53.如果采用api接口调用的方式,则步骤4.3为:主模块接收到扫描组件发送的内容,解析出发现的数据库ip地址、端口、数据库类型并写入到数组中,然后调用管理端提供的数据库清单api,将数组提交到管理端,数据库发现阶段结束。
54.元数据发现阶段大致步骤可分为:
55.步骤5:提供账号密码,下发元数据发现任务。
56.步骤5.1:通过管理端,将数据库发现阶段获取到数据库形成列表,此时需要提供数据库对应的账号和密码。
57.步骤5.2:根据提供的数据库的账号和密码,管理端再次下发元数据发现任务。
58.如果采用api接口调用的方式,则步骤5.2为:根据提供的数据库的账号和密码,管理端调用发现子系统主模块提供的元数据发现任务api,再次下发元数据发现任务。
59.步骤6:发现子系统主模块接收到管理端下发的任务后,将接收到的内容适配出对应的jdbc(java database connectivity)驱动,然后将数据库连接关键参数(数据库连接地址、端口号、数据库用户名、数据库用户密码、数据库类型)进行封装后,将元数据发现任务放到第三消息队列中。
60.如果采用api接口调用的方式,则步骤6为:发现子系统主模块接收到管理端下发的任务后,将接收到的内容适配出对应的jdbc(java database connectivity)驱动,然后将数据库连接关键参数进行封装后,调用扫描组件提供的启动元数据发现任务的api,将元数据发现任务发送给扫描组件。
61.需要说明的是,发现子系统模块包括主模块和扫描组件模块,主模块主要是接受管理端任务,解析任务后以消息队列的方式发给扫描组件,扫描组件是真正连接数据库的地方,所以需要主模块封装的参数。主模块采用封装后的数据发给消息队列是为了控制扫描组件线程的并发量,多个扫描任务进来后,多个任务同时执行,采用消息队列控制并发数,防止庞大的任务量把扫描组件打死。同时主模块和扫描组件可以分开部署到不同的服务器,采用消息队列传递数据可以解耦系统。
62.步骤7:发现子系统扫描组件开始执行元数据发现任务:
63.步骤7.1:发现子系统扫描组件主动拉取第三消息队列中的元数据发现任务,放到
自己的内存中并解析出数据库连接配置,开始进行数据库连接。
64.如果采用api接口调用的方式,则步骤7.1为:发现子系统扫描组件接收到api请求后,调用任务函数执行,解析出数据库连接配置,开始进行数据库连接。
65.步骤7.2:连接成功后,开始读取元数据,根据数据库ddl语言解析出关键实例信息、库信息、表信息以及字段信息。
66.具体的,实例信息包括:数据库的实例名;库信息包括:数据库名称、编码格式;表信息包括:表名称、编码格式、表大小、创建时间、备注;字段信息包括:字段名、字段类型、字段长度、是否主键、是否外键、编码格式、备注。
67.步骤7.3:将上述信息以及连接信息(数据库连接配置)封装成数据源信息,放到第四消息队列中。
68.如果采用api接口调用的方式,则步骤7.3为:将上述信息以及连接信息(数据库连接配置)封装成数据源信息,调用主模块提供的数据源信息api,将封装好的数据源信息提交到主模块。
69.步骤8:发现子系统主模块开始对数据源信息解析:
70.步骤8.1:解析数据源信息,将连接信息、数据库信息、表信息、字段信息写入到对应数据库中进行持久化保存;
71.步骤8.2:生成数据源发现日志;
72.步骤8.3:将数据源发现日志写入到第五消息队列中。
73.如果采用api接口调用的方式,则步骤8.3为:主模块调用管理端提供的数据源发现日志api,将数据源发现日志提交到管理端。
74.即,发现子系统主模块解析出数据库元数据信息写入到对应数据库后,同时生成数据源发现日志,然后写入到第五消息队列中传递给管理端,数据库元数据发现阶段结束,至此数据库元数据主动发现完成。
75.步骤9:管理端从第五消息队列接收到数据源发现日志后,将数据源发现日志保存到服务器中,数据库元数据发现阶段结束,至此数据库元数据主动发现完成。
76.如果采用api接口调用的方式,则步骤9为:管理端接收到api请求后,将接收到的数据源发现日志保存到服务器中,数据库元数据发现阶段结束,至此数据库元数据主动发现完成。本实施例提供的一种分布式的数据库元数据主动发现方法,管理端监控发现子系统的连接监控及进程监控能力,通过远程执行shell脚本来实现。网络扫描实施前需用户授权,实施时用户可控制扫描的强度,限制扫描的范围,并提供数据采集清单,向客户证明不采集清单外的数据。统一封装发现子系统主模块,主要用来接收扫描侦听任务,同步状态心跳、上传扫描侦听日志,通过消息队列跟管理端交互。
77.本实施例提供的一种分布式的数据库元数据主动发现方法,每个发现子系统仅负责自己对应的扫描任务,任务之间相互独立,所以易于维护和控制。每个发现子系统都可以进行独立部署,升级配置,对其他发现子系统不产生影响。每个发现子系统可根据实际业务或数据量选择不同的服务器,可以独立调整硬件,并且可以灵活集成到不同的技术和框架中。当发现子系统任务失败时,都只影响自己的或者少量其它的发现子系统,而不会大面积波及整个数据库元数据主动发现体系。对于管理端来说,扫描数据库时,只需要下发任务到各个发现子系统即可,获取数据时,只需要掌握和收集每个注册进来的子系统状态信息和
数据信息即可,不用做过多的业务,管理起来更加灵活方便。
78.本实施例提供的一种分布式的数据库元数据主动发现方法,数据库元数据主动发现从用户网络环境里发现部署的数据库、数据表、数据字段等基础元数据,采集并提供给数据安全产品使用。同时,作为一种补充,提供采集和解析中间件、数据库审计日志,提取分析以上数据并进行保存。
79.作为数据安全产品基础数据设施关键的一环,数据库元数据主动发现技术采集的基础数据、是否完整和符合需求,直接关系到产品的功能实现和使用推广。
80.因此数据库元数据主动发现的核心目标是尽可能地在用户许可的情况下合规地、完整地采集发现上述数据,形成全量数据集。无论是单节点还是分布式的数据库元数据主动发现,对于产品研发的目标是多种方式均支持,部署时可根据客户的许可情况选择采用合适的方式部署。
81.实施例二
82.本实施例提供了一种分布式的数据库元数据主动发现系统,采用即插即用系统设计来达到分布式系统架构的目的,其具体包括:管理端和发现子系统两大模块。
83.管理端主要配置发现策略,下发任务,监控当前发现子系统所在主机的连接信息、进程信息,以及接收发现子系统上报的数据源发现信息。
84.发现子系统又分为主模块和扫描组件模块,主模块负责将自身信息注册到管理端,接收管理端发起的任务并调度执行任务,并且采用心跳机制上报存活状态和扫描进度给管理端;扫描组件模块负责真正执行扫描任务,并将扫描结果返回给主模块。
85.发现子系统主模块支持两种方式部署,第一种,通过管理端远程部署,需要提供部署服务器的ip地址、ssh端口号、连接的账号密码用于远程发包进行安装,安装成功后会直接注册到管理端;第二种,手动部署到对应服务器,安装成功后会将当前服务器包含ip、端口号、服务名、集群名等信息主动发送给管理端,管理端接收后会注册到列表中。
86.发现子系统主模块,被配置为:接收到管理端下发的数据库发现任务,解析得到管控区域策略后,启动扫描任务;
87.发现子系统扫描组件,被配置为:对扫描任务解析出目标节点的ip地址后,扫描目标节点,在扫描过程中,侦测目标节点信息;
88.发现子系统主模块,还被配置为:对目标节点信息解析后写入到数组中发送给管理端,以获取管理端返回的元数据发现任务;
89.发现子系统扫描组件,还被配置为:对元数据发现任务解析出数据库连接配置,进行数据库连接,连接成功后,开始读取元数据并进行解析。
90.本实施例提供的一种分布式的数据库元数据主动发现系统,整体架构采用的是分布式主从架构,也就是说架构分leader和follower两种角色,leader负责调度任务以及收集follower发送过来的数据,follower负责把数据同步给leader进行管理。
91.此处需要说明的是,本实施例中的各个模块与实施例一中的各个步骤一一对应,其具体实施过程相同,此处不再累述。
92.实施例三
93.本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一所述的一种分布式的数据库元数据主动发现方法中的步
骤。
94.实施例四
95.本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例一所述的一种分布式的数据库元数据主动发现方法中的步骤。
96.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
97.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
98.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
99.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
100.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random accessmemory,ram)等。
101.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.一种分布式的数据库元数据主动发现方法,其特征在于,包括:接收到管理端下发的数据库发现任务,解析得到管控区域策略后,启动扫描任务;对扫描任务解析出目标节点的ip地址后,扫描目标节点,在扫描过程中,侦测目标节点信息;对目标节点信息解析后写入到数组中发送给管理端,以获取管理端返回的元数据发现任务;对元数据发现任务解析出数据库连接配置,进行数据库连接,连接成功后,开始读取元数据并进行解析。2.如权利要求1所述的一种分布式的数据库元数据主动发现方法,其特征在于,所述目标节点信息包括:目标节点是否处于活动状态、端口开放情况、运行的数据库类型、版本信息、侦测操作系统与设备类型。3.如权利要求1所述的一种分布式的数据库元数据主动发现方法,其特征在于,所述数组写入的信息包括:数据库ip地址、端口和数据库类型。4.如权利要求1所述的一种分布式的数据库元数据主动发现方法,其特征在于,获取管理端返回的元数据发现任务后,适配出jdbc驱动,并将数据库连接参数进行封装。5.如权利要求1所述的一种分布式的数据库元数据主动发现方法,其特征在于,所述元数据解析出实例信息、库信息、表信息以及字段信息。6.如权利要求1所述的一种分布式的数据库元数据主动发现方法,其特征在于,还包括:将元数据解析出的数据与数据库连接配置封装成数据源信息;解析数据源信息,将数据库连接配置、数据库信息、表信息、字段信息写入到数据库中进行持久化保存。7.如权利要求1所述的一种分布式的数据库元数据主动发现方法,其特征在于,还包括:生成数据源发现日志,将数据源发现日志传递给管理端。8.一种分布式的数据库元数据主动发现系统,其特征在于,包括发现子系统主模块和发现子系统扫描组件;所述发现子系统主模块,被配置为:接收到管理端下发的数据库发现任务,解析得到管控区域策略后,启动扫描任务;所述发现子系统扫描组件,被配置为:对扫描任务解析出目标节点的ip地址后,扫描目标节点,在扫描过程中,侦测目标节点信息;所述发现子系统主模块,还被配置为:对目标节点信息解析后写入到数组中发送给管理端,以获取管理端返回的元数据发现任务;所述发现子系统扫描组件,还被配置为:对元数据发现任务解析出数据库连接配置,进行数据库连接,连接成功后,开始读取元数据并进行解析。9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一项所述的一种分布式的数据库元数据主动发现方法中的步骤。10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一项所述的一
种分布式的数据库元数据主动发现方法中的步骤。

技术总结
本发明涉及数据库元数据发现技术领域,提供了一种分布式的数据库元数据主动发现方法及系统,包括:接收到管理端下发的数据库发现任务,解析得到管控区域策略后,启动扫描任务;对扫描任务解析出目标节点的IP地址后,扫描目标节点,在扫描过程中,侦测目标节点信息;对目标节点信息解析后写入到数组中发送给管理端,以获取管理端返回的元数据发现任务;对元数据发现任务解析出数据库连接配置,进行数据库连接,连接成功后,开始读取元数据并进行解析。对于管理端来说,不用做过多的业务,管理起来更加灵活方便。加灵活方便。加灵活方便。


技术研发人员:欧阳蓉春 李励同 王小川 郑才富
受保护的技术使用者:北京中孚泰和科技发展股份有限公司
技术研发日:2022.10.12
技术公布日:2022/12/16
转载请注明原文地址: https://bbs.8miu.com/read-414843.html

最新回复(0)