基于CMDB资源数据的查询方法及系统转让专利

申请号 : CN202210377065.2

文献号 : CN114461667B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 易存道

申请人 : 北京宝兰德软件股份有限公司

摘要 :

本发明提供一种基于CMDB资源数据的查询方法及系统,基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据;其中,结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的;基于预设查询条件,对资源数据进行过滤,得到查询结果。本发明通过预先获取的结构体数据,读取资源数据,并基于预设查询条件对读取的资源数据进行过滤以得到查询结果,进而简化查询方案,仅仅基于查询语句,不增加代码的情况下,实现对于资源数据的查询和分析,增强了资源系统的数据消费能力。

权利要求 :

1.一种基于CMDB资源数据的查询方法,其特征在于,包括:基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据;其中,所述结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的;

基于预设查询条件,对所述资源数据进行过滤,得到查询结果;

所述基于预设查询条件,对所述资源数据进行过滤,包括:基于预设查询范围和预先配置的模型和模型组对所述资源数据进行范围查询,得到资源列表;

基于预先配置的条件列表,对所述资源列表进行条件查询,得到查询结果;

在所述对所述资源列表进行条件查询之后,还包括:检查当前是否包含第一子查询;

基于包含所述第一子查询,利用所述第一子查询返回进行所述范围查询和所述条件查询;

基于未包含所述子查询,基于预先配置的数据加工器列表,对经所述条件查询得到的结果进行定向加工。

2.根据权利要求1所述的基于CMDB资源数据的查询方法,其特征在于,在所述对所述资源列表进行条件查询之后,还包括:基于预先配置的过滤器列表,对经所述条件查询得到的结果进行过滤。

3.根据权利要求1所述的基于CMDB资源数据的查询方法,其特征在于,在所述基于预先配置的数据加工器列表,对经所述条件查询得到的结果进行定向加工之后,还包括:检查当前是否包含第二子查询;

基于包含所述第二子查询,则返回检查是否包含第一子查询;

基于未包含所述第二子查询,将经定向加工后的数据作为查询结果输出。

4.根据权利要求1所述的基于CMDB资源数据的查询方法,其特征在于,在所述得到资源列表之后,还包括:基于预先配置的查询属性列表,对所述资源列表进行属性查询,得到相应资源信息。

5.根据权利要求1所述的基于CMDB资源数据的查询方法,其特征在于,所述HTTP请求采用基于POST的RESTful请求。

6.一种基于CMDB资源数据的查询系统,其特征在于,包括:数据获取模块,基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据;

其中,所述结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的;

查询模块,基于预设查询条件,对所述资源数据进行过滤,得到查询结果;

所述查询模块,包括:

范围查询单元,基于预设查询范围和预先配置的模型和模型组对所述资源数据进行范围查询,得到资源列表;

条件查询单元,基于预先配置的条件列表,对所述资源列表进行条件查询,得到查询结果;

所述查询模块,还包括:

第一子查询检查单元,检查当前是否包含第一子查询;

第一子查询单元,基于包含所述第一子查询,利用所述第一子查询返回进行所述范围查询和所述条件查询;

数据加工单元,基于未包含所述子查询,基于预先配置的数据加工器列表,对经所述条件查询得到的结果进行定向加工。

7.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述基于CMDB资源数据的查询方法的步骤。

8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述基于CMDB资源数据的查询方法的步骤。

说明书 :

基于CMDB资源数据的查询方法及系统

技术领域

[0001] 本发明涉及运维技术领域,尤其涉及一种基于CMDB资源数据的查询方法及系统。

背景技术

[0002] 随着IT技术的广泛应用,各种实体资源、抽象资源逐渐被纳入至资源管理系统中,ISO2000中也明确规定了各种资源配置项的流程。资源的各种信息,诸如生产日期、名称、IP、MAC地址等信息,都被存储至资源管理系统中,除此之外,各种资源中,排除了孤岛式存在的情形,任一资源均与其他资源存在各种各样的关系,比如虚拟机和服务器、交换机和路由器等等,这些关系信息都被资源管理系统以数据的形式存储起来。由于数据的存储本质上是为了消费,若没有一个好的消费手段,存储再多的数据也没有任何意义,因此,上述资源以及关系被存储以后,如何进行良好的消费,成为了一个棘手的问题。比如资源管理系统里面,已经存储了很多的虚拟机和服务器,如何能方便的知道有多少虚拟机、有多少服务器、这些服务器都是哪些厂商提供的、以及每个服务器上面挂在了哪些虚拟机等等。
[0003] 目前,资源管理系统消费方案,大抵采用两种,第一种是直接提供指定数据库专用的SQL,如MySQL、Oracle等;第二种是提供基于GET的RESTful请求,并提供Parameter的参数条件进行查询。这两种方案都有明显的问题,不能很好的解决消费问题。
[0004] 然而,第一种查询方式,对数据库有严格的绑定,需要复杂的查询语法,且遵循数据库的规范,同时,MySQL、Oracle这种关系型数据库,资源定义本身必须要固化下来,方案本身就对资源管理系统非常不友好,且SQL查询,无法做多层的数据级联绑定,比如:A‑>B‑>C的层级数据。另外,第二中查询方式,只能做普通属性的对比、以及查询哪些属性的定义,无法处理复杂的查询条件处。

发明内容

[0005] 本发明提供一种基于CMDB资源数据的查询方法及系统,用以解决现有技术中的查询方式无法同时适用简单查询和复杂查询的缺陷,在确保简化查询结构的基础上,实现对于资源数据的查询和分析,增强资源系统的数据消费能力。
[0006] 本发明提供一种基于CMDB资源数据的查询方法,包括:基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据;其中,所述结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的;基于预设查询条件,对所述资源数据进行过滤,得到查询结果。
[0007] 根据本发明提供的一种基于CMDB资源数据的查询方法,所述基于预设查询条件,对所述资源数据进行过滤,包括:基于预设查询范围和预先配置的模型和模型组对所述资源数据进行范围查询,得到资源列表;基于预先配置的条件列表,对所述资源列表进行条件查询,得到查询结果。
[0008] 根据本发明提供的一种基于CMDB资源数据的查询方法,在所述对所述资源列表进行条件查询之后,还包括:基于预先配置的过滤器列表,对经所述条件查询得到的结果进行过滤。
[0009] 根据本发明提供的一种基于CMDB资源数据的查询方法,在所述对所述资源列表进行条件查询之后,还包括:检查当前是否包含第一子查询;基于包含所述第一子查询,利用所述第一子查询返回进行所述范围查询和所述条件查询;基于未包含所述子查询,基于预先配置的数据加工器列表,对经所述条件查询得到的结果进行定向加工。
[0010] 根据本发明提供的一种基于CMDB资源数据的查询方法,在所述基于预先配置的数据加工器列表,对经所述条件查询得到的结果进行定向加工之后,还包括:检查当前是否包含第二子查询;基于包含所述第二子查询,则返回检查是否包含第一子查询;基于未包含所述第二子查询,将经定向加工后的数据作为查询结果输出。
[0011] 根据本发明提供的一种基于CMDB资源数据的查询方法,在所述得到资源列表之后,还包括:基于预先配置的查询属性列表,对所述资源列表进行属性查询,得到相应资源信息。
[0012] 根据本发明提供的一种基于CMDB资源数据的查询方法,所述HTTP请求采用基于POST的RESTful请求。
[0013] 本发明还提供一种基于CMDB资源数据的查询系统,包括:数据获取模块,基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据;其中,所述结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的;查询模块,基于预设查询条件,对所述资源数据进行过滤,得到查询结果。
[0014] 本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于CMDB资源数据的查询方法的步骤。
[0015] 本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于CMDB资源数据的查询方法的步骤。
[0016] 本发明提供的基于CMDB资源数据的查询方法及系统,通过预先获取的结构体数据,读取资源数据,并基于预设查询条件对读取的资源数据进行过滤以得到查询结果,读取资源数据,并基于预设查询条件对读取的资源数据进行过滤以得到查询结果,以得到查询结果,进而简化查询方案,仅仅基于查询语句,不增加代码的情况下,实现对于资源数据的查询和分析,增强了资源系统的数据消费能力。

附图说明

[0017] 为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018] 图1是本发明提供的基于CMDB资源数据的查询方法的流程示意图之一;
[0019] 图2是本发明提供的基于CMDB资源数据的查询方法的外层逻辑分层图;
[0020] 图3是本发明提供的条件查询的结构示意图;
[0021] 图4是本发明提供的第一子查询的结构示意图;
[0022] 图5是本发明提供的基于CMDB资源数据的查询方法的数据过滤层级图;
[0023] 图6是本发明提供的基于CMDB资源数据的查询方法的流程示意图之二;
[0024] 图7是本发明提供的基于CMDB资源数据的查询系统的结构示意图;
[0025] 图8是本发明提供的电子设备的结构示意图。

具体实施方式

[0026] 为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0027] 图1示出了本发明一种基于CMDB资源数据的查询方法的流程示意图,该方法包括:
[0028] S11,基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据;其中,结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的;
[0029] S12,基于预设查询条件,对资源数据进行过滤,得到查询结果。
[0030] 需要说明的是,CMDB表示配置管理数据库(Configuration  Management Database)。另外,本说明书中的S1N不代表基于CMDB资源数据的查询方法的先后顺序,下面具体结合图2‑图6描述本发明的基于CMDB资源数据的查询方法。
[0031] 步骤S11,基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据;其中,结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的。
[0032] 在本实施例中,HTTP请求采用基于POST的RESTful请求。需要说明的是,参考图2,系统基于请求接收器接收RESTful请求;利用结构解析器将请求接收器接收的RESTful请求转换为系统可识别的结构体,并将其发送至核心层的数据筛选/计算引擎;数据筛选/计算引擎,利用资源提取器,从资源层读取资源数据,其中资源数据来自底层的数据库,底层用于缓存资源数据。应当补充的是,RESTful是一种基于超文本传输协议(Hyper Text Transfer Protocol,HTTP)协议,并以JSON(JavaScript Object Notation)结构为载体的轻量级API风格。
[0033] 步骤S12,基于预设查询条件,对资源数据进行过滤,得到查询结果。
[0034] 在本实施例中,基于预设查询条件,对资源数据进行过滤,包括:基于预设查询范围和预先配置的模型和模型组对资源数据进行范围查询,得到资源列表;基于预先配置的条件列表,对资源列表进行条件查询,得到查询结果。具体而言:
[0035] 首先,基于预设查询范围scopes和预先配置的模型和模型组对资源数据进行范围查询,得到资源列表。需要说明的是,查询范围可以指定多个范围,包括模型、模型组、应用实例和组件等中的至少一种。
[0036] 在一个可选实施例中,在得到资源列表之后,还包括:基于预先配置的查询属性列表fields,对资源列表进行属性查询,得到相应资源信息。需要说明的是,属性查询可基于查询需求进行设置,比如在进行属性查询时,可以指定任意查询属性,支持使用别名。
[0037] 其次,参考图3,基于预先配置的条件列表conditions,对资源列表进行条件查询,得到查询结果。需要说明的是,条件查询可基于查询需求预先进行设置,比如,采用逻辑条件和匹配条件的组合形式进行查询,其中,逻辑条件包括“and”和“or”,分别表示“并且”和“或”的逻辑判,匹配条件包括“=”、“!=”、“>”、“>=”、“<”、“<=”、“LIKE”、“IS EMPTY”、“REGEX”。需要说明的是,一个典型的匹配属性包括field、opt、values,有时候会需要一些extends属性进行扩展。
[0038] 在一个可选实施例中,如果当前配置了过滤器,则在对资源列表进行条件查询之后,还包括:基于预先配置的过滤器列表filters,对经条件查询得到的结果进行过滤。需要说明的是,在匹配conditions条件后,再次对数据进行过滤,提供一些conditions无法实现的功能,比如对比全局数据,以实现全局过滤,再比如过滤出IP+端口数据重复的资源数据。另外,预先配置的过滤器包括samefields和integrity,其中samefields用于过滤得到存在相同属性的配置项,且支持多个属性;integrity用于过滤出符合完整性要求的配置项。
[0039] 在一个可选实施例中,参考图4,在对资源列表进行条件查询之后,还包括:检查当前是否包含第一子查询;基于包含第一子查询,利用第一子查询返回进行范围查询和条件查询;基于未包含子查询,基于预先配置的数据加工器列表,对经条件查询得到的结果进行定向加工。
[0040] 需要说明的是,第一子查询需要预先配置于fields属性中,并使用别名(alias)进行标记,使得查询出来的结果,可以作为上一层查询结果的属性输出出来。第一子查询支持层层嵌套,即每一个子查询中的fields属性,又可以定义本身的子查询,且无数量限制。
[0041] 另外,通过数据加工器列表,在数据查询完毕以后,对数据进行定向加工。数据加工器包括warranty、inject和obj‑size,warranty用于过保数据处理,对数据结果做分析,计算过保日期,并其可以根据需求以向结果中填充过期天数;inject用于将数据注入加工器;obj‑siz用于计算结果对象属性的size。
[0042] 在一个可选实施例中,基于预设查询条件,对资源数据进行过滤,还包括:基于查询数据量大于预设阈值,则对其进行分页处理。在本实施例中,可以预先配置page和perpage两个参数,以实现对查询数据的分页处理。
[0043] 在一个可选实施例中,参考图5,可按照scopes‑‑>conditions‑‑>filters‑‑>processors层层过滤,最终得到需要的查询结果,且每一层都可以定制自己的过滤条件。
[0044] 在一个可选实施例中,在基于预先配置的数据加工器列表,对经条件查询得到的结果进行定向加工之后,还包括:检查当前是否包含第二子查询;基于包含第二子查询,则返回检查是否包含第一子查询;基于未包含第二子查询,将经定向加工后的数据作为查询结果输出。
[0045] 在一个可选实施例中,参考图6,基于预设查询条件,对资源数据进行过滤,还包括:基于预设查询范围scopes和预先配置的模型和模型组对资源数据进行范围查询,得到资源列表;基于预先配置的查询属性列表fields,对资源列表进行属性查询,得到相应资源信息;基于预先配置的条件列表conditions,对资源列表进行条件查询;基于预先配置的过滤器列表filters,对经条件查询得到的结果进行过滤;检查当前是否包含第一子查询;基于包含第一子查询,利用第一子查询返回进行范围查询和条件查询;基于未包含子查询,基于预先配置的数据加工器列表,对经条件查询得到的结果进行定向加工,并检查当前是否包含第二子查询;基于包含第二子查询,则返回检查是否包含第一子查询;基于未包含第二子查询,将经定向加工后的数据作为查询结果输出。
[0046] 在一个可选实施例中,对于本方案的一个典型案例,查询需求为应用实例列表,需要id和name;增加属性:IP、was类型、端口列表;was类型只能是BES;如果was类型不是BES而是空,则IP为192.168.2.x的数据也可以;增加应用实例所属应用的名称;增加应用实例使用的数据库名称;应用实例使用的数据库,去除IP与应用实例相同的;如果应用实例的有效数据库为空,则丢弃该条记录。
[0047] 综上所述,本发明实施例通过预先获取的结构体数据,读取资源数据,并基于预设查询条件对读取的资源数据进行过滤以得到查询结果,进而简化查询方案,仅仅基于查询语句,不增加代码的情况下,实现对于资源数据的查询和分析,增强了资源系统的数据消费能力。
[0048] 下面对本发明提供的基于CMDB资源数据的查询系统进行描述,下文描述的基于CMDB资源数据的查询系统与上文描述的基于CMDB资源数据的查询方法可相互对应参照。
[0049] 图7示出了一种基于CMDB资源数据的查询系统的结构示意图的结构示意图,该系统,包括:
[0050] 数据获取模块71,基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据;其中,结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的;
[0051] 查询模块72,基于预设查询条件,对资源数据进行过滤,得到查询结果。
[0052] 具体而言,数据获取模块71,包括:数据获取单元,基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据。
[0053] 在一个可选实施例中,数据获取模块71,还包括:接收结构体数据;其中,结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的。需要说明的是,HTTP请求采用基于POST的RESTful请求。
[0054] 查询模块72,包括:范围查询单元,基于预设查询范围和预先配置的模型和模型组对资源数据进行范围查询,得到资源列表;条件查询单元,基于预先配置的条件列表,对资源列表进行条件查询,得到查询结果。
[0055] 在一个可选实施例中,查询模块72,还包括:属性查询单元,基于预先配置的查询属性列表fields,对资源列表进行属性查询,得到相应资源信息。
[0056] 在一个可选实施例中,查询模块72,还包括:过滤器查询单元,基于预先配置的过滤器列表filters,对经条件查询得到的结果进行过滤。
[0057] 在一个可选实施例中,查询模块72,还包括:第一子查询检查单元,检查当前是否包含第一子查询;第一子查询单元,基于包含第一子查询,利用第一子查询返回进行范围查询和条件查询;数据加工单元,基于未包含子查询,基于预先配置的数据加工器列表,对经条件查询得到的结果进行定向加工。
[0058] 在一个可选实施例中,查询模块72,还包括:第二子查询检查单元,检查当前是否包含第二子查询;第二子查询单元,基于包含第二子查询,则返回检查是否包含第一子查询;结果输出单元,基于未包含第二子查询,将经定向加工后的数据作为查询结果输出。
[0059] 在一个可选实施例中,查询模块72,还包括:范围查询单元,基于预设查询范围scopes和预先配置的模型和模型组对资源数据进行范围查询,得到资源列表;属性查询单元,基于预先配置的查询属性列表fields,对资源列表进行属性查询,得到相应资源信息;条件查询单元,基于预先配置的条件列表conditions,对资源列表进行条件查询;过滤器查询单元,基于预先配置的过滤器列表filters,对经条件查询得到的结果进行过滤;第一子查询检查单元,检查当前是否包含第一子查询;第一子查询单元,基于包含第一子查询,利用第一子查询返回进行范围查询和条件查询;数据加工单元,基于未包含子查询,基于预先配置的数据加工器列表,对经条件查询得到的结果进行定向加工;第二子查询检查单元,在进行定向加工之后,检查当前是否包含第二子查询;第二子查询单元,基于包含第二子查询,则返回检查是否包含第一子查询;结果输出单元,基于未包含第二子查询,将经定向加工后的数据作为查询结果输出。
[0060] 综上所述,本发明实施例通过数据获取模块基于预先获取的结构体数据,读取资源数据,并利用查询模块基于预设查询条件对读取的资源数据进行过滤,以得到查询结果,进而简化查询方案,仅仅基于查询语句,不增加代码的情况下,实现对于资源数据的查询和分析,增强了资源系统的数据消费能力。
[0061] 图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)81、通信接口(Communications Interface)82、存储器(memory)83和通信总线84,其中,处理器81,通信接口82,存储器83通过通信总线84完成相互间的通信。处理器81可以调用存储器83中的逻辑指令,以执行基于CMDB资源数据的查询方法,该方法包括:基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据;其中,结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的;基于预设查询条件,对资源数据进行过滤,得到查询结果。
[0062] 此外,上述的存储器83中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0063] 又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于CMDB资源数据的查询方法,该方法包括:基于预先接收的结构体数据,利用资源提取器从资源层读取资源数据;其中,结构体数据为结构解析器基于请求接收器接收的HTTP请求进行格式转换得到的;基于预设查询条件,对资源数据进行过滤,得到查询结果。
[0064] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0065] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0066] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。