一种自定义执行单元的SQL协议扩展定义和实现系统技术方案

技术编号:36692313 阅读:13 留言:0更新日期:2023-02-27 20:00
本发明专利技术公开了一种自定义执行单元的SQL协议扩展定义和实现系统,包括SQL协议扩展定义子系统和SQL协议实现子系统;其中,SQL协议扩展定义子系统包括扩展SQL协议定义模块和元数据标准定义模块;SQL协议实现子系统包括扩展SQL语法解析模块和数据库执行模块。本发明专利技术支持异构数据源的统一SQL语言协议,可以解决单个客户端或ORM框架无法满足各种不同类型的数据库的问题,从源头上减少数据库逻辑计算和数据一致性的复杂度;此外,本发明专利技术不仅仅可以支持SQL协议数据库,还可以支持非SQL协议类型的数据源,比如文档数据库、图数据库、内存缓存系统、文件系统、API接口等独立标准的数据源协议。议。议。

【技术实现步骤摘要】
一种自定义执行单元的SQL协议扩展定义和实现系统


[0001]本专利技术涉及数据处理
,具体来说,涉及一种自定义执行单元的SQL协议扩展定义和实现系统。

技术介绍

[0002]随着数据库技术的发展,软件企业和互联网公司在开发过程中,对于不同的数据库产品,往往需要在代码中调用不同的数据库客户端或ORM框架来实现代码层面的数据交互。围绕这些常用的框架,往往又衍生出更为复杂的代码和软件集成工具。
[0003]例如:mysql数据库的常用客户端和框架包括:phpMyAdmin、Navicat、MySQL Workbench、JDBC、MyBatis、Hibernate、Spring Data、sqlx、gorm等。postgresql数据库常用的客户端和框架包括:pgAdmin、DBeaver、Navicat、DataGrip、OmniDB、JDBC、MyBatis、Hibernate、Spring Data、sqlx、gorm等。oracle数据库常用的客户端和框架包括:Oracle Instant Client、SQL Plus、PL/SQL Developer、JDBC、MyBatis、Hibernate、Spring Data、gorose等。redis数据库常用的客户端和框架包括:RedisClient、Redis Desktop Manager、RedisStudio、AnotherRedisDesktopManager、Jedis、Lettuce、Redisson、go

redis、redigo等。elastic search数据库常用的客户端和框架包括:Elasticsearch

Head、cerebro、kinaba、Dejavu、ElasticHD、ebatis、go

elasticsearch等。
[0004]然而,现有的数据库客户端和ORM框架,往往只能支持一个或少数几个类似的数据库产品,并且在架构设计上不能够扩展出对更多更广泛的数据库产品的支持。在软件和互联网行业发展及数据管理需求越来越庞大和复杂的背景下,这种现状导致了数据应用层面非常复杂的问题。用户在同时使用多个数据库的时候,为了同时满足逻辑一致性和数据一致性,需要在程序或代码中同时兼容多个数据库的客户端和框架,并为逻辑处理和数据一致性的检验编写大量的冗余代码。例如分布式一致性算法、数据一致性解决方案和分布式事务等。
[0005]针对相关技术中的问题,目前尚未提出有效的解决方案。

技术实现思路

[0006]针对相关技术中的问题,本专利技术提出一种自定义执行单元的SQL协议扩展定义和实现系统,以克服现有相关技术所存在的上述技术问题。
[0007]本专利技术所描述的支持异构数据源的统一SQL语言协议,使用标准的SQL协议,访问大部分的常用数据库和独立数据源。在这个统一的SQL语言协议中,包括对标准SQL语法解析、扩展SQL语法、通用元数据标准、以及支持数据源的执行单元。自定义的执行单元,不仅仅可以支持SQL协议数据库,还可以支持非SQL协议类型的数据源,比如文档数据库、图数据库、键值对系统、文件系统、接口(API)等独立标准的数据源协议。
[0008]为此,本专利技术采用的具体技术方案如下:
[0009]一种自定义执行单元的SQL协议扩展定义和实现系统,包括SQL协议扩展定义子系
统和SQL协议实现子系统;其中,SQL协议扩展定义子系统包括扩展SQL协议定义模块和元数据标准定义模块;扩展SQL协议定义模块用于对扩展的SQL协议进行定义,且该扩展的SQL协议不修改原本的标准,仅添加新功能的支持;元数据标准定义模块用于对元数据的标准进行定义;SQL协议实现子系统包括扩展SQL语法解析模块和数据库执行模块;扩展SQL语法解析模块用于将SQL语句解析成便于处理逻辑的语法结构,且语法树中保存有SQL语句的上下文信息;数据库执行模块用于将语法树转换为数据源实例上可以执行的语法,且对于每一个不同的数据源协议类型,转换的逻辑都不相同。
[0010]进一步的,扩展的SQL协议中的扩展包括创建数据库的属性扩展及创建表的属性扩展。创建数据库的属性扩展的信息包括:数据库类型信息、数据库地址信息、数据库端口号信息、数据库名称信息、数据库用户名信息及数据库密码信息;创建表的属性扩展的信息包括:源表名信息和源字段名信息。
[0011]进一步的,元数据的协议支持库、表、字段级别的元数据定义方式,且元数据在定义过程中需要分别映射到数据源实例的库、表、字段或对应层级。字段包括空字段、未知字段、整型字段、布尔型字段、日期型字段、精确数字段、浮点数字段、可变长字符串字段、不可变长字符串字段、数组字段及时间戳字段。
[0012]进一步的,语法包括查询语法、断言语法、关联、合并、聚合函数、分组、子查询及窗口函数。语法树的节点包括表节点、语义节点及字段节点。表节点包括简单表、别名表、查询表、拼接表及关联表;语义节点包括筛选、分组、选择、且、或、非、匹配、包含及赋值的语法;字段节点包括普通字段、星号字段、别名字段、方法字段及赋值字段。
[0013]进一步的,语法转换的具体逻辑在查询结构中体现,采用不同的自定义执行单元实现。数据库执行模块包括关系型数据源/数据库执行模块、键值对数据源/数据库执行模块、文档数据库执行模块、文件数据源执行模块及接口数据源执行模块。
[0014]本专利技术的有益效果为:
[0015]1)本专利技术支持异构数据源的统一SQL语言协议,可以解决单个客户端或ORM框架无法满足各种不同类型的数据库的问题,从源头上减少数据库逻辑计算和数据一致性的复杂度。
[0016]2)本专利技术不仅仅可以支持SQL协议数据库,还可以支持非SQL协议类型的数据源,比如文档数据库、图数据库、内存缓存系统、文件系统、API接口等独立标准的数据源协议。
[0017]3)本专利技术在算法层面,由于协议和代码层面的一致性,数据执行指令可以集成到同一个客户端、同一个进程(PROCESS)中。大部分的业务场景中,开发人员可以使用简单的逻辑链路代替分布式的处理逻辑。比如原先使用三种不同的数据库的客户端处理业务的三个部分,在进程中通信,可以在同一个客户端中处理所有三个部分逻辑。
[0018]4)本专利技术通过使用同一个客户端的优势也解决了客户端的数据一致性问题。在数据写入的场景中,不需要在不同客户端之间执行数据拷贝,减少了IO等待和异常的可能性,避免了客户端的数据一致性问题。
[0019]5)本专利技术通过利用同一个客户端将数据管理的逻辑在同一个进程中执行,可以按照链表或树形结构编排逻辑和事务表达。大部分的业务逻辑都可以在依赖中递归,降低了事务的复杂度,不需要再通过分布式事务的算法实现。
附图说明
[0020]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种自定义执行单元的SQL协议扩展定义和实现系统,其特征在于,包括SQL协议扩展定义子系统(1)和SQL协议实现子系统(2);其中,所述SQL协议扩展定义子系统(1)包括扩展SQL协议定义模块(11)和元数据标准定义模块(12);所述扩展SQL协议定义模块(11)用于对扩展的SQL协议进行定义,且该扩展的SQL协议不修改原本的标准,仅添加新功能的支持;所述元数据标准定义模块(12)用于对元数据的标准进行定义;所述SQL协议实现子系统(2)包括扩展SQL语法解析模块(21)和数据库执行模块(22);所述扩展SQL语法解析模块(21)用于将SQL语句解析成便于处理逻辑的语法结构,且语法树中保存有SQL语句的上下文信息;所述数据库执行模块(22)用于将语法树转换为数据源实例上可以执行的语法,且对于每一个不同的数据源协议类型,转换的逻辑都不相同。2.根据权利要求1所述的一种自定义执行单元的SQL协议扩展定义和实现系统,其特征在于,所述扩展的SQL协议中的扩展包括创建数据库的属性扩展及创建表的属性扩展。3.根据权利要求2所述的一种自定义执行单元的SQL协议扩展定义和实现系统,其特征在于,所述创建数据库的属性扩展的信息包括:数据库类型信息、数据库地址信息、数据库端口号信息、数据库名称信息、数据库用户名信息及数据库密码信息;所述创建表的属性扩展的信息包括:源表名信息和源字段名信息。4.根据权利要求1所述的一种自定义执行单元的SQL协议扩展定义和实现系统,其特征在于,所述元数据的协议支持库、表、字段级别的元数据定义方式,且所...

【专利技术属性】
技术研发人员:王刚韦振源
申请(专利权)人:上海恩毕可施科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1