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

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

文献发布时间:2023-06-19 18:37:28


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

技术领域

本发明涉及数据处理技术领域,具体来说,涉及一种自定义执行单元的SQL协议扩展定义和实现系统。

背景技术

随着数据库技术的发展,软件企业和互联网公司在开发过程中,对于不同的数据库产品,往往需要在代码中调用不同的数据库客户端或ORM框架来实现代码层面的数据交互。围绕这些常用的框架,往往又衍生出更为复杂的代码和软件集成工具。

例如:mysql数据库的常用客户端和框架包括:phpMyAdmin、Navicat、MySQLWorkbench、JDBC、MyBatis、Hibernate、Spring Data、sqlx、gorm等。postgresql数据库常用的客户端和框架包括:pgAdmin、DBeaver、Navicat、DataGrip、OmniDB、JDBC、MyBatis、Hibernate、Spring Data、sqlx、gorm等。oracle数据库常用的客户端和框架包括:OracleInstant 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等。

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

针对相关技术中的问题,目前尚未提出有效的解决方案。

发明内容

针对相关技术中的问题,本发明提出一种自定义执行单元的SQL协议扩展定义和实现系统,以克服现有相关技术所存在的上述技术问题。

本发明所描述的支持异构数据源的统一SQL语言协议,使用标准的SQL协议,访问大部分的常用数据库和独立数据源。在这个统一的SQL语言协议中,包括对标准SQL语法解析、扩展SQL语法、通用元数据标准、以及支持数据源的执行单元。自定义的执行单元,不仅仅可以支持SQL协议数据库,还可以支持非SQL协议类型的数据源,比如文档数据库、图数据库、键值对系统、文件系统、接口(API)等独立标准的数据源协议。

为此,本发明采用的具体技术方案如下:

一种自定义执行单元的SQL协议扩展定义和实现系统,包括SQL协议扩展定义子系统和SQL协议实现子系统;其中,SQL协议扩展定义子系统包括扩展SQL协议定义模块和元数据标准定义模块;扩展SQL协议定义模块用于对扩展的SQL协议进行定义,且该扩展的SQL协议不修改原本的标准,仅添加新功能的支持;元数据标准定义模块用于对元数据的标准进行定义;SQL协议实现子系统包括扩展SQL语法解析模块和数据库执行模块;扩展SQL语法解析模块用于将SQL语句解析成便于处理逻辑的语法结构,且语法树中保存有SQL语句的上下文信息;数据库执行模块用于将语法树转换为数据源实例上可以执行的语法,且对于每一个不同的数据源协议类型,转换的逻辑都不相同。

进一步的,扩展的SQL协议中的扩展包括创建数据库的属性扩展及创建表的属性扩展。创建数据库的属性扩展的信息包括:数据库类型信息、数据库地址信息、数据库端口号信息、数据库名称信息、数据库用户名信息及数据库密码信息;创建表的属性扩展的信息包括:源表名信息和源字段名信息。

进一步的,元数据的协议支持库、表、字段级别的元数据定义方式,且元数据在定义过程中需要分别映射到数据源实例的库、表、字段或对应层级。字段包括空字段、未知字段、整型字段、布尔型字段、日期型字段、精确数字段、浮点数字段、可变长字符串字段、不可变长字符串字段、数组字段及时间戳字段。

进一步的,语法包括查询语法、断言语法、关联、合并、聚合函数、分组、子查询及窗口函数。语法树的节点包括表节点、语义节点及字段节点。表节点包括简单表、别名表、查询表、拼接表及关联表;语义节点包括筛选、分组、选择、且、或、非、匹配、包含及赋值的语法;字段节点包括普通字段、星号字段、别名字段、方法字段及赋值字段。

进一步的,语法转换的具体逻辑在查询结构中体现,采用不同的自定义执行单元实现。数据库执行模块包括关系型数据源/数据库执行模块、键值对数据源/数据库执行模块、文档数据库执行模块、文件数据源执行模块及接口数据源执行模块。

本发明的有益效果为:

1)本发明支持异构数据源的统一SQL语言协议,可以解决单个客户端或ORM框架无法满足各种不同类型的数据库的问题,从源头上减少数据库逻辑计算和数据一致性的复杂度。

2)本发明不仅仅可以支持SQL协议数据库,还可以支持非SQL协议类型的数据源,比如文档数据库、图数据库、内存缓存系统、文件系统、API接口等独立标准的数据源协议。

3)本发明在算法层面,由于协议和代码层面的一致性,数据执行指令可以集成到同一个客户端、同一个进程(PROCESS)中。大部分的业务场景中,开发人员可以使用简单的逻辑链路代替分布式的处理逻辑。比如原先使用三种不同的数据库的客户端处理业务的三个部分,在进程中通信,可以在同一个客户端中处理所有三个部分逻辑。

4)本发明通过使用同一个客户端的优势也解决了客户端的数据一致性问题。在数据写入的场景中,不需要在不同客户端之间执行数据拷贝,减少了IO等待和异常的可能性,避免了客户端的数据一致性问题。

5)本发明通过利用同一个客户端将数据管理的逻辑在同一个进程中执行,可以按照链表或树形结构编排逻辑和事务表达。大部分的业务逻辑都可以在依赖中递归,降低了事务的复杂度,不需要再通过分布式事务的算法实现。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例的一种自定义执行单元的SQL协议扩展定义和实现系统的结构示意图;

图2是本发明实施例中创建数据库语法扩展的示意图;

图3是本发明实施例中创建表语法扩展的示意图;

图4是本发明实施例中通过元数据协议支持标准数据类型的示意图;

图5是本发明实施例中元数据和数据类型的映射关系示意图;

图6是本发明实施例中AST语法树的示意图;

图7是本发明实施例中数据库执行模块的逻辑示意图。

图中:

1、SQL协议扩展定义子系统;11、扩展SQL协议定义模块;12、元数据标准定义模块;2、SQL协议实现子系统;21、扩展SQL语法解析模块;22、数据库执行模块;221、关系型数据源/数据库执行模块;222、键值对数据源/数据库执行模块;223、文档数据库执行模块;224、文件数据源执行模块;225、接口数据源执行模块。

具体实施方式

为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。

根据本发明的实施例,提供了一种自定义执行单元的SQL协议扩展定义和实现系统。

以下对本发明中的部分专业术语进行解释如下:

数据库软件技术:

数据库系统或DBMS(Database Management System,数据库管理系统)是一种软件,用于收集电子和数字记录,以提取有用信息并存储这些信息。标准数据库的目的是存储和检索数据。数据库,如标准关系数据库,专门用于存储和处理结构化数据。通常,数据库有一个表来存储数据,它们使用结构化查询语言(SQL)来访问这些表中的数据。数据库和数据库系统在处理复杂、快速和多样的数据集方面发挥着至关重要的作用。如果没有数据库管理系统,企业将无法获得有价值的见解和深入的分析。在数据库环境中,数据被访问、修改、控制,然后以组织良好的形式呈现,从而允许企业执行多种数据处理操作。数据通常以行和列的形式组织,以最小化工作负载压力并立即获得准确的结果。数据库管理系统中可以存储、处理或检索的不同类型的数据包括数字、时间序列、文本和二进制数据;

数据库查询语言(SQL):

SQL是访问和操作数据库的标准语言。SQL代表结构化查询语言、允许您访问和操作数据库。SQL于1986年成为美国国家标准协会(ANSI)的标准,并于1987年成为国际标准化组织(ISO)的标准。SQL可以对数据库执行查询,可以从数据库中检索数据,可以在数据库中插入记录,可以更新数据库中的记录,可以从数据库中删除记录,可以创建新数据库,可以在数据库中创建新表,可以在数据库中创建存储过程,可以在数据库中创建视图,可以设置表、过程和视图的权限。

现结合附图和具体实施方式对本发明进一步说明,如图1-图7所示,根据本发明实施例的自定义执行单元的SQL协议扩展定义和实现系统,包括SQL协议扩展定义子系统1和SQL协议实现子系统2,且SQL协议扩展定义子系统1为支持异构数据源的SQL协议扩展定义系统,SQL协议实现子系统2为支持异构数据源的SQL协议实现系统;

其中,SQL协议扩展定义子系统1包括扩展SQL协议定义模块11和元数据标准定义模块12;

扩展SQL协议定义模块11用于对扩展的SQL协议进行定义,且本发明扩展的SQL协议不修改原本的标准,仅仅添加新功能的支持;

扩展主要包括对创建数据库的属性(语法)扩展及创建表的属性(语法)扩展。

创建数据库的属性扩展的信息包括:数据库类型信息、数据库地址信息、数据库端口号信息、数据库名称信息、数据库用户名信息及数据库密码信息(如图2所示);

创建表的属性扩展的信息包括:源表名信息和源字段名信息(如图3所示)。

元数据标准定义模块12用于对元数据的标准进行定义;

元数据的协议支持库、表、字段级别的元数据定义方式,且元数据在定义过程中需要分别映射到数据源实例的库、表、字段或对应层级。本实施例中定义了空字段、未知字段、整型字段、布尔型字段、日期型字段、精确数字段、浮点数字段、可变长字符串字段、不可变长字符串字段、数组字段、时间戳字段十二种数据库格式。

本实施例中包括异构的数据源实例,可以通过对元数据的定义来获得数据源所不支持的类型扩展(如图4所示)。

数据源本身不支持的数据类型,本实施例中通过独立存储的元数据,数据结构做映射和转换的方式,实现支持SQL的语法和类型(如图5所示)。

SQL协议实现子系统2包括扩展SQL语法解析模块21和数据库执行模块22;

扩展SQL语法解析模块21主要用于将SQL语句解析成便于处理逻辑的语法结构,且语法树中保存有SQL语句的上下文信息(如图6所示);

根据sql1999和sql2003的标准,sql标准语法中较为复杂的语法分支有查询语法(Select)、断言语法(Predicate)、关联(Join Table)、合并(Merge)、聚合函数(AggregateFunction)、分组(Group By)、子查询(With)、窗口函数(Window Function)。

语法树上的节点分为表节点(tableNode)和语义节点(expressNode)两种。简单表(SimpleTbale)、别名表(AliasTable)、查询表(QueryTable)、拼接表(UnionTable)、关联表(JoinTable)都属于表节点。语义节点包括筛选(Where)、分组(group by)、选择(having)、且(and)、或(or)、非(not)、匹配(like)、包含(in)、赋值(values)等语法。

字段节点(column)则细分为普通字段(column)、星号字段(starColumn)、别名字段(aliasColumn)、方法字段(functionExpression)、赋值字段(valueColumn)。

数据库执行模块22用于将语法树转换为数据源实例上可以执行的语法,针对每一个不同的数据源协议类型,转换的逻辑都不相同。语法转换的具体逻辑在查询结构中体现,采用不同的自定义执行单元实现(如图7所示)。

数据库执行模块22包括关系型数据源/数据库执行模块221、键值对数据源/数据库执行模块222、文档数据库执行模块223、文件数据源执行模块224及接口数据源执行模块225。

具体的,对于不同的数据源类型:

(1)关系型(SQL)数据源或者数据库

关系型数据库对SQL语法的支持较好,可以近似的使用大部分标准SQL语法;

游标(limit)的语法存在差异,在postgresql数据源中转换为等价的标记位(offset)。

自增字段的语法存在差异,在oracle数据源中转换为序列(sequence)语法。

(2)键值对(kv)数据源或数据库

键值对类型的数据源中,大部分的SQL语法和数据类型不支持,需要将语法转义为redis的读写或遍历语法。

筛选(where)条件的SQL语句,需要在执行层中将筛选条件的转换为查询结构中的筛选逻辑,并在执行单元的模块中实现数据筛选的功能。

查询(select)语法需要根据游标(limit)条件,将语义逻辑转换为等价的单条查询(get)或遍历查询(scan)。

(3)文档数据库

文档数据源类型中,完全不支持SQL的语法表达但是对部分SQL的逻辑是支持的,主要实现语法的转换和类型的映射。

SQL的语法树转换为等价的文档查询语法(aql、query等)。

图数据源中的专有方法,则通过元数据中的定义映射。

(4)文件数据源

文件数据源中,对SQL语法表达和逻辑都不支持。

查询(select)语法转换成对文件的扫描(scan),在执行单元中加入过滤(filter)的逻辑实现。

(5)接口数据源

接口数据源中,缺少对库和表结构的定义,同样先在元数据中定义库和表的对应接口,在执行单元中实现接口和行数据的对应转换。

综上所述,借助于本发明的上述技术方案,本发明支持异构数据源的统一SQL语言协议,可以解决单个客户端或ORM框架无法满足各种不同类型的数据库的问题,从源头上减少数据库逻辑计算和数据一致性的复杂度。

此外,本发明不仅仅可以支持SQL协议数据库,还可以支持非SQL协议类型的数据源,比如文档数据库、图数据库、内存缓存系统、文件系统、API接口等独立标准的数据源协议。

此外,本发明在算法层面,由于协议和代码层面的一致性,数据执行指令可以集成到同一个客户端、同一个进程(PROCESS)中。大部分的业务场景中,开发人员可以使用简单的逻辑链路代替分布式的处理逻辑。比如原先使用三种不同的数据库的客户端处理业务的三个部分,在进程中通信,可以在同一个客户端中处理所有三个部分逻辑。

此外,本发明通过使用同一个客户端的优势也解决了客户端的数据一致性问题。在数据写入的场景中,不需要在不同客户端之间执行数据拷贝,减少了IO等待和异常的可能性,避免了客户端的数据一致性问题。

此外,本发明通过利用同一个客户端将数据管理的逻辑在同一个进程中执行,可以按照链表或树形结构编排逻辑和事务表达。大部分的业务逻辑都可以在依赖中递归,降低了事务的复杂度,不需要再通过分布式事务的算法实现。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120115631242