CN111367941A - 一种基于业务实体be的查询语言扩展方法及其基本实现方法 - Google Patents
一种基于业务实体be的查询语言扩展方法及其基本实现方法 Download PDFInfo
- Publication number
- CN111367941A CN111367941A CN202010207432.5A CN202010207432A CN111367941A CN 111367941 A CN111367941 A CN 111367941A CN 202010207432 A CN202010207432 A CN 202010207432A CN 111367941 A CN111367941 A CN 111367941A
- Authority
- CN
- China
- Prior art keywords
- syntax tree
- dom
- query language
- database
- name
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 230000035515 penetration Effects 0.000 claims abstract description 10
- 238000011161 development Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 7
- 238000010276 construction Methods 0.000 claims description 5
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 230000009466 transformation Effects 0.000 claims 3
- 230000004807 localization Effects 0.000 abstract description 2
- 230000002688 persistence Effects 0.000 abstract description 2
- 238000012549 training Methods 0.000 abstract description 2
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于业务实体BE的查询语言扩展方法及其基本实现方法,属于计算机技术领域,该方法以Tsql语言为基础,以一种内置数据和业务逻辑的结构“业务实体”BE为载体,通过Dom语法树转换器把统一查询语言的中间语法树转换为Dom语法树,基于生成的Dom语法树,利用BE数据结构和上下文中获取的数据库类型生成对应数据库的Sql语句。本发明利用TSql的普适性、便捷性减少了人员培训成本,利用业务实体的直观便捷性,降低了开发难度。本发明能够根据不同的业务实体生成不同的数据库表名和列名;语法上支持字段穿透和年度策略,特别适用微服务、产品化、数据库国产化等场景的数据库持久化开发。
Description
技术领域
本发明涉及计算机领域,主要阐述了一种基于业务实体(Business Entity,BE)的查询语言(Business Query Language,BQL)的扩展方法及其基本实现方法。
背景技术
在产品化业务开发过程中,客户往往根据现实需要对业务进行逻辑分块/分表,进而在数据库中进行建表映射。由于不同的逻辑表之间存在复杂的关联性,这种关联性有时无法在数据库中直观体现。同时在进行数据操作时需要也要书写复杂的表关联sql语句,非常不便捷。需要一种更为直观的逻辑描述这种业务关系,同时需要一种基于该业务实体的查询语句支持查询,并具有一定的可扩展性。
目前市面上常见的同类产品是通过数据模型框架(ORM)+封装数据库访问的方案。这种访问方式是一种基于数据库关系的访问方法,支持常见的数据库扩展,但这种方案仅支持有限的数据库类型,不支持基于业务的查询和扩展。ORM方案存在一些不适用的场景,比如频繁对表结构进行更新、多个表之间的多个字段做关联。在这些场景写sql,就避免不了写大量sql语句和联合表查询。这对业务开发带来了繁琐和性能问题。对于同一个逻辑sql语句,如果要复用于其他数据库,避免不了频繁大量更改sql表名和列名,造成查询语句的可复用性比较差。
发明内容
本发明的技术任务是解决现有技术的不足,提供一种基于业务实体BE的查询语言扩展方法,支持统一查询语言。
该方法以Tsql语言为基础,根据当前的BE结构,提供解析、转换、生成目标数据库的对应语句,能够根据不同的业务实体生成不同的数据库表名和列名;语法上支持字段穿透和年度策略,特别适用微服务、产品化、数据库国产化等场景的数据库持久化开发。
本发明解决其技术问题所采用的技术方案是:
1、本发明提供一种基于业务实体BE的查询语言扩展方法,该方法以Tsql语言为基础,以一种内置数据和业务逻辑的结构“业务实体”BE为载体,通过Dom语法树转换器把统一查询语言的中间语法树转换为Dom语法树,基于生成的Dom语法树,利用BE数据结构和上下文中获取的数据库类型生成对应数据库的Sql语句。
可选的,具体步骤如下:
步骤S1、首先将传入的基于Tsql语法进行初步解析,解析为中间语法树;
步骤S2、然后将中间语法树转换为Dom语法树,并对Dom语法树里使用的表名表达式进行配置;
步骤S3、最后调用sql生成器对Dom语法树进行生成,在这个过程中利用业务实体BE对生成过程进行定制,将步骤S2中表名表达式转换为实际的表名。
可选的,步骤S1中,开发人员统一使用以Tsql语言作为开发语言,列名和表名的写法需要按照规则分别写成两段式:节点名字.属性名字、BE名字.节点名字;
如果需要字段穿透,需要写成多段式:节点名字.属性名字.属性名字.....属性名字。
可选的,所述中间语法树为第三方语法树,具体为Tsql-ScriptDom语法树或者Druid语法树。
可选的,步骤S2中,转换过程还包括对Dom语法树中相关业务的功能扩展,包括分表策略的转换、多语字段的转换、字段穿透。
可选的,步骤S2中,通过Dom语法树转换器将中间语法树转换为Dom语法树。
可选的,步骤S2中,功能扩展的方式为硬编码、插件方式。
2、本发明另提供一种基于业务实体BE的查询语言扩展基本实现方法,实现方法如下:
1)加载业务实体BE,BE初始化,不同的业务实体封装成不同“数据包”,叫做元数据,每一个元数据相当于一个数据库的多个表的集合,且有唯一的元数据ID,元数据下有多个节点(Object),每一个节点对应数据库中的一张表,第一步就是加载这些元数据,对元数据进行初始化;
2)生成Dom语法树中的扩展方法:在生成Dom语法树的过程中,对构造过程进行配置;
3)解析2)生成的Dom语法树,迭代sql语句中的定制方法,语法生成器对Dom语法树按照之前定义的规则进行迭代,保留sql中真正的列名,因为字段穿透后,原表名和列名不符合sq语法(如从B表中检索A表中字段),所以要给sql语句关联正确的表名,产生一个含有对应字段的联合表。
可选的,使用LEFT JOIN关键字构造联合表。
可选的,对构造过程进行配置是指:如当前存在关联字段,即BE上的某个节点中字段关联了另外一个节点的某个字段,需要首先对关联字段进行预处理,即从BE中取出关联字段实际对应的数据库列名,存储到Dom语法树中。
本发明的一种基于业务实体BE的查询语言扩展方法及其基本实现方法与现有技术相比所产生的有益效果是:
1、以Tsql语言为基础,以一种内置数据和业务逻辑的结构“业务实体”为载体。利用TSql的普适性、便捷性减少了人员培训成本,利用业务实体的直观便捷性,降低了开发难度。
2、Dom语法树转换器,负责把统一查询语言的语法树转换为Dom语法树,相关的业务扩展是在此部分实施的,比如分表策略的转换、多语字段的转换、字段穿透等。
3、目标库sql生成器,基于生成的语法树,利用BE数据结构和上下文中获取的数据库类型生成对应数据库的Sql语句。本模块支持通过BE对sql进行定制,支持扩展构件;
4、基于上述设施,对外提供一份通用的sql翻译Api接口,支持建表、更新、删除、查询、合并等基本sql语句;使用BE书写字段名和表名,屏蔽不同数据库、不同数据库表带来的差异,在sql生成器统一生成。
附图说明
为了更清楚地描述本发明一种基于业务实体BE的查询语言扩展方法及其基本实现方法的工作原理,下面将附上简图作进一步说明。
附图1是本发明的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的一种基于业务实体BE的查询语言扩展方法,该方法以Tsql语言为基础,以一种内置数据和业务逻辑的结构“业务实体”BE为载体,通过Dom语法树转换器把统一查询语言的中间语法树转换为Dom语法树,基于生成的Dom语法树,利用BE数据结构和上下文中获取的数据库类型生成对应数据库的Sql语句。
请参阅图1,具体步骤如下:
步骤S1、首先将传入的基于Tsql语法进行初步解析,解析为中间语法树;
步骤S2、然后将中间语法树转换为Dom语法树,并对Dom语法树里使用的表名表达式进行配置;
步骤S3、最后调用sql生成器对Dom语法树进行生成,在这个过程中利用业务实体BE对生成过程进行定制,将步骤S2中表名表达式转换为实际的表名。
可选的,步骤S1中,开发人员统一使用以Tsql语言作为开发语言,列名和表名的写法需要按照规则分别写成两段式:节点名字.属性名字、BE名字.节点名字;
如果需要字段穿透,需要写成多段式:节点名字.属性名字.属性名字.....属性名字。
其中中间语法树为第三方语法树,具体为Tsql-ScriptDom语法树或者Druid语法树。
其中步骤S2中,转换过程还包括对Dom语法树中相关业务的功能扩展,包括分表策略的转换、多语字段的转换、字段穿透。
其中步骤S2中,通过Dom语法树转换器将中间语法树转换为Dom语法树。
其中步骤S2中,功能扩展的方式为硬编码、插件方式。
下面针对本专利中的基于BE的扩展方法,以字段穿透为例,从以下三个步骤给出一般基于BE扩展功能的详细实现方法:
1)加载业务实体BE,BE初始化,不同的业务实体封装成不同“数据包”,叫做元数据,每一个元数据相当于一个数据库的多个表的集合,且有唯一的元数据ID,元数据下有多个节点(Object),每一个节点对应数据库中的一张表,第一步就是加载这些元数据,对元数据进行初始化,加载代码如下:
2)生成Dom语法树中的扩展方法:在生成Dom语法树的过程中,对构造过程进行配置,比如当前存在关联字段,即BE上的某个节点中字段关联了另外一个节点的某个字段,需要首先对关联字段进行预处理,即从BE中取出关联字段实际对应的数据库列名,存储到Dom语法树中;代码如下,该部分同时实现了bsql/Sql融合执行:
3)解析2)生成的Dom语法树,迭代sql语句中的定制方法,语法生成器对Dom语法树按照之前定义的规则进行迭代,保留sql中真正的列名,因为字段穿透后,原表名和列名不符合sq语法(如从B表中检索A表中字段),所以要给sql语句关联正确的表名,产生一个含有对应字段的联合表。
其中使用LEFT JOIN关键字构造联合表。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (10)
1.一种基于业务实体BE的查询语言扩展方法,其特征在于,该方法以Tsql语言为基础,以一种内置数据和业务逻辑的结构“业务实体”BE为载体,通过Dom语法树转换器把统一查询语言的中间语法树转换为Dom语法树,基于生成的Dom语法树,利用BE数据结构和上下文中获取的数据库类型生成对应数据库的Sql语句。
2.根据权利要求1所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,具体步骤如下:
步骤S1、首先将传入的基于Tsql语法进行初步解析,解析为中间语法树;
步骤S2、然后将中间语法树转换为Dom语法树,并对Dom语法树里使用的表名表达式进行配置;
步骤S3、最后调用sql生成器对Dom语法树进行生成,在这个过程中利用业务实体BE对生成过程进行定制,将步骤S2中表名表达式转换为实际的表名。
3.根据权利要求2所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,步骤S1中,开发人员统一使用以Tsql语言作为开发语言,列名和表名的写法需要按照规则分别写成两段式:节点名字.属性名字、BE名字.节点名字;
如果需要字段穿透,需要写成多段式:节点名字.属性名字.属性名字.....属性名字。
4.根据权利要求2或3所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,所述中间语法树为第三方语法树,具体为Tsql-ScriptDom语法树或者Druid语法树。
5.根据权利要求2或3所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,步骤S2中,转换过程还包括对Dom语法树中相关业务的功能扩展,包括分表策略的转换、多语字段的转换、字段穿透。
6.根据权利要求2或3所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,步骤S2中,通过Dom语法树转换器将中间语法树转换为Dom语法树。
7.根据权利要求5所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,步骤S2中,功能扩展的方式为硬编码、插件方式。
8.如权利要求1、2或3所述的一种基于业务实体BE的查询语言扩展基本实现方法,其特征在于,实现方法如下:
1)加载业务实体BE,BE初始化,不同的业务实体封装成不同“数据包”,叫做元数据,每一个元数据相当于一个数据库的多个表的集合,且有唯一的元数据ID,元数据下有多个节点(Object),每一个节点对应数据库中的一张表,第一步就是加载这些元数据,对元数据进行初始化;
2)生成Dom语法树中的扩展方法:在生成Dom语法树的过程中,对构造过程进行配置;
3)解析2)生成的Dom语法树,迭代sql语句中的定制方法,语法生成器对Dom语法树按照之前定义的规则进行迭代,保留sql中真正的列名,因为字段穿透后,原表名和列名不符合sq语法(如从B表中检索A表中字段),所以要给sql语句关联正确的表名,产生一个含有对应字段的联合表。
9.根据权利要求8所述的一种基于业务实体BE的查询语言扩展基本实现方法,其特征在于,使用LEFT JOIN关键字构造联合表。
10.根据权利要求8所述的一种基于业务实体BE的查询语言扩展基本实现方法,其特征在于,对构造过程进行配置是指:如当前存在关联字段,即BE上的某个节点中字段关联了另外一个节点的某个字段,需要首先对关联字段进行预处理,即从BE中取出关联字段实际对应的数据库列名,存储到Dom语法树中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010207432.5A CN111367941A (zh) | 2020-03-23 | 2020-03-23 | 一种基于业务实体be的查询语言扩展方法及其基本实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010207432.5A CN111367941A (zh) | 2020-03-23 | 2020-03-23 | 一种基于业务实体be的查询语言扩展方法及其基本实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111367941A true CN111367941A (zh) | 2020-07-03 |
Family
ID=71207640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010207432.5A Pending CN111367941A (zh) | 2020-03-23 | 2020-03-23 | 一种基于业务实体be的查询语言扩展方法及其基本实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111367941A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150074136A1 (en) * | 2013-09-06 | 2015-03-12 | Sap Ag | Core data services extensibility for entity-relationship models |
CN109840256A (zh) * | 2019-03-05 | 2019-06-04 | 山东浪潮通软信息科技有限公司 | 一种基于业务实体的查询实现方法 |
CN110674229A (zh) * | 2019-09-24 | 2020-01-10 | 山东爱城市网信息技术有限公司 | 一种基于ast的关系型数据库sql表关系分析及展现方法 |
-
2020
- 2020-03-23 CN CN202010207432.5A patent/CN111367941A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150074136A1 (en) * | 2013-09-06 | 2015-03-12 | Sap Ag | Core data services extensibility for entity-relationship models |
CN109840256A (zh) * | 2019-03-05 | 2019-06-04 | 山东浪潮通软信息科技有限公司 | 一种基于业务实体的查询实现方法 |
CN110674229A (zh) * | 2019-09-24 | 2020-01-10 | 山东爱城市网信息技术有限公司 | 一种基于ast的关系型数据库sql表关系分析及展现方法 |
Non-Patent Citations (1)
Title |
---|
崔建军;隋立春;赵莹;辛麒;: "基于语义制导的空间数据操纵语言研究" * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8429601B2 (en) | Code completion for object relational mapping query language (OQL) queries | |
US8260824B2 (en) | Object-relational based data access for nested relational and hierarchical databases | |
US6581062B1 (en) | Method and apparatus for storing semi-structured data in a structured manner | |
US8412746B2 (en) | Method and system for federated querying of data sources | |
US7599948B2 (en) | Object relational mapping layer | |
US7096231B2 (en) | Export engine which builds relational database directly from object model | |
US7779050B2 (en) | Method, apparatus, and system for data modeling and processing | |
US6748374B1 (en) | Method for generating a relational database query statement using one or more templates corresponding to search conditions in an expression tree | |
US20150278300A1 (en) | Query translation for searching complex structures of objects | |
CN109840256A (zh) | 一种基于业务实体的查询实现方法 | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
US20050044065A1 (en) | Method and apparatus for enabling national language support of a database engine | |
US6421666B1 (en) | Mechanism for sharing ancillary data between a family of related functions | |
CN103678396B (zh) | 一种基于数据模型的数据备份方法和装置 | |
CN108536728A (zh) | 一种数据查询方法和装置 | |
US7409386B2 (en) | Method and apparatus for executing a query on dynamic properties of objects in a database | |
CN104731911A (zh) | 一种数据表与实体类的动态映射及转换方法 | |
CN100397397C (zh) | 基于关系数据库的xml数据存储与访问方法 | |
CN105468793A (zh) | 一种仿真模型数据的自动化管理方法 | |
US9116932B2 (en) | System and method of querying data | |
US20040243396A1 (en) | User-oriented electronic dictionary, electronic dictionary system and method for creating same | |
US8694559B2 (en) | Using database content for multiple business data systems connected to one database | |
CN110633162A (zh) | 远程调用实现方法、装置、计算机设备及存储介质 | |
CN111367941A (zh) | 一种基于业务实体be的查询语言扩展方法及其基本实现方法 | |
Nassiri et al. | Integrating xml and relational data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200703 |
|
RJ01 | Rejection of invention patent application after publication |