一种基于多源数据灵活生成GraphQL接口的方法转让专利

申请号 : CN202011574985.0

文献号 : CN113220755B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 简小云姜振兴张文陆科杰吴东锴

申请人 : 浙大网新科技股份有限公司

摘要 :

本发明公开基于多源数据灵活生成GraphQL接口的方法,包括异构数据源管理、元数据信息抽取、接口配置管理、接口配置注入与刷新、服务发布、命名空间管理。业务人员录入异构数据源的信息,根据数据源信息,利用元数据信息抽取功能将相关表的元数据信息集中起来;再通过对接口配置的管理,数据模型的描述方式采用统一贯穿源数据获取、数据转换、数据开放权限限定、数据接口生成、数据接口发布、客户端数据获取等环节;然后将配置信息进行打包并结合接口的状态信息注入至动态语言后台服务。基于接口配置文件,在不重启服务的情况下,动态生成相应的接口服务,并为接口分配到相应的命名空间,通过相互独立命名空间的管理,有效地管理数据权限。

权利要求 :

1.一种基于多源数据灵活生成GraphQL接口的方法,包括前端和服务端,其中所述前端包括业务服务器web和配置管理服务web,所述服务端包括GraphQL服务、配置服务和执行器;

其特征在于,所述生成GraphQL接口的方法包括以下步骤:

步骤S1,异构数据源管理:

首先系统管理员或数据使用者录入数据源的信息,包括数据库服务器地址和端口、数据库名、并提供支持元数据访问的用户认证;

步骤S2,元数据信息抽取:

程序以相关权限通过数据源信息连接到指定数据源,获取所有元数据信息,包括数据库名称、表名称和表字段信息,其中表字段信息主要包括字段名称和字段类型;用户可以选择将其中全部或部分信息用于指定开放服务接口,程序根据用户选择生成数据库级别的通用元数据描述文件;

步骤S3,接口配置管理:

数据使用者可以根据权限获取其可访问的数据库、数据表和字段,以及管理接口配置,接口配置描述了用户申请接口相关的所有信息,设置包括:步骤S3.1接口定义信息配置:用户根据业务需求配置接口信息以及管理接口状态,用户可以新增接口,定义接口名称,基于用户权限可获取的元数据信息选库、选表,同时设置接口的输入和输出参数以及过滤条件;用户也可以修改或删除相关接口的定义;

步骤S3.2接口状态设置:可以设置接口启用或禁用状态,通过发布后生效;

步骤S3.3接口命名空间设置:可以设置接口所属命名空间,如不设置,默认为Public空间;

步骤S4,接口配置注入:

如果接口配置为启用状态,则利用动态语言特性,用户设置的接口相关配置,组织成GraphQL Schema 相关结构,并注入至所属命名空间下的GraphQL Schema中;

步骤S5,服务发布:

基于元数据描述文件和用户特定接口配置文件动态生成相应的接口服务代码,利用动态语言特性构建服务端,刷新命名空间下的GraphQL Schema, 能使Web服务器在不重启的情况下,即时发布新接口并开放给指定用户;

步骤S6,GraphQL请求执行器基于动态GrahqlQL Schema 编写的GraphQL 请求在通过服务端验证之后,依赖执行器进行请求语法树解析,生成特定SQL语句,并执行此数据库SQL语句,返回结果。

2.根据权利要求1所述的一种基于多源数据灵活生成GraphQL接口的方法,其特征在于:数据源管理支持现有的常见的多种数据库类型,所述数据源信息保存至服务端,并做必要的连通性检测。

3.根据权利要求1所述的一种基于多源数据灵活生成GraphQL接口的方法,其特征在于:所述GraphQL接口定义灵活可变,提供默认查询参数Schema, 启、停用和接口版本控制。

4.根据权利要求1所述的一种基于多源数据灵活生成GraphQL接口的方法,其特征在于:其中,自动生成接口定义并将数据访问逻辑动态注入至GraphQL Schema,达到发布即可用。

5.根据权利要求1所述的一种基于多源数据灵活生成GraphQL接口的方法,其特征在于:通过命名空间隔离,生成接口后指定固定命名空间,有效隔离数据权限,方便鉴权。

6.根据权利要求1所述的一种基于多源数据灵活生成GraphQL接口的方法,其特征在于:GraphQL 请求执行器能主动分析语法以及生成最终数据库执行语句,并执行和返回对应结果,与服务端业务代码隔离。

7.根据权利要求1所述的一种基于多源数据灵活生成GraphQL接口的方法,其特征在于:所述多源数据为异构数据源,所述异构数据源包括MySQL、SQLite和PostgreSQL,且通过补丁的方式扩展其他数据源。

8.根据权利要求1所述的一种基于多源数据灵活生成GraphQL接口的方法,其特征在于:服务控制器配置有数据访问接口解释器,开发者发送接口访问请求,所述数据访问接口解释器对访问请求进行解释,所述服务控制器对相应的数据库进行数据查询获取查询结果,所述服务控制器的数据访问接口解释器将查询结果进行数据解释并发送给所述开发者,解释后的数据是能够被开发者识别的数据类型。

9.根据权利要求8中的一种基于多源数据灵活生成GraphQL接口的方法,其特征在于:所述开发者不对数据进行直接访问,发送的访问指令均为所述接口处理后的指令,以防止病毒入侵所述数据库。

说明书 :

一种基于多源数据灵活生成GraphQL接口的方法

技术领域

[0001] 本发明涉及计算机技术领域,具体为一种基于多源数据灵活生成GraphQL接口并发布的方法。

背景技术

[0002] 大多数企业在新项目启动时,往往都会重新架构系统、业务分析、系统分析、模块设计、表结构设计,并为各种业务表,编写基础CRUD代码,并构建对应的Restful API,供前段使用。然而一旦遇到需要跨数据库接口时,就需要架构师重新设计对应数据库访问层,并实现基础代码,然后由业务开发人员重新实现对应多数据库CRUD代码以及API。
[0003] 业务发展初期,设计比较完善的情况下,CRUD改动概率小,但随着业务的发展,原先业务系统设计需要重新设计,或者统一给所有表增加字段或修改字段,则需要开发人员重新开发实现新设计,并发布新的API。
[0004] 这种重复劳动费时费力,机械式的开发严重影响项目成本,和开发周期,为了解决这一弊端,快速提升竞争力以及项目研发效率,降低开发成本,缩短开发周期,并能应对新的需求或变更时,本发明提出了一种基于多源数据生成GraphQL接口的方法,开发者无需编码即可实现常用功能,通过简单几步界面操作,灵活发布GraphQL接口,显著减少开发软件服务接口消耗。
[0005] 专利CN107885797A公开一种基于结构相关性的多模式图匹配方法,该发明针对多模式图匹配问题,提出一种基于结构相关性的多模式图匹配方法,能够解决冗余计算问题,基于模式图结构相关性,在增加少量额外空间的前提下,提高了图模式匹配的整体性能。本发明主要是通过利用模式图之间的结构相关性,建立模式图之间的结构继承关系,将原本相互独立的模式图表示为一个整体数据结构,该数据结构保留了所有模式图需要匹配的非重复部分。同时重新规划了模式图匹配的顺序,使得在数据图中进行匹配时,可以避免多次匹配模式图中结构重复的部分,从而大大提升了图模式匹配的时间性能,达到加速计算的目的。
[0006] 专利CN109587212A公开一种基于GraphQL的微服务架构设计方法、设备及存储设备,其方法包括:将GraphQL应用于微服务架构中,利用GraphQL对用户的请求进行集中处理,然后再发送至管理服务中心;在GraphQL服务器中,利用特定的缓存策略对用户请求进行缓存,缓解服务器压力;利用粘合的方法解决GraphQL服务器中资源重复和字段冲突的问题,利用RPC方式对GraphQL服务器中的资源进行整合。一种基于GraphQL的微服务架构设计设备及存储设备,用于实现基于GraphQL的微服务架构设计方法。本发明的有益效果是:本发明提供的技术方案可以将客户端的多次请求聚合成一次请求,减少多次请求带来的延迟;采用了缓存策略,能够降低服务器压力。
[0007] 专利CN 109413187A公开一种通用的图数据在线交互式浏览分析方法,本方法为:设置若干接口,每一接口设置一用于交互的请求和响应;图数据前端与图数据后端之间通过各接口的请求与响应交互,图数据前端需要进行一设定功能处理时,通过该功能对应的接口i发送请求给图数据后端,图数据后端根据该请求生成对应的响应并通过接口i发送给图数据前端;所述请求为基于HTTP的POST实现,包含command参数和JSON参数,command参数用于指定需要进行的操作,JSON参数用于指明操作中会用到的相关参数;所述响应为基于HTTP响应,响应头中指定了响应体的内容为JSON参数,响应体包含图数据后端对图数据前端发出的操作指令处理结果。该申请把常用功能抽象出来,用一种中间件的方法屏蔽掉了不同前后端产品之间的差异,在后端图数据库和图数据的前端展示技术之间搭建了桥梁,增强了通用性,可以用于解决大规模图数据系统的交互式浏览和挖掘问题,一定程度上弥补了当前工具在这一块上的空白。
[0008] 专利CN111198678A公开了一种生成GraphQL前端操作接口的方法及装置,本发明公开了一种生成GraphQL前端操作接口的方法及装置。所公开的方法包括:通过GUI向开发人员显示GraphQL服务端所支持的所有类型和对象的信息;通过GUI获取开发人员需要操作的选定对象的选定信息;基于选定对象的选定信息,自动构建GraphQL的前端操作接口,其中,类型包括schema类型,选定信息包括选定对象中的选定字段的属性、一个或多个选定字段的具体字段值,前端操作包括query、mutation和subscription中的至少一种。所公开的技术方案能够快速生成前端操作接口,不需要开发人员手动编写代码。
[0009] 专利CN110958131A公开了一种YANG配置数据模型上支持基于GraphQL的查询,具体来说,公开了一种网络管理系统(NMS)装置管理多个网络装置,装置包括:存储器,被配置为存储表示由NMS管理的多个网络装置的数据模型的数据;以及一个或多个处理器,被配置为检索表示数据模型的数据,构建具有多个节点的GraphQL模型,对应于根据数据模型的一个网络装置的每个节点存储表示与根据数据模型的GraphQL模型的相应节点相关联的网络装置的属性的数据,接收包括表示至少一个查询属性的数据的GraphQL查询,确定哪个节点具有与至少一个查询属性匹配的属性,并且返回识别哪个网络装置对应于具有与至少一个查询属性匹配的属性的节点的数据。
[0010] 可见,目前,现有技术中,程序开发者在对数据源的读取和访问具备以下缺陷:
[0011] 1.目前数据库种类众多,导致的数据源类型也众多,特别是大型数据库或安全性要求高的数据库,往往采用各种加密数据手段,而且数据源也并不会对其他开放,数据源类型不同,从而开放者往往只能使用该数据的专门数据接口去访问数据,导致开放者开放的接口众多,给开发着带来不便;
[0012] 2.在调用多种数据库服务器时,为了调用数据库,往往需要数据库常开,在更换数据库使,需要重启web服务器,给数据库访问系统带来不便,甚至出现数据返回结果错误的问题。
[0013] 面对上述技术问题,人们希望提供一种能够同时访问多种数据的基于多源数据灵活生成GraphQL接口的方法,从而减少系统冗余,减轻开发者的负担。但到目前为止,现有技术中并无有效办法解决上述技术难题。

发明内容

[0014] 针对现有技术的局限和不足,本发明的目的在于提供一种整合多源数据自动生成服务接口并发布的方法,以解决上述背景技术中提出的问题。
[0015] 为实现上述目的,本发明提供如下技术方案:
[0016] 本发明提供的一种基于多源数据灵活生成GraphQL接口的方法,包括前端和服务端,其中所述前端包括业务服务器web和配置管理服务web,所述服务端包括GraphQL服务、配置服务和执行器;
[0017] 其特征在于,所述生成GraphQL接口的方法包括以下步骤:
[0018] 步骤S1,异构数据源管理:
[0019] 首先系统管理员或数据使用者录入数据源的信息,包括数据库服务器地址和端口、数据库名、并提供支持元数据访问的用户认证;
[0020] 步骤S2,元数据信息抽取:
[0021] 程序以相关权限通过数据源信息连接到指定数据源,获取所有元数据信息,包括数据库名称、表名称和表字段信息,其中表字段信息主要包括字段名称和字段类型;用户可以选择将其中全部或部分信息用于指定开放服务接口,程序根据用户选择生成数据库级别的通用元数据描述文件;
[0022] 步骤S3,接口配置管理:
[0023] 数据使用者可以根据权限获取其可访问的数据库,数据表和字段管理接口配置,接口配置描述了用户申请接口相关的所有信息,设置包括:
[0024] 步骤S3.1接口定义信息配置:用户根据业务需求配置接口信息以及管理接口状态,用户可以新增接口,定义接口名称,基于用户权限可获取的元数据信息选库、选表,同时设置接口的输入和输出参数,以及过滤条件。用户也可以修改或删除相关接口的定义;
[0025] 步骤S3.2接口状态设置:可以设置接口启用或禁用状态,通过发布后生效;
[0026] 步骤S3.3接口命名空间设置:可以设置接口所属命名空间,如不设置,默认为Public空间;
[0027] 步骤S4,接口配置注入:
[0028] 如果接口配置为启用状态,则利用动态语言特性,用户设置的接口相关配置,组织成GraphQL Schema相关结构,并注入至所属命名空间下的GraphQL Schema中;
[0029] 步骤S5,服务发布:
[0030] 基于元数据描述文件和用户特定接口配置文件动态生成相应的接口服务代码,利用动态语言特性构建服务端,刷新命名空间下的GraphQL Schema,能使Web服务器在不重启的情况下,即时发布新接口并开放给指定用户;
[0031] 步骤S6,GraphQL请求执行器基于动态GrahqlQL Schema编写的GraphQL请求在通过服务端验证之后,依赖执行器进行请求语法树解析,生成特定SQL语句,并执行此数据库SQL语句,返回结果。
[0032] 因此,经过以上的几个步骤,可以实现在不改源码的情况下,自动生成最新接口,并即可完成服务的发布,显著减少开发工作任务。
[0033] 优选的,数据源管理支持现有的常见的多种数据库类型,所述数据源信息保存至服务端,并做必要的连通性检测。
[0034] 优选的,所述GraphQL接口定义灵活可变,提供默认查询参数Schema,启、停用和接口版本控制。
[0035] 优选的,所述数据模型及接口配置采用一致性描述,方便以后通过数据模型扩展其他业务功能。
[0036] 优选的,自动生成接口定义并将数据访问逻辑动态注入至GraphQL Schema,达到发布即可用。
[0037] 优选的,通过命名空间隔离,生成接口后指定固定命名空间,有效隔离数据权限,方便鉴权,且因为接口所属命名空间的隔离性,导致最终用户使用GraphQL时,能更容易关注自身业务,而不会因为GraphQL Schema过于庞大导致接口文档过于复杂。
[0038] 优选的,GraphQL请求执行器能主动分析语法以及生成最终数据库执行语句,并执行和返回对应结果,与服务端业务代码隔离,方便以后支持更多数据库或者做进一步性能优化。
[0039] 优选的,所述多源数据为异构数据源,例如MySQL、SQLite和PostgreSQL,且通过补丁的方式扩展其他数据源。
[0040] 优选的,所述服务控制器配置有数据访问接口解释器,所述开发者发送接口访问请求,所述数据访问接口解释器对访问请求进行解释,所述服务控制器对相应的数据库进行数据查询获取查询结果,所述服务控制器的数据访问接口解释器将查询结果进行数据解释并发送给所述开放者,解释后的数据是能够被开发者识别的数据类型。
[0041] 优选的,所述开发者不对数据进行直接访问,发送的访问指令均为所述接口处理后的指令,以防止病毒入侵所述数据库。
[0042] 与现有技术相比,本发明的有益效果是:
[0043] 1、本发明的一种基于多源数据灵活生成GraphQL接口并发布的方法,可以实现在不改源码的情况下,自动生成最新接口,并即可完成服务的发布,显著减少开发工作任务。
[0044] 2、本发明提供一种基于多源数据灵活生成GraphQL接口并发布的方法,主要涉及软件开发和运行技术领域,可以在无需开发者手动介入的情况下,通过几个简单的步骤,根据数据源提取的元数据以及数据使用者需求生成对应的GraphQL接口,自动生效并开放给数据使用者,大量减轻普通开发人员的工作压力。

附图说明

[0045] 图1为本发明的多源数据GraphQL接口生成架构示意图;
[0046] 图2为本发明的多源数据GraphQL接口自动生成服务接口流程图;
[0047] 图3为本发明的业务管理发布新接口的时序图;
[0048] 图4为本发明的GraphQL查询请求解释执行的时序图。

具体实施方式

[0049] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050] 具体实施例一:
[0051] 请参阅图1,本发明提供一种技术方案:
[0052] 一种基于多源数据灵活生成GraphQL接口的方法,包括前端和服务端,其中所述前端包括业务服务器web和配置管理服务web,所述服务端包括GraphQL服务、配置服务和执行器;
[0053] 其特征在于,所述生成GraphQL接口的方法包括以下步骤:
[0054] 步骤S1,异构数据源管理:
[0055] 首先系统管理员或数据使用者录入数据源的信息,包括数据库服务器地址和端口、数据库名、并提供支持元数据访问的用户认证;
[0056] 步骤S2,元数据信息抽取:
[0057] 程序以相关权限通过数据源信息连接到指定数据源,获取所有元数据信息,包括数据库名称、表名称和表字段信息,其中表字段信息主要包括字段名称和字段类型;用户可以选择将其中全部或部分信息用于指定开放服务接口,程序根据用户选择生成数据库级别的通用元数据描述文件;
[0058] 步骤S3,接口配置管理:
[0059] 数据使用者可以根据权限获取其可访问的数据库,数据表和字段管理接口配置,接口配置描述了用户申请接口相关的所有信息,设置包括:
[0060] 步骤S3.1接口定义信息配置:用户根据业务需求配置接口信息以及管理接口状态,用户可以新增接口,定义接口名称,基于用户权限可获取的元数据信息选库、选表,同时设置接口的输入和输出参数,以及过滤条件。用户也可以修改或删除相关接口的定义;
[0061] 步骤S3.2接口状态设置:可以设置接口启用或禁用状态,通过发布后生效;
[0062] 步骤S3.3接口命名空间设置:可以设置接口所属命名空间,如不设置,默认为Public空间;
[0063] 步骤S4,接口配置注入:
[0064] 如果接口配置为启用状态,则利用动态语言特性,用户设置的接口相关配置,组织成GraphQL Schema相关结构,并注入至所属命名空间下的GraphQL Schema中;
[0065] 步骤S5,服务发布:
[0066] 基于元数据描述文件和用户特定接口配置文件动态生成相应的接口服务代码,利用动态语言特性构建服务端,刷新命名空间下的GraphQL Schema,能使Web服务器在不重启的情况下,即时发布新接口并开放给指定用户;
[0067] 步骤S6,GraphQL请求执行器基于动态GrahqlQL Schema编写的GraphQL请求在通过服务端验证之后,依赖执行器进行请求语法树解析,生成特定SQL语句,并执行此数据库SQL语句,返回结果。
[0068] 优选的,数据源管理支持现有的常见的多种数据库类型,所述数据源信息保存至服务端,并做必要的连通性检测。
[0069] 优选的,所述GraphQL接口定义灵活可变,提供默认查询参数Schema,启、停用和接口版本控制。
[0070] 优选的,所述数据模型及接口配置采用一致性描述,方便以后通过数据模型扩展其他业务功能。
[0071] 优选的,自动生成接口定义并将数据访问逻辑动态注入至GraphQL Schema,达到发布即可用。
[0072] 优选的,通过命名空间隔离,生成接口后指定固定命名空间,有效隔离数据权限,方便鉴权,且因为接口所属命名空间的隔离性,导致最终用户使用GraphQL时,能更容易关注自身业务,而不会因为GraphQL Schema过于庞大导致接口文档过于复杂。
[0073] 优选的,GraphQL请求执行器能主动分析语法以及生成最终数据库执行语句,并执行和返回对应结果,与服务端业务代码隔离,方便以后支持更多数据库或者做进一步性能优化。
[0074] 优选的,所述多源数据为异构数据源,例如MySQL、SQLite和PostgreSQL,且通过补丁的方式扩展其他数据源。
[0075] 优选的,所述服务控制器配置有数据访问接口解释器,所述开发者发送接口访问请求,所述数据访问接口解释器对访问请求进行解释,所述服务控制器对相应的数据库进行数据查询获取查询结果,所述服务控制器的数据访问接口解释器将查询结果进行数据解释并发送给所述开放者,解释后的数据是能够被开发者识别的数据类型。
[0076] 优选的,所述开发者不对数据进行直接访问,发送的访问指令均为所述接口处理后的指令,以防止病毒入侵所述数据库。
[0077] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语″包括″、″包含″或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0078] 尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。