CN110008230A - 对象查询方法及装置、计算机可读存储介质 - Google Patents
对象查询方法及装置、计算机可读存储介质 Download PDFInfo
- Publication number
- CN110008230A CN110008230A CN201910072781.8A CN201910072781A CN110008230A CN 110008230 A CN110008230 A CN 110008230A CN 201910072781 A CN201910072781 A CN 201910072781A CN 110008230 A CN110008230 A CN 110008230A
- Authority
- CN
- China
- Prior art keywords
- model
- query
- business
- field
- data
- 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.)
- Granted
Links
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/24—Querying
- G06F16/245—Query processing
-
- 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/245—Query processing
- G06F16/2455—Query execution
-
- 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/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种对象查询方法及装置、计算机可读存储介质。其中,对象查询方法包括:基于物理模型,根据业务需求建立元数据模型;根据元数据模型建立查询模型;接收查询请求,根据查询请求对查询模型进行设置,生成相应的查询语句;根据查询语句从物理模型中查询到对应的数据结果。本发明提供的对象查询方法,基于元数据模型的定义,在物理模型上对数据进行软隔离,用户或应用层在查询数据时进行租户的隔离,每个数据请求只能查询到请求对应的租户数据;同时实现多种业务数据的查询,减少网络请求,实现数据的并发查询,提高查询效率。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种对象查询方法,一种对象查询系统,及一种计算机可读存储介质。
背景技术
随着前端和移动端的迅猛发展,REST(Representational State Transfer,表现层状态转移)也面临严峻挑战:
一个REST接口对应一种资源,一个页面要调用多次REST请求,网络请求的代价昂贵;
在前端我们很少遇到运行效率问题,效率问题主要来自网络请求——一次HTTP(Hyper Text Markup Language,超文本标记语言)请求的代价非常高昂,特别是对移动端来说。如果我们遵循REST的风格,我们就要将各种资源分门别类用不同的API(ApplicationProgramming Interface,应用程序编程接口)来表示。而在客户端中我们经常需要一次请求多种资源。这时候我们就要编写许多API来为不同的页面合并这些API。很多时候,我们写的这些API并不是一个特定资源,但我们还得用统一资源定位符URL来表示它们。
接口根据资源进行划分,接口数量庞大,开发代码难于管理;
虽然REST的目标是易于维护和扩展,但在Web前端/客户端领域,它的表现并没有想象得那么好。我们经常说最明显的代码异味Code smell就是重复。许多时候,我们要让API适应视图,但我们都知道,这种API仅被客户端消费,与服务端代码耦合是非常不合理的。随着前端/移动端的兴起,我们经常还要为多种客户端编写多种API。这些API代码既类似又无聊,并且也要在客户端修改时一起修改——仅前端和后端的重复我们可以让IDE(Intergrated Development Environment,集成开发环境)查找,然而这种散落在前后端的契约则很容易遗漏。
接口需要向前兼容,随着时间的推移,接口维护成本不断上升。
RESTful API通过URL表述资源,它本身是无类型的。现在,随着技术的发展,我们已经有许多非常强大的静态类型语言,它们有非常强大的开发工具来帮助我们检查错误。而在我们系统的API边界,这些重量级的强大工具却无能为力。随着微服务越来越流行,随着系统中的边界越来越多,静态类型能捕获的错误则越来越少。
应对这种情形,我们则要花费额外的努力来维护契约测试,还要小心翼翼地对应服务器之间的版本依赖,因为对REST来说,不同版本之间的兼容能力非常弱小。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明的一方面在于提出了一种对象查询方法。
本发明的另一方面在于提出了一种对象查询系统。
本发明的再一方面在于提出了计算机可读存储介质。
有鉴于此,本发明的第一方面,提出了一种对象查询方法,包括:基于物理模型,根据业务需求建立元数据模型;根据元数据模型建立查询模型;接收查询请求,根据查询请求对查询模型进行设置,生成相应的查询语句;根据查询语句从物理模型中查询到对应的数据结果。
本发明提供的对象查询方法,数据库的ER(Entity-Relationship,实体-联系方法)模型是相对稳定的,业务的变化是频繁的,通过业务的元数据模型来适应业务的变化,根据元数据模型构建面向业务对象的查询模型,通过为WEB前端和移动前端提供数据接口,接收查询请求,并根据查询请求对查询模型进行具体设置,从而生成相应的查询语句,从物理模型中查询出对应的数据结果。通过本发明的对象查询方法,基于元数据模型的定义,在物理模型上对数据进行软隔离,用户或应用层在查询数据时进行租户的隔离,每个数据请求只能查询到请求对应的租户数据;同时实现多种业务数据的查询,减少网络请求,实现数据的并发查询,提高查询效率。
根据本发明的上述对象查询方法,还可以具有以下技术特征:
在上述技术方案中,优选地,基于物理模型,根据业务需求建立元数据模型的步骤,具体包括:根据物理模型建立实体对象模型;根据实体对象模型定义业务对象模型;根据业务对象模型定义报表对象模型。
在该技术方案中,在物理模型的基础上,根据业务需求建立元数据模型。具体地,根据物理模型建立实体对象模型,业务对象模型基于实体对象模型,同时在实体对象模型上根据不同业务场景,增加不同业务约束和扩展,例如业务对象的一对一、一对多的关系,自定义的业务属性等;再根据业务对象模型定义报表对象模型,提出报表的元数据,用户可以基于报表元数据模型来自定义不同的报表方案,系统通过元数据来生成报表数据的查询和样式的呈现。本发明提供的对象查询方法,通过三层业务模型的定义,很好的解决用户自定义业务字段的查询问题,实现前端按需获取数据,减少网络数据的传输,大量减少接口的开发和维护工作。
在上述任一技术方案中,优选地,根据元数据模型建立查询模型的步骤,具体包括:对业务对象或报表对象生成命名相同的查询对象以及对应的查询对象类型;对业务对象或报表对象的每个字段生成字段对象以及对应的查询字段类型;每个查询对象和字段对象均包括零个或多个查询参数,其中查询参数包括以下任一项或其组合:查询条件、分页、排序方式;根据查询对象、查询对象类型、字段对象以及查询字段类型建立查询模型。
在该技术方案中,基于业务对象模型和/或报表对象模型生成查询模型,具体地:对每一个业务对象或报表对象生成同名的查询对象以及对应的查询对象类型;对业务对象或报表对象的每个字段生成字段对象(包括自定义字段)以及对应的字段对象类型;其中每个查询对象和字段对象均支持零个或多个查询参数,如查询条件、分页、排序方式等;基于查询对象、查询对象类型、字段对象及字段对象类型构通用的查询模型。本发明根据元数据模型生成查询模型的定义,在一个查询请求中,可以实现多种业务数据的查询,减少网络请求,实现数据的并发查询,提高查询效率。
需要说明的是,对象查询时,查询参数可以不指定,表示查询所有数据,如果指定,必须要符合查询参数的要求,如字段必须在业务对象中存在。
在上述任一技术方案中,优选地,实体对象模型包括:实体对象,实体对象的字段、约束以及关联关系;业务对象模型包括:业务对象、业务对象的自定义属性以及关联关系;报表对象模型包括:报表对象的行维度、列维度、指标、钻取关系以及统计规则。
在该技术方案中,实体对象模型描述存储的数据模型,包括实体对象EO(EntityObject)、实体对象的字段、约束以及实体对象间的关联关系,更直接的描述数据的存储关系。业务对象模型描述业务对象BO(Business Object)、业务对象的自定义属性以及不同业务对象间的关联关系,它将复杂的实体对象模型变得更直观、易用。报表对象模型为报表设计和报表数据查询定义的数据模型,描述报表对象ReportBO的维度(行维度、列维度)、指标、钻取关系、统计规则。
在上述任一技术方案中,优选地,查询模型为图形化查询模型。
SQL(Sructured Query Language)是结构化查询语言的简称。GraphQL是将数据进行图形化结构的查询语言,是一种描述客户端如何向服务端请求数据的API语法,类似于RESTful API规范。可以通过GraphQL把对外暴露的API也建模成一张图。
在该技术方案中,查询模型为图形化查询模型,具体地:基于GraphQL提供数据的查询服务,根据业务对象模型和报表对象模型生成GraphQL Schema定义,通过GraphQL对前端提供查询接口,Schema由服务端来定义,用于定义API接口,并依靠Schema来生成文档以及对客户端请求进行校验。Schema是由各种数据类型及其字段组成,而每个类型的每个字段都有相应的函数来返回数据,这是其灵活的关键所在。在一个GQL的请求中,可以实现数据的按需请求,需要多少数据查询多少数据,减少不必要的数据查询和传输,提高查询效率和缩减网络传输。
本发明的第二方面,提出了一种对象查询系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现:基于物理模型,根据业务需求建立元数据模型;根据元数据模型建立查询模型;接收查询请求,根据查询请求对查询模型进行设置,生成相应的查询语句;根据查询语句从物理模型中查询到对应的数据结果。
本发明提供的对象查询系统,数据库的ER模型是相对稳定的,业务的变化是频繁的,通过业务的元数据模型来适应业务的变化,根据元数据模型构建面向业务对象的查询模型,通过为WEB前端和移动前端提供数据接口,接收查询请求,并根据查询请求对查询模型进行具体设置,从而生成相应的查询语句,从物理模型中查询出对应的数据结果。通过本发明的对象查询方法,基于元数据模型的定义,在物理模型上对数据进行软隔离,用户或应用层在查询数据时进行租户的隔离,每个数据请求只能查询到请求对应的租户数据;同时实现多种业务数据的查询,减少网络请求,实现数据的并发查询,提高查询效率。
在上述技术方案中,优选地,处理器执行计算机程序时实现基于物理模型,根据业务需求建立元数据模型的步骤,具体包括:根据物理模型建立实体对象模型;根据实体对象模型定义业务对象模型;根据业务对象模型定义报表对象模型。
在该技术方案中,在物理模型的基础上,根据业务需求建立元数据模型。具体地,根据物理模型建立实体对象模型,业务对象模型基于实体对象模型,同时在实体对象模型上根据不同业务场景,增加不同业务约束和扩展,例如业务对象的一对一、一对多的关系,自定义的业务属性等;再根据业务对象模型定义报表对象模型,提出报表的元数据,用户可以基于报表元数据模型来自定义不同的报表方案,系统通过元数据来生成报表数据的查询和样式的呈现。本发明提供的对象查询方法,通过三层业务模型的定义,很好的解决用户自定义业务字段的查询问题,实现前端按需获取数据,减少网络数据的传输,大量减少接口的开发和维护工作。
在上述任一技术方案中,优选地,处理器执行计算机程序时实现根据元数据模型建立查询模型的步骤,具体包括:对业务对象或报表对象生成命名相同的查询对象以及对应的查询对象类型;对业务对象或报表对象的每个字段生成字段对象以及对应的查询字段类型;每个查询对象和字段对象均包括零个或多个查询参数,其中查询参数包括以下任一项或其组合:查询条件、分页、排序方式;根据查询对象、查询对象类型、字段对象以及查询字段类型建立查询模型。
在该技术方案中,基于业务对象模型和/或报表对象模型生成查询模型,具体地:对每一个业务对象或报表对象生成同名的查询对象以及对应的查询对象类型;对业务对象或报表对象的每个字段生成字段对象(包括自定义字段)以及对应的字段对象类型;其中每个查询对象和字段对象均支持零个或多个查询参数,如查询条件、分页、排序方式等;基于查询对象、查询对象类型、字段对象及字段对象类型构通用的查询模型。本发明根据元数据模型生成查询模型的定义,在一个查询请求中,可以实现多种业务数据的查询,减少网络请求,实现数据的并发查询,提高查询效率。
需要说明的是,对象查询时,查询参数可以不指定,表示查询所有数据,如果指定,必须要符合查询参数的要求,如字段必须在业务对象中存在。
在上述任一技术方案中,优选地,实体对象模型包括:实体对象,实体对象的字段、约束以及关联关系;业务对象模型包括:业务对象、业务对象的自定义属性以及关联关系;报表对象模型包括:报表对象的行维度、列维度、指标、钻取关系以及统计规则。
在该技术方案中,实体对象模型描述存储的数据模型,包括实体对象EO、实体对象的字段、约束以及实体对象间的关联关系,更直接的描述数据的存储关系。业务对象模型描述业务对象BO、业务对象的自定义属性以及不同业务对象间的关联关系,它将复杂的实体对象模型变得更直观、易用。报表对象模型为报表设计和报表数据查询定义的数据模型,描述报表对象ReportBO的维度(行维度、列维度)、指标、钻取关系、统计规则。
在上述任一技术方案中,优选地,查询模型为图形化查询模型。
SQL是结构化查询语言的简称。GraphQL是将数据进行图形化结构的查询语言,是一种描述客户端如何向服务端请求数据的API语法,类似于RESTful API规范。可以通过GraphQL把对外暴露的API也建模成一张图。
在该技术方案中,查询模型为图形化查询模型,具体地:基于GraphQL提供数据的查询服务,根据业务对象模型和报表对象模型生成GraphQL Schema定义,通过GraphQL对前端提供查询接口,Schema由服务端来定义,用于定义API接口,并依靠Schema来生成文档以及对客户端请求进行校验。Schema是由各种数据类型及其字段组成,而每个类型的每个字段都有相应的函数来返回数据,这是其灵活的关键所在。在一个GQL的请求中,可以实现数据的按需请求,需要多少数据查询多少数据,减少不必要的数据查询和传输,提高查询效率和缩减网络传输。
本发明的第三方面,提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现了如上述技术方案中任一项的对象查询方法的步骤。
根据本发明的计算机可读存储介质,其上存储的计算机程序被处理器执行时实现了如上述技术方案中任一项的对象查询方法的步骤,因而该计算机可读存储介质能够实现该方法的全部有益效果。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了根据本发明的一个实施例的对象查询方法的流程示意图;
图2示出了根据本发明的另一个实施例的对象查询方法的流程示意图;
图3示出了根据本发明的再一个实施例的对象查询方法的流程示意图;
图4示出了根据本发明的一个实施例的对象查询系统的示意框图;
图5示出了根据本发明的一个具体实施例的面向业务对象的三层对象模型的示意图;
图6示出了根据本发明的一个具体实施例的图形化查询接口的架构示意图;
图7示出了根据本发明的一个具体实施例的面向业务对象的三层对象模型的关联示意图;
图8示出了根据本发明的一个具体实施例的查询模型接口示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
如图1所示,根据本发明的一个实施例的对象查询方法的流程示意图。其中,该对象查询方法,包括:
步骤102,基于物理模型,根据业务需求建立元数据模型;
步骤104,根据元数据模型建立查询模型;
步骤106,接收查询请求,根据查询请求对查询模型进行设置,生成相应的查询语句;
步骤108,根据查询语句从物理模型中查询到对应的数据结果。
本发明提供的对象查询方法,数据库的ER模型是相对稳定的,业务的变化是频繁的,通过业务的元数据模型来适应业务的变化,根据元数据模型构建面向业务对象的查询模型,通过为WEB前端和移动前端提供数据接口,接收查询请求,并根据查询请求对查询模型进行具体设置,从而生成相应的查询语句,从物理模型中查询出对应的数据结果。通过本发明的对象查询方法,基于元数据模型的定义,在物理模型上对数据进行软隔离,用户或应用层在查询数据时进行租户的隔离,每个数据请求只能查询到请求对应的租户数据;同时实现多种业务数据的查询,减少网络请求,实现数据的并发查询,提高查询效率。
如图2所示,根据本发明的另一个实施例的对象查询方法的流程示意图。其中,该对象查询方法,包括:
步骤202,根据物理模型建立实体对象模型;根据实体对象模型定义业务对象模型;根据业务对象模型定义报表对象模型;
步骤204,根据业务对象模型和报表对象模型建立查询模型;
步骤206,接收查询请求,根据查询请求对查询模型进行设置,生成相应的查询语句;
步骤208,根据查询语句从物理模型中查询到对应的数据结果。
在该实施例中,在物理模型的基础上,根据业务需求建立元数据模型。具体地,根据物理模型建立实体对象模型,业务对象模型基于实体对象模型,同时在实体对象模型上根据不同业务场景,增加不同业务约束和扩展,例如业务对象的一对一、一对多的关系,自定义的业务属性等;再根据业务对象模型定义报表对象模型,提出报表的元数据,用户可以基于报表元数据模型来自定义不同的报表方案,系统通过元数据来生成报表数据的查询和样式的呈现。本发明提供的对象查询方法,通过三层业务模型的定义,很好的解决用户自定义业务字段的查询问题,实现前端按需获取数据,减少网络数据的传输,大量减少接口的开发和维护工作。
如图3所示,根据本发明的再一个实施例的对象查询方法的流程示意图。其中,该对象查询方法,包括:
步骤302,根据物理模型建立实体对象模型;根据实体对象模型定义业务对象模型;根据业务对象模型定义报表对象模型;
步骤304,对业务对象或报表对象生成命名相同的查询对象以及对应的查询对象类型;对业务对象或报表对象的每个字段生成字段对象以及对应的查询字段类型;根据查询对象、查询对象类型、字段对象以及查询字段类型建立查询模型;
其中,每个查询对象和字段对象均包括零个或多个查询参数,其中查询参数包括以下任一项或其组合:查询条件、分页、排序方式;
步骤306,接收查询请求,根据查询请求对查询模型进行设置,生成相应的查询语句;
步骤308,根据查询语句从物理模型中查询到对应的数据结果。
在该实施例中,基于业务对象模型和/或报表对象模型生成查询模型,具体地:对每一个业务对象或报表对象生成同名的查询对象以及对应的查询对象类型;对业务对象或报表对象的每个字段生成字段对象(包括自定义字段)以及对应的字段对象类型;其中每个查询对象和字段对象均支持零个或多个查询参数,如查询条件、分页、排序方式等;基于查询对象、查询对象类型、字段对象及字段对象类型构通用的查询模型。本发明根据元数据模型生成查询模型的定义,在一个查询请求中,可以实现多种业务数据的查询,减少网络请求,实现数据的并发查询,提高查询效率。
在本发明的一个具体实施例中,如图5所示,实体对象模型:模型与数据存储相关,描述存储的数据模型,包括实体对象、实体对象的字段、约束以及对象的关联关系,更直接的描述数据的存储关系;业务对象模型:为了满足一些业务需求往往设计的比较抽象,它将复杂的实体对象模型变得更直观、易用;报表对象模型:为报表设计和报表数据查询定义的数据模型,描述报表的维度(行维度、列维度)、指标、钻取关系、统计规则。
在本发明的另一个具体实施例中,如图6所示,物理模型(即表)、实体对象、业务对象以及报表对象之间,根据不同的业务场景满足一定的关联关系,如一对一、一对多的关系。
在本发明的再一个具体实施例中,优选地,查询模型为基于GraphQL的图形化查询模型。
GraphQL是将数据进行图形化结构的查询语言,是一种描述客户端如何向服务端请求数据的API语法,类似于RESTful API规范。可以通过GraphQL把对外暴露的API也建模成一张图。
在该实施例中,基于GraphQL提供数据的查询服务,根据业务对象模型和报表对象模型生成GraphQL Schema定义,通过GraphQL对前端提供查询接口,如图7所示,通过该查询接口可以进行一次查询,也可以进行多次查询;Schema是GraphQL中非常重要的一个概念,由服务端来定义,用于定义API接口,并依靠Schema来生成文档以及对客户端请求进行校验,如图8所示。Schema是由各种数据类型及其字段组成,而每个类型的每个字段都有相应的函数来返回数据,这是其灵活的关键所在。在一个GQL的请求中,可以实现数据的按需请求,需要多少数据查询多少数据,减少不必要的数据查询和传输,提高查询效率和缩减网络传输。
在本发明的又一个具体实施例中,对每一个业务对象生成一个同名的查询对象类型(QueryType),同时支持查询参数为:
criteriaStr:查询条件(支持参数化查询条件,即支持提供bindVars的数据);
firstResult,maxResult:分页查询使用;
sortBy:排序方式;
bindVars:出现在criteriaStr条件(包括子表条件)中的参数列表,为一个数据,数据中每个元数为一个参数对象{name:“参数名”,value:参数值},其中参数值可以String,Long,Float,Boolean或者它们的数组或者构成的对象。
对业务对象的每个字段生成字段对象(包括自定义字段),生成对应的查询字段类型,其中对于外键属性Long(FOREIGN_KEY)本身为一个对象类型,该对象类型只包含参照对象的所有属性,可以一直递归下去。
为对于每一个查询对象,如果被别的业务对象引用时:
如果引用该业务对象的其它BO,设置了一个list类型的字段,则会建立一个子BO查询字段,如Customer对象的会增加一个子BO查询对象:shipingOrders(通过Order的shippingCustomer外键关联Customer对象时,指定customer上的聚合字段名为shippingOrders),该对象类型为Order对象类型列表。对于两个字段引用同一个BO,根据聚合字段名区分,如Order还有一个paymentCustomer引用Customer,这里可以指定聚合字段名为paymentOrders。
为每一个引用该业务对象的其它BO建立了一个查询count字段,如Customer对象的会在增加一个查询字段:shipingOrders__shippingCustomer__count,该对象类型为Integer;字段命名命名规范为<聚合字段名>__count。
对于子BO列表查询和count字段查询,同样都支持查询参数(参考每一条),如查询一个符合条件的客户的所有符合订单条件的订单记录:{Customer(criteriaStr:“客户条件”){id,name,shippingOrders(criteriaStr:“订单条件”){id,…}}}。
为应用的枚举对象定义生成一个枚举查询对象:appEnums,它为应用中所有的枚举对象定义列表,其中枚举对象的类型为EnumType,支持在枚举对象名称查询列表。
数据查询说明:对象查询时,查询参数可以不指定,表示查询所有数据,如果指定,必须要符合查询参数的要求(如字段必须在BO中存在);对于list子BO列表字段的联查,由于采取的是批量模式,因此有可能子BO的记录总和过大引起问题,因此尽量设置maxResult。
如图4所示,根据本发明的一个实施例的对象查询系统的示意框图。其中,该对象查询系统400,包括:
存储器402、处理器404及存储在存储器402上并可在处理器404上运行的计算机程序,处理器404执行计算机程序时实现:
基于物理模型,根据业务需求建立元数据模型;根据元数据模型建立查询模型;接收查询请求,根据查询请求对查询模型进行设置,生成相应的查询语句;根据查询语句从物理模型中查询到对应的数据结果。
本发明提供的对象查询系统400,数据库的ER模型是相对稳定的,业务的变化是频繁的,通过业务的元数据模型来适应业务的变化,根据元数据模型构建面向业务对象的查询模型,通过为WEB前端和移动前端提供数据接口,接收查询请求,并根据查询请求对查询模型进行具体设置,从而生成相应的查询语句,从物理模型中查询出对应的数据结果。通过本发明的对象查询系统400,基于元数据模型的定义,在物理模型上对数据进行软隔离,用户或应用层在查询数据时进行租户的隔离,每个数据请求只能查询到请求对应的租户数据;同时实现多种业务数据的查询,减少网络请求,实现数据的并发查询,提高查询效率。
在本发明的一个实施例中,优选地,处理器404执行计算机程序时实现基于物理模型,根据业务需求建立元数据模型的步骤,具体包括:根据物理模型建立实体对象模型;根据实体对象模型定义业务对象模型;根据业务对象模型定义报表对象模型。
在该实施例中,在物理模型的基础上,根据业务需求建立元数据模型。具体地,根据物理模型建立实体对象模型,业务对象模型基于实体对象模型,同时在实体对象模型上根据不同业务场景,增加不同业务约束和扩展,例如业务对象的一对一、一对多的关系,自定义的业务属性等;再根据业务对象模型定义报表对象模型,提出报表的元数据,用户可以基于报表元数据模型来自定义不同的报表方案,系统通过元数据来生成报表数据的查询和样式的呈现。本发明提供的对象查询系统400,通过三层业务模型的定义,很好的解决用户自定义业务字段的查询问题,实现前端按需获取数据,减少网络数据的传输,大量减少接口的开发和维护工作。
在本发明的一个实施例中,优选地,处理器404执行计算机程序时实现根据元数据模型建立查询模型的步骤,具体包括:对业务对象或报表对象生成命名相同的查询对象以及对应的查询对象类型;对业务对象或报表对象的每个字段生成字段对象以及对应的查询字段类型;每个查询对象和字段对象均包括零个或多个查询参数,其中查询参数包括以下任一项或其组合:查询条件、分页、排序方式;根据查询对象、查询对象类型、字段对象以及查询字段类型建立查询模型。
在该实施例中,基于业务对象模型和/或报表对象模型生成查询模型,具体地:对每一个业务对象或报表对象生成同名的查询对象以及对应的查询对象类型;对业务对象或报表对象的每个字段生成字段对象(包括自定义字段)以及对应的字段对象类型;其中每个查询对象和字段对象均支持零个或多个查询参数,如查询条件、分页、排序方式等;基于查询对象、查询对象类型、字段对象及字段对象类型构通用的查询模型。本发明根据元数据模型生成查询模型的定义,在一个查询请求中,可以实现多种业务数据的查询,减少网络请求,实现数据的并发查询,提高查询效率。
需要说明的是,对象查询时,查询参数可以不指定,表示查询所有数据,如果指定,必须要符合查询参数的要求,如字段必须在业务对象中存在。
在本发明的一个实施例中,优选地,实体对象模型包括:实体对象,实体对象的字段、约束以及关联关系;业务对象模型包括:业务对象、业务对象的自定义属性以及关联关系;报表对象模型包括:报表对象的行维度、列维度、指标、钻取关系以及统计规则。
在该实施例中,实体对象模型描述存储的数据模型,包括实体对象EO(EntityObject)、实体对象的字段、约束以及实体对象间的关联关系,更直接的描述数据的存储关系。业务对象模型描述业务对象BO(Business Object)、业务对象的自定义属性以及不同业务对象间的关联关系,它将复杂的实体对象模型变得更直观、易用。报表对象模型为报表设计和报表数据查询定义的数据模型,描述报表对象ReportBO的维度(行维度、列维度)、指标、钻取关系、统计规则。
在本发明的一个实施例中,优选地,查询模型为图形化查询模型。
SQL(ructured Query Language)是结构化查询语言的简称。GraphQL是将数据进行图形化结构的查询语言,是一种描述客户端如何向服务端请求数据的API语法,类似于RESTful API规范。可以通过GraphQL把对外暴露的API也建模成一张图。
在该实施例中,查询模型为图形化查询模型,具体地:基于GraphQL提供数据的查询服务,根据业务对象模型和报表对象模型生成GraphQL Schema定义,通过GraphQL对前端提供查询接口,Schema由服务端来定义,用于定义API接口,并依靠Schema来生成文档以及对客户端请求进行校验。Schema是由各种数据类型及其字段组成,而每个类型的每个字段都有相应的函数来返回数据,这是其灵活的关键所在。在一个GQL的请求中,可以实现数据的按需请求,需要多少数据查询多少数据,减少不必要的数据查询和传输,提高查询效率和缩减网络传输。
本发明的第三方面实施例,提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现了如上述实施例中任一项的对象查询方法的步骤。
根据本发明的计算机可读存储介质,其上存储的计算机程序被处理器执行时实现了如上述实施例中任一项的对象查询方法的步骤,因而该计算机可读存储介质能够实现该方法的全部有益效果。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种对象查询方法,其特征在于,包括:
基于物理模型,根据业务需求建立元数据模型;
根据所述元数据模型建立查询模型;
接收查询请求,根据所述查询请求对所述查询模型进行设置,生成相应的查询语句;
根据所述查询语句从所述物理模型中查询到对应的数据结果。
2.根据权利要求1所述的对象查询方法,其特征在于,所述基于物理模型,根据业务需求建立元数据模型的步骤,具体包括:
根据物理模型建立实体对象模型;
根据所述实体对象模型定义业务对象模型;
根据所述业务对象模型定义报表对象模型。
3.根据权利要求2所述的对象查询方法,其特征在于,所述根据所述元数据模型建立查询模型的步骤,具体包括:
对业务对象或报表对象生成命名相同的查询对象以及对应的查询对象类型;
对所述业务对象或所述报表对象的每个字段生成字段对象以及对应的查询字段类型;
每个所述查询对象和所述字段对象均包括零个或多个查询参数,其中所述查询参数包括以下任一项或其组合:查询条件、分页、排序方式;
根据所述查询对象、所述查询对象类型、所述字段对象以及所述查询字段类型建立所述查询模型。
4.根据权利要求3所述的对象查询方法,其特征在于,
所述实体对象模型包括:实体对象,所述实体对象的字段、约束以及关联关系;
所述业务对象模型包括:所述业务对象、所述业务对象的自定义属性以及关联关系;
所述报表对象模型包括:所述报表对象的行维度、列维度、指标、钻取关系以及统计规则。
5.根据权利要求1至4中任一项所述的对象查询方法,其特征在于,
所述查询模型为图形化查询模型。
6.一种对象查询系统,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现:
基于物理模型,根据业务需求建立元数据模型;
根据所述元数据模型建立查询模型;
接收查询请求,根据所述查询请求对所述查询模型进行设置,生成相应的查询语句;
根据所述查询语句从所述物理模型中查询到对应的数据结果。
7.根据权利要求6所述的对象查询系统,其特征在于,所述处理器执行所述计算机程序时实现所述基于物理模型,根据业务需求建立元数据模型的步骤,具体包括:
根据物理模型建立实体对象模型;
根据所述实体对象模型定义业务对象模型;
根据所述业务对象模型定义报表对象模型。
8.根据权利要求7所述的对象查询系统,其特征在于,所述处理器执行所述计算机程序时实现所述根据所述元数据模型建立查询模型的步骤,具体包括:
对业务对象或报表对象生成命名相同的查询对象以及对应的查询对象类型;
对所述业务对象或所述报表对象的每个字段生成字段对象以及对应的查询字段类型;
每个所述查询对象和所述字段对象均包括零个或多个查询参数,其中所述查询参数包括以下任一项或其组合:查询条件、分页、排序方式;
根据所述查询对象、所述查询对象类型、所述字段对象以及所述查询字段类型建立所述查询模型。
9.根据权利要求8所述的对象查询系统,其特征在于,
所述实体对象模型包括:实体对象,所述实体对象的字段、约束以及关联关系;
所述业务对象模型包括:所述业务对象、所述业务对象的自定义属性以及关联关系;
所述报表对象模型包括:所述报表对象的行维度、列维度、指标、钻取关系以及统计规则。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现了如权利要求1至5中任一项所述的对象查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910072781.8A CN110008230B (zh) | 2019-01-25 | 2019-01-25 | 对象查询方法及装置、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910072781.8A CN110008230B (zh) | 2019-01-25 | 2019-01-25 | 对象查询方法及装置、计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110008230A true CN110008230A (zh) | 2019-07-12 |
CN110008230B CN110008230B (zh) | 2021-04-27 |
Family
ID=67165559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910072781.8A Active CN110008230B (zh) | 2019-01-25 | 2019-01-25 | 对象查询方法及装置、计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110008230B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781208A (zh) * | 2019-09-27 | 2020-02-11 | 支付宝(杭州)信息技术有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN112256252A (zh) * | 2019-07-22 | 2021-01-22 | 腾讯科技(深圳)有限公司 | 接口生成方法、装置、存储介质及电子设备 |
CN112256772A (zh) * | 2019-07-22 | 2021-01-22 | 腾讯科技(深圳)有限公司 | 数据服务方法、装置以及可读存储介质 |
CN112597186A (zh) * | 2020-12-29 | 2021-04-02 | 广州慧智信息科技有限公司 | 一种数据查询方法、计算机设备以及存储介质 |
CN112783958A (zh) * | 2019-11-08 | 2021-05-11 | 千寻位置网络有限公司 | 基于GraphQL的数据处理方法及装置、服务终端及存储介质 |
CN114625720A (zh) * | 2022-03-24 | 2022-06-14 | 深圳市酷开网络科技股份有限公司 | 基于百亿数据olap查询平台元数据模型及其实现方法 |
CN115309752A (zh) * | 2022-09-30 | 2022-11-08 | 畅捷通信息技术股份有限公司 | 一种多租户动态表单的生成方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582079A (zh) * | 2009-06-23 | 2009-11-18 | 用友软件股份有限公司 | 一种对象查询方法和装置 |
US20180225310A1 (en) * | 2014-03-31 | 2018-08-09 | Oracle International Corporation | Dynamic generation of database views and class objects for providing access to repository data |
CN108733713A (zh) * | 2017-04-21 | 2018-11-02 | 阿里巴巴集团控股有限公司 | 数据仓库中的数据查询方法及装置 |
-
2019
- 2019-01-25 CN CN201910072781.8A patent/CN110008230B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582079A (zh) * | 2009-06-23 | 2009-11-18 | 用友软件股份有限公司 | 一种对象查询方法和装置 |
US20180225310A1 (en) * | 2014-03-31 | 2018-08-09 | Oracle International Corporation | Dynamic generation of database views and class objects for providing access to repository data |
CN108733713A (zh) * | 2017-04-21 | 2018-11-02 | 阿里巴巴集团控股有限公司 | 数据仓库中的数据查询方法及装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256252A (zh) * | 2019-07-22 | 2021-01-22 | 腾讯科技(深圳)有限公司 | 接口生成方法、装置、存储介质及电子设备 |
CN112256772A (zh) * | 2019-07-22 | 2021-01-22 | 腾讯科技(深圳)有限公司 | 数据服务方法、装置以及可读存储介质 |
CN112256252B (zh) * | 2019-07-22 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 接口生成方法、装置、存储介质及电子设备 |
CN110781208A (zh) * | 2019-09-27 | 2020-02-11 | 支付宝(杭州)信息技术有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN110781208B (zh) * | 2019-09-27 | 2022-02-11 | 支付宝(杭州)信息技术有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN112783958A (zh) * | 2019-11-08 | 2021-05-11 | 千寻位置网络有限公司 | 基于GraphQL的数据处理方法及装置、服务终端及存储介质 |
CN112597186A (zh) * | 2020-12-29 | 2021-04-02 | 广州慧智信息科技有限公司 | 一种数据查询方法、计算机设备以及存储介质 |
CN114625720A (zh) * | 2022-03-24 | 2022-06-14 | 深圳市酷开网络科技股份有限公司 | 基于百亿数据olap查询平台元数据模型及其实现方法 |
CN115309752A (zh) * | 2022-09-30 | 2022-11-08 | 畅捷通信息技术股份有限公司 | 一种多租户动态表单的生成方法、装置及存储介质 |
CN115309752B (zh) * | 2022-09-30 | 2023-01-13 | 畅捷通信息技术股份有限公司 | 一种多租户动态表单的生成方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110008230B (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110008230A (zh) | 对象查询方法及装置、计算机可读存储介质 | |
Dowler et al. | Table access protocol version 1.0 | |
US9311402B2 (en) | System and method for invoking functionalities using contextual relations | |
US7836460B2 (en) | Service broker realizing structuring of portlet services | |
US7472346B2 (en) | Multidimensional XBRL engine | |
US7895226B2 (en) | System and method for translating and executing update requests | |
US8745096B1 (en) | Techniques for aggregating data from multiple sources | |
KR20170118116A (ko) | 네트워크 상에서 데이터 소스의 질의 | |
US20170011128A1 (en) | Dynamic domain query and query translation | |
US20060230075A1 (en) | Method and apparatus for exchanging data with a database | |
CN103246719B (zh) | 一种基于Web的网络信息资源整合方法 | |
US11720543B2 (en) | Enforcing path consistency in graph database path query evaluation | |
US10313421B2 (en) | Providing Odata service based on service operation execution flow | |
US20180357278A1 (en) | Processing aggregate queries in a graph database | |
CN107665237A (zh) | 数据结构分类装置、非结构化数据的发布订阅系统及方法 | |
Ben-Gan et al. | Inside Microsoft SQL Server 2008 T-SQL Programming | |
WO2000065486A2 (en) | A method of mapping semantic context to enable interoperability among disparate sources | |
CN101375242A (zh) | 输入/查询方法与装置 | |
US11620282B2 (en) | Automated information retrieval system and semantic parsing | |
US20220156245A1 (en) | System and method for managing custom fields | |
CN117609468A (zh) | 生成检索语句的方法及装置 | |
US10417230B2 (en) | Transforming and evaluating missing values in graph databases | |
US11580125B2 (en) | Information system with temporal data | |
CN105518670B (zh) | 用于模型查询的数据模型索引 | |
Halpin et al. | Recent enhancements to ORM |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |