CN103870532B - 高级业务查询语言 - Google Patents
高级业务查询语言 Download PDFInfo
- Publication number
- CN103870532B CN103870532B CN201310674461.2A CN201310674461A CN103870532B CN 103870532 B CN103870532 B CN 103870532B CN 201310674461 A CN201310674461 A CN 201310674461A CN 103870532 B CN103870532 B CN 103870532B
- Authority
- CN
- China
- Prior art keywords
- inquiry
- query
- language
- layer
- framework
- 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.)
- Active
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/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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
-
- 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
- G06F16/258—Data format conversion from or to a database
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
可以在业务应用编程语言中嵌入一种新的查询语言(例如,ABAP语言)。与本主题的实施方式一致的查询语言可以基于连接的业务对象(BO)的图形数据模型或其它数据对象并且可以设计为嵌入业务应用编程语言运行时中的高效查询语言,由此允许以声明的方式表达业务逻辑。
Description
技术领域
这里描述的主题涉及用于对数据库执行查询的方法。
背景技术
以业务软件编程语言实现的且基于复杂结构化数据模型(例如,业务对象模型)中保存的数据的业务逻辑的容易使用和有效运行可能是诸如像企业资源计划(ERP)系统这样的业务软件架构的最佳性能、可维护性和可用性的关键所在。
由业务软件架构支持的应用中的业务逻辑在许多示例中可以在诸如像业务对象服务供应商之类的数据结构服务供应商内实现。中央框架可以基于业务软件编程语言(诸如像高级业务应用编程或者ABAP语言),并且可以通过调用诸如像业务对象API之类的通用数据结构应用编程接口(API)来访问具有一个或多个相似特征的业务对象或者其它数据结构。读数据也可能是实现任意业务对象或者可比较得数据结构的重要部分。
发明内容
当前主题的实施方式提供一种可与业务软件架构关联使用的改进的查询语言。在一个方面,一种方法包括:在查询语言架构的语言层确定接收到的查询的查询语法和该查询的结果集的定义。在所述查询语言架构的编译器层检查所接收的查询的语义,并且从将要返回查询结果的数据库的持久层中的数据字典读取与结果集相对应的字段表达式。所述字段表达式由编译器层构建到查询语句中。包括所述查询语句的查询在查询语言架构的运行时层运行,并且基于查询在数据库上的运行根据结果集来返回查询的结果。
在可选的变化中,在本主题的范围内,一个或多个附加的特征可以以任何可行的组合被包括。例如,所述查询语言架构可以可选地以业务软件编程语言来实施,作为业务软件架构的一部分。所述业务软件编程语言可以可选地包括高级业务应用编程(ABAP)语言。所述查询语法可以可选地包括使用逻辑关联来表示实体之间的连接。查询语言架构的编译器层可以可选地支持在多层业务软件架构的多个应用层上可用的单个数据模型。所述方法还可以可选地包括将响应于所述查询的数据检索中使用的逻辑推送到返回查询结果的数据库层。
本主题的实施方式可以包括但不限于与这里提供的描述一致的方法以及物品,所述物品包含可操作以使一个或多个机器(例如,计算机等等)产生实施一个或多个所描述的特征的操作的有形地具体化的机器可读介质。类似地,还描述了可以包括一个或多个处理器和耦接到一个或多个处理器的一个或多个存储器的计算机系统。可以包括计算机可读存储介质的存储器可以包括使一个或多个处理器执行这里描述的一个或多个操作的一个或多个程序,对使一个或多个处理器执行这里描述的一个或多个操作的一个或多个程序进行编码、存储或类似的操作。与本主题的一个或多个实施方式一致的计算机实施的方法可以驻留在单个计算系统或多个计算系统中的一个或多个数据处理器实施。这样的多个计算系统可以连接并且可以交换数据和/或命令或其他的指令等等,这要经由一个或多个连接(包括而不限于通过网络(例如,因特网、无线广域网、局域网、广域网、有线网络,或类似网络)的连接)、经由一个或多个所述多个计算系统之间的直接连接、等等。
本主题的一个或多个变化的细节在附图和下面的描述中阐述。从所述描述和附图中,以及从权利要求中,这里描述的本主题的其它特征和优势将变得清楚。虽然出于说明的目的关于企业资源软件系统或其它业务软件解决方案或架构来描述当前公开的主题的某些特征,但是应该容易理解这样的特征并非旨在限制。所附权利要求旨在定义所保护的主题的范围。
附图说明
并入说明书并且构成说明书一部分的附图示出这里公开的主题的特定方面,并且连同描述一起,帮助说明与所公开的实施方式关联的部分原理。在附图中,
图1是示出显示与本主题的实施方式一致的特征的软件架构的方面的图;
图2示出与本主题的实施方式一致的示范性代码段;
图3示出与本主题的实施方式一致的另一示范性代码段;
图4示出与本主题的实施方式一致的另一示范性代码段;
图5是示出具有与本主题的实施方式一致的特征的方法的方面的处理流程图;
图6A至图12示出图示与本主题的实施方式一致的基本查询结构的示范性代码段;
图13示出业务对象模型的示例;
图14A至图19示出图示与本主题的实施方式一致的访问关联业务对象的示范性代码段;
图20A和图20B示出图示与本主题的实施方式一致的聚合的示范性代码段;以及
图21A至图22示出图示与本主题的实施方式一致的排序和分页的示范性代码段。
在实践中,相似的参考标记表示相似结构、特征或者元素。
具体实施方式
本主题的实施方式可以提供能够用于基于诸如像高级业务应用编程语言(ABAP)的业务软件编程语言在关系数据库系统中执行的与数据库相关的数据检索任务的易于使用的、强大的查询接口,因为查询接口独立于底层(underlying)存储模型,所以本主题的实施方式也能够用于能够通过SQL查询的任意数据库。与本主题的实施方式一致,性能可以通过最小化在查询运行和数据检索中所涉及的应用层的数目以及通过向下推送更多逻辑到关系数据库来提高。这里参考具有下面讨论的一个或多个特征的查询接口作为高级业务查询语言(ABQL)。
与本主题的实施方式一致的ABQL能够嵌入到业务软件编程语言中,业务软件编程语言诸如像ABAP语言。因此,可以通过能够支持在例如在多层业务软件架构中或者其它复杂软件架构中的全部应用层或者至少多个应用层上可用的“一个数据模型”方法的业务软件编程语言编译器检查在这样的ABQL中执行的查询的语法。开发者可以利用类似于通过当前可用方法提供的语言集成查询接口,比如基于OpenSQL等等之类的语言集成查询接口。在部分示例中,可以使用ABQL而非OpenSQL。必要时或者在期望时,也可以使用两种查询语言。
ABQL可以被声明,而且“像SQL”,并且可以使得能够使用路径表达式以定位数据元素间的关联。另外,可以直接在关系数据库上运行查询。结合高性能、内部存储数据库,本方法可以提供显著性能提升。可以使用与本主题的实施方式一致的ABQL支持诸如结构化查询结果、聚合、排序以及分页之类的高级特征。
可以经由与本主题的实施方式一致的ABQL中的一个或多个相应接口支持ABQL代码的静态和动态调用。ABQL代码的静态调用对于手写业务软件编程语言代码来说是重要的。ABQL代码的静态调用的结果可能相对容易使用,并且可能在编译时容易检查和准备。ABQL代码的动态调用对于在运行时生成查询的框架可能是有用的。
可以基于元数据建立许多现代业务软件系统,包括但不限于企业资源计划软件系统、关系数据库系统等等之类,元数据一般定义为描述或者以其它方式提供关于其它数据的信息的数据。一种元数据可以包括关于给定数据元素对其具有依赖性的数据结构的数据元素的信息。如这里使用的,术语数据元素可以指代任意数据格式,包括而不限于数据对象或者业务对象、数据或者业务对象的节点或者根节点等等。如这里使用的,术语“依赖性”可以指代数据元素之间的任意单向关系,其中依赖数据元素从被依赖的数据元素访问数据、元数据、数据格式或者结构等等之类。
一般说来,来自对业务对象或者其它类型的数据对象或者数据元素的更高层的聚合的查询的结果集,可以在它们在层级、依赖性或者聚合的数据元素之间的其它关联上建立的意义上是“深层次”的。为了支持那些结果集的有效处理,应当引入新的ABAP实体,称作“网格(mesh)”。可以通过ABQL语句创建网格并且还可以在ABAP运行时环境下对其处理。
派生字段可选地可以是增强业务对象和其它数据结构。换句话说,通过使用表达式派生字段可以基于其它字段。可以通过评估字段表达式计算字段值的实际值。可以以如传统持久字段相同的方式,在与本主题的实施方式一致的ABQL中访问所计算的字段。查询语言运行时环境可以在返回结果之前处理评估字段的表达式。计算的字段的示例是基于提供的出生日期计算人的年龄。这些信息一般不存留在数据库中,因为其依赖于当前日期。作为进一步的特征,可重新使用的函数可以在ABQL和计算的字段表达式内使用。这些函数可以定义为它们自己的实体,并且可以在计算的字段表达式或者ABQL语句内引用它们。
关系数据库中的查询运行也可以包括权限检查。在传统方法中,通常可以用业务软件编程语言(例如,ABAP语言)检查许可控制,比如在已经从数据库检索到数据之后。本方法可以包括性能损失,因为通过应用一个或多个权限检查规则以排除查询发起者对其缺乏适当的访问许可或者访问权限的结果来降低在响应于查询请求提供的结果集的大小之前,全部查询结果首先从关系数据库取得。
与本主题的实施方式一致的ABQL也可以考虑当前以业务编程语言(例如以ABAP语言)维护的交易数据。机制可以提供在ABQL内以便也将交易数据的状态包括在查询结果中。交易数据可以包括属于日常业务操作或者与日常业务操作相关的数据。程序员可以通过ABQL语句定义一个或多个视图。这些视图可以在其它ABQL语句中用作数据源或者用于建立新的视图。
与本主题的实施方式一致的ABQL可以支持用于数据检索的高级特征,诸如像基本搜索或者模糊搜索之类,基本搜索或者模糊搜索诸如当前在TREX(XML的正则树表达式)、分页等等中可用的那些。
与本主题的实施方式一致的ABQL通过提供一个或多个特征可以总体上提高应用性能,一个或多个特征诸如将在数据检索中使用的逻辑(例如,排序、表达、权限检查)向下推送至数据库层;绕过现有的框架;有效地实现(例如,在业务软件编程语言的内核中本地实现,可选地,业务软件编程语言可以是ABAP语言);最小化到数据库的往返路程(例如,通过使用多次取得);利用有效的数据传输格式(例如,多个结果集)等等。
为了提高的性能,如图1中所示,ABQL的编译器层104和运行时层106可以原本在业务软件编程语言(例如ABAP语言)核中实施。不同的层可以被包含于业务软件编程语言(例如ABAP)内核中的语句运行中。例如,如示出图1的示范性ABQL架构100的图中所示,可以包括语言层102、编译器层104、运行时层106和持久层110。有利地,持久层110可以是在其上运行查询的底层数据库112(例如,关系数据库)的一部分。语言层102、编译器层104和运行时层106中的一个或多个可以在计算系统或者可以包括一个或多个可编程处理器的系统中实现。如图1中所示,这样的一个系统或者多个系统被称为应用服务器114。数据库接口116可以提供递送到数据库112或者从数据库递送来的命令、查询、数据读和写、数据改变和删除等等的必要的改编或者变换。
语言层102可以是针对应用程序员的用户接口并且可以具有业务软件编程语言的语法作为主要部分。可以以在以语义模型语言120(例如,语义应用设计语言或者“SADL”)编写的查询的形式在语言层102中接收查询,如即席(ad-hoc)查询122、手写代码124等等。语言层102可以设置查询语法本身(例如,“选择什么?”)并且也建立结果集定义(例如,“数据如何转换为业务软件编程语言?”)。结果集定义可以利用查询语句的INTO子句表示。图2的代码段200中示出的示例显示使用路径表达式运行简单选择操作的ABQL语句。该示例示出与本主题的实施方式一致的ABQL与SQL之间的部分相似性。像在OpenSQL中那样,ABQL中的选择可以以关键字SELECT开始。
在起始的关键字之后,INTO子句跟随其后,其规定持有结果集的业务软件编程语言变量(例如,ABAP变量)的名称。对于平面结果集来说,来自Open-SQL的INTO子句,包括但不限于INTO<internal table>、INTO(<field1>,<field2>,…,<fieldN>)、INTO<workarea>等等,保持有效。FROM子句通常跟在INTO子句之后。业务对象节点(或者其它数据结构元素)可以规定为FROM子句中的源。如在Open SQL中一样,INTO子句与FROM子句可以置换。
node(节点)子句的顺序可以跟在INTO子句和FROM子句之后。这样的node子句可以替换Open SQL选择子句。像这样的SELECT子句,node子句描述结果的结构。在图2的示例中,仅示出一个node子句。对于结果中的每个节点,规定将一个业务对象节点(或者数据结构的其它相似数据元素,诸如数据对象等等之类)设置为数据源。在图2的示例中,业务对象SALES_ORDER中的节点ROOT用作数据源。每个节点的内容可以由标量值的以逗号分隔的列表来规定。
在使用图2的示例查询的业务对象中,根节点ROOT由BUYER_PARTY的关联连接至业务对象BUSINESS_PARTNER的根节点,BUSINESS_PARTNER的根节点再次连接到业务对象节点MAIL。实体之间的连接不由SQL风格联接来表示,而是由使用逻辑关联的简化语法来表示。通常,该编码风格对于业务对象以及其它富数据结构是有利的,例如,因为关联表示实体之间的逻辑关系并且简化查询语言语句(在本主题的一些实施方式中SQL JOIN可以用作关联的表示)。
图2中示出的示范性代码段200可以针对每个销售单选择总的净额和税额,加上买方组织的名称和当前有效的邮件地址。如上面的示例中所示,与本主题的实施方式一致的ABQL可以提供路径表达式语法以遵循诸如像数据对象或者业务对象(例如,业务对象节点之间)的数据结构中的不同数据元素之间的关联。为了提供缩写语法,ABQL可以包括对于具有公共前缀的重复的路径表达式的前缀符号。图2的示范性代码段200中的查询因此可以如图3的代码段300中所示那样被重写。
在与本主题的实施方式一致的编译器层104中,查询语句可以被解析,并且可以执行语义检查。可以在编译器层104中解析查询语句。举例来说,查询语句的文本表示可以被转换为表示,其可以由运行时层106用于有效语句变换和运行。在这一点上,最初可以以业务软件编程语言(例如,ABAP语言)呈现的ABQL语句可以被重写为本地SQL语句,其可以在数据库112中运行。在ABQL中使用的关联可以被变换为适当的运行时表示(例如,SQL联接)。也可以运行用于所计算的字段的权限检查和表达式。图4示出了本地SQL的示范性代码段400,其可以由编译器层104通过将图2的示范性代码段200中所示的ABQL语句变换为本地SQL来创建。ABQL查询中的关联可以由示范性代码段400中的SQL LEFT OUTER JOIN替换,如图4所示。过滤条件可以在第二左外联接(LEFT OUTER JOIN)的联接条件(ON子句)中表示。在示范性代码段400中可以强调可以被插入以运行权限检查的部分查询。
运行时层106可以负责查询运行。如果查询是动态的,则可以在运行之前要求编译。如此的话,查询可以被传递给ABQL编译器层104,并且通常在编译时执行的部分步骤可以在这里运行(例如解析、语义检查等等)。如果查询是完全动态的,则通常在运行时执行全编译。如果仅部分查询是动态的(例如,节点名称或者where子句),则可以在编译时预编译查询并且当全部信息可用时在运行时完成编译。
在准备好查询之后,查询被发送到数据库112。依赖于查询的性质,本地SQL或者SQLScript可以用作实现语言。本地SQL对于用户来说通常是容易理解并且熟悉的,用于运行简单选择语句。当从数据库检索到多个结果集时,SQLScript可以用于查询运行。SQLScript对于实现可重新使用函数也可能是有利的,可重新使用函数诸如像在ABQL语句中直接使用的或者在计算的字段中的表达式内的函数。
运行时层106也可以处理交易缓冲的集成。在此背景下,术语“交易缓冲”指的是为在当前交易背景下有效的数据提供存储空间的缓冲存储器。换句话说,缓冲数据的作用域可以绑定到当前事务上。保持跟踪从其请求数据的数据图像以使得可以据此运行查询可能是有利的。作为说明性的示例,当从交易数据图像读取时,有利地,交易缓冲可以被运行时层106考虑。数据库系统通常支持原子、一致性、隔离性和可靠性(atomicity,consistency,isolation and durability,ACID)的重要属性。交易缓冲可用于确保隔离性属性。
可选地可以包括数据字典的持久层110可以包含存储在数据库112中的数据。对于知道业务对象的查询语言来说,数据字典可以以诸如像最小化的业务对象模型126这样的附加信息来丰富。在一个示例中,最小化的业务对象模型126可以包含业务对象节点的基本定义,可选地包括计算的字段、节点之间的关联(包括过滤条件和关联估值)等等。
该信息可选地可以保存在元数据储存库中,并且被复制到数据字典中,数据字典可以在运行时期间用作元数据的源。计算的字段也可以被存储在数据字典中。在查询编译时,可以从数据字典读取字段表达式并且将其创建为查询语句以便在数据库112中在运行时进行估值。在查询运行期间,包含用于业务对象和基于角色的访问管理员(RBAM)节点表130的数据库112中的节点表128可以被直接访问。
如上所述,与本主题的实施方式一致的ABQL可以从元数据储存库业务对象生成核心数据模型以及ABQL查询框架。核心数据模型(参见图1中最小化的业务对象模型126)可以作为业务对象结构存储在数据字典中。业务对象可以形成通过直接和属性边(关联)连接的业务对象节点的图。这样的图可以反映基本关系实体关系模型的结构。每个节点都可以表示实体(例如,表、视图等等),并且图中的每个边都可以相应于两个节点之间的关系。边可以任意地携带实体之间的复杂联接条件。每个业务对象节点都被映射到基本持久层(数据库表或者视图)。每个关联都可以被映射到联接条件。最小化的业务对象模型126中的数据元素可以按照位置被映射到目标数据结构。
图5示出了图示在提供方法的本主题的示范性实施方式的处理流程图500。这样的方法可以包含,在502中,在查询语言架构的语言层确定接收到的查询的查询语法和查询的结果集的定义。在504中,查询语言架构的编译器层检查接收到的查询的语义。在506中,可以从要返回查询结果的数据库的持久层中的数据字典中读取与结果集对应的字段表达式。在510中,编译器层可以将字段表达式构建到查询语句中。在512中,查询语言架构的运行时层可以运行包含查询语句的查询,并且在514中,可以基于数据库上的查询的运行按照结果集返回该查询的结果。
图6A至图12包括示出特征的示例的一系列示范性代码段,所述特征的示例可能出现在与本主题的一个或多个实施方式一致的基本查询结构中。在图6A的示范性代码段600中,可以从被称作zabql_sales_order的业务对象的根节点中选择一个或多个元素。在图6B的示范性代码段650中,可以选择嵌套结构的子元素(例如,total_net_amount-content)。所选择的元素可以基于它们在元素列表中的位置而非它们的名称,被映射到目标变量。在图7A的示范性代码段700中,可以选择整个结构(例如,total_gross_amount包含currency_code和内容)。在图7B的示范性代码段750中,SELECT(选择)操作可以被制作(make)成工作区并且制作成表。ABAP(或者其它业务软件编程语言)变量的内联(inline)声明可以被制作(例如,:data(l_wa2))成为对于结果的新的匿名类型的内联定义。
在图8A的示范性代码段800中,可以制作ABAP表的内联声明(例如,:data(l_itab))并且可以分配别名。例如,缺省值可以是最后路径步骤(例如,total_net_amount→content(内容))的名称。也可以提供逸出(escaping)机制(例如,![group])。图8B的示范性代码段850和855示出了具有WHERE条件的简单SELECT操作。可以需要文字(literal)和ABAP(或其他业务编程语言)变量准确键入。文字是明确给定为源代码的一部分的恒定值,诸如例如ABQLSELECT语句。可以使用像SQL的WHERE条件,而且可以将嵌入式的条件提供到图8B中的[...]中。对于具有WHERE条件的简单SELECT操作,图9A的示范性代码段900示出复杂AND/OR条件的示例,图9B的示范性代码段950示出BETWEEN AND LIKE条件之间的示例,图10B的示范性代码段1050示出In–Range Table(条件范围表)条件的示例,图11A的示范性代码段1100示出否定条件的示例,图11B的示范性代码段1150示出具有冒号[:]的变量的标记的示例。
图12的示范性代码段示出IN Table(IN表)条件的示例。这样的条件可以类似于SQL子查询,并且可以被用作过滤器。
图13示出业务对象模型1300的示例,其包含销售定单业务对象(ZABQL_SALES_ORDER)1302、业务合作者业务对象(ZABQL_BUSINESS_PARTNER)1304和产品业务对象(ZABQL_PRODUCT)1306。图14A至图19包含一系列示范性代码段,其示出可以出现在与本主题的一个或多个实施方式一致的、要求访问关联业务对象和过滤器的查询中的特征的示例。
在图14A的示范性代码段1400和1405中,示出以下特征∶利用路径表达式(\buyer-company_name)语句使用业务对象节点之间的关联、利用反斜线[\]对关联加前缀、使用破折号[-]作为分量选择器以及在不同位置使用路径表达式(例如,字段列表、WHERE条件等等)。图14B的示范性代码段1450和图15A的示范性代码段1500示出可能出现在与本主题的实施方式一致的ABQL的元素列表路径表达式中的其它特征。路径表达式可以包含多个关联和嵌套条件(例如,[language_code=‘D’])。在元素列表中,可以使用全部类型的关联。to-N关联的使用可能导致多余的数据。术语“To-N关联”指的是与单值关联相反的集合值关联。ABQL可以能够具有不同过滤条件处理相同关联(例如,具有不同条件的\description[…])。元素列表中的关联可以被转换为SQL中的左外联接。嵌入条件可以是左外联接的ON条件的一部分。与本主题的实施方式一致的ABQL可以对到相同业务对象节点(例如,\buyer和\seller)的不同关联进行区分。
图15B的示范性代码段1550示出可能出现在与本主题的实施方式一致的ABQL的根路径表达式中的其它特征。路径表达式也可以用来指定引导业务对象节点(例如,zabql_sales_order~>root[node_id=:so_id]\item)。嵌套条件[即,node_id=:so_id]可以指代业务对象节点zabql_sales_order~>root的node_id(节点ID)。WHERE条件可以指代利用关联\item作目标的BO节点node_id。
图16A的示范性代码段1600示出可能出现在与本主题的实施方式一致的ABQL的根路径前缀表达式中的其它特征。元素的普通列表可以集成到目标结构中。具有相应元素的新的结构类型可以被创建并集成到目标结构中。图16B的示范性代码段1650示出可能出现在与本主题的实施方式一致的ABQL的WHERE条件中的路径表达式中的其它特征。路径表达式可被用于所有比较操作的左边的WHERE条件中。具有不同路径表达式和属性的条件可以任意地组合。
图17A的示范性代码段1700和图17B的示范性代码段1750示出可能出现在与本主题的实施方式一致的ABQL的WHERE条件中的to-N关联中的其它特征。WHERE条件中的to-N关联可以以量词(quantor)(例如ALL或者EXISTS)作前缀。作为一个示例,SELECT操作可以针对仅包含交货期长于5的项目的销售定单。在另一个示例中,SELECT操作指定包含至少一个交货期长于5的项目的全部销售定单。可以使用关键字“EXISTS(存在)”和“ALL(全部)”来设置存在谓词(Existential predicate)。EXISTS和ALL条件可以嵌套并且与其它条件任意组合。ABQL量词到本地SQL的转换可以包括例如下列特征中的一个或多个:EXISTS可以映射到SQL Exists(例如,取决于sub-select<CONDITION>,ALL可以映射到SQL Not Exists(例如,取决于sub-select not(<CONDITION>)。
图18A、图18B和图19的示例代码段图示了在与当前主题一致的ABQL中可以出现在嵌套的ALL和EXISTS条件中的其他特征。图18A的示例1800示出了对包含至少一个既没有德文描述也没有英文描述的产品的销售定单的SELECT操作,而图18B的示例1850示出了对仅包含具有德文和英文描述的产品的销售定单的选择。这个查询也会返回空销售定单。根据布尔逻辑,不包含项目的销售定单满足ALL条件。图19的示例1900示出了对仅包含具有德文和英文描述的产品并且包含至少一个项目的销售定单的SELECT操作。在这个示例中,条件[node_id>x`00`]总为真。
作为总的说明,路径表达式中的条件(被包括在[]中)不能包含具有关联的嵌套的路径表达式。结果集的势(Cardinality)不必在运行时检查。如果存在具有[language_code=‘D’]的若干描述,则没有错误需要被解除(raise)。在这种情况下,可以返回重复的项目。
图20A和图20B示出包括与本主题的一个或多个实施方式一致的可以在需要聚合的查询中出现的特征的示例的示例性代码段。在图20A中,元素列表中的聚合函数可以包括SUM(例如,\item-net_amount-content),其返回各个销售定单的全部项目的总和,并且也包括其它标准集合函数(包括但不限于MAX、MIN、SUM、AVG、COUNT)。可以要求路径包含to-N关联。在SQL转换中,Group By(分组)操作可以包括SELEC列表和ORDER BY(排序)列表中的全部条目(它们未被聚合)、以及根据BO节点的主关键字(例如,zabql_sales_order~>root)。分组可以以与SQL的分组方式相同的方式执行。例如,可以要求GROUP BY子句包含所有不被聚合的元素。GROUP BY列表可以引用别名(例如,买方,卖方,等等)。可以要求GROUPBY列表中的路径包含to-N关联或条件。
图21A到图22包括与本主题的一个或更多个实施方式一致的示出可以在查询中出现的排序和分页特征的示例的示例性代码段。在图21A的代码段2100中,可以根据ORDER BY列表来按字典顺序(lexicographically)排序结果。ORDER BY列表可以包含包括别名但不包括to-N关联或条件的任何路径。ORDER BY方向可以以升序或降序方式完成(在一个例子中,默认次序可以是升序)。在图21B的代码段2150中,GROUP BY和ORDER BY可以被组合。如果存在显式分组,则ORDER BY列表可以包含GROUP BY列表的条目或聚合元素(例如,如别名所引用的)。在图22的代码段2200中,可以限制被检索的行的数目,例如,通过UP TO<n>ROWS(最大到<n>行)。
可选地,可以指定开始行,例如,通过STARTING AT ROW<n>(在第<n>行开始)。两个元素都可以与ORDER BY子句组合使用。
这里描述的主题的一个或多个方面或特征可以在数字电子电路、集成电路、专门设计的专用集成电路(ASIC)、现场可编程门阵列(FPGA)、计算机硬件、固件、软件和/或其组合中实现。这些方面或特征可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,所述可编程系统包括:耦接用于从存储系统接收数据和指令以及发送数据和指令到存储系统的、可以是专用或者通用的至少一个可编程处理器;存储系统;至少一个输入设备和至少一个输出设备。该可编程系统或计算系统可以包括客户端和服务器。客户端和服务器通常相互远离并且一般通过通信网络交互。客户端与服务器的关系由于在各个计算机上运行并且相互之间具有客户端-服务器关系的计算机程序而产生。
这些计算机程序也可以被称为程序、软件、软件应用、应用、组件或代码,并且包括用于可编程处理器的机器指令,并且可以用高级过程和/或面向对象的程序设计语言、和/或汇编/机器语言,来实现。如这里所使用的,术语“机器可读介质”是指任何计算机程序产品、装置与/和设备,例如,磁盘、光盘、存储器和可编程逻辑器件(PLD),用于向可编程处理器提供机器指令和/或数据,并且包括用于接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。机器可读介质可以非暂时地存储这样的机器指令,例如,像非暂时性固态存储器或磁性硬盘驱动器或任何等同的存储介质那样。可替换地或附加地,机器可读入介质可以以暂时的方式存储这样的机器指令,例如,像存储器高速缓存或其他与一个或更多个物理处理器内核相关联的随机存取存储器那样。
为了提供与用户的交互,这里描述的主题的一个或更多个方面或特征可以实现在计算机上,所述计算机具有:显示设备,例如,阴极射线管(CRT)或液晶显示(LCD)或发光二极管(LED)监视器,用于向用户显示信息;键盘;和定点设备,比如鼠标跟踪球,用户可以用它们向计算机提供输入。也可以使用其它种类的设备来提供与用户的交互。例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且可以以任何形式接收来自用户的输入,包括但不限于,声音、语音或者触觉输入。其他的可能的输入设备包括但是不限于:触屏或其他的触敏设备,比如单点或多点电阻或电容性的轨迹板、语音识别硬件和软件、光扫描器、光指针、数字图象俘获设备和关联的解释软件、等等。
这里描述的主题可以根据期望的配置具体实现在系统、装置、方法和/或物品中。前面的描述中阐明的实施方式并不代表与这里描述的主题一致的所有实施方式。更确切地说、它们仅仅是与所描述的主题相关的方面一致的一些示例。虽然上面详细描述了一些变化,但是其它的修改和添加也是可能的。具体来说,除了这里阐述的那些特征和/或变化之外,还可以提供进一步的特征和/或变化。例如,以上描述的实施方式可以针对所公开的特征的各种组合和/或子组合以及以上公开的若干深层次特征的组合和/或子组合。此外,附图中描绘的和/或这里描述的逻辑流不一定要求所示出的特定次序或顺序次序,来实现期望的结果。其它的实施方式可以落入所附权利要求的范围之内。
Claims (17)
1.一种包括存储指令的非暂时性机器可读介质,当至少一个可编程处理器执行所述指令时,所述指令使所述至少一个可编程处理器执行以下操作:
在查询语言架构的语言层确定接收到的查询的查询语法和该查询的结果集的定义;
在该查询语言架构的编译器层检查所接收的查询的语义,编译器层支持在多层业务软件架构的多个应用层上可用的单个数据模型;
从要返回查询结果的数据库的持久层中的数据字典中读取与所述结果集对应的字段表达式;
由编译器层将该字段表达式构建到查询语句中;
在该查询语言架构的运行时层运行包括该查询语句的查询;以及
基于该数据库上的该查询的运行按照结果集返回该查询的结果。
2.如权利要求1所述的非暂时性机器可读介质,其中所述查询语言架构以业务软件编程语言来实施,作为业务软件架构的一部分。
3.如权利要求2所述的非暂时性机器可读介质,其中所述业务软件编程语言包括高级业务应用编程(ABAP)语言。
4.如权利要求1所述的非暂时性机器可读介质,其中所述查询语法包括使用逻辑关联来表示实体之间的连接。
5.如权利要求1所述的非暂时性机器可读介质,其中所述编译器层和所述运行时层在业务软件编程语言内核中本地实现。
6.如权利要求1所述的非暂时性机器可读介质,其中所述操作还包括将响应于所述查询的数据检索中使用的逻辑推送到所述数据库的数据库层。
7.一种用于对数据库执行查询的系统,包括:
至少一个可编程处理器;以及
存储指令的机器可读介质,所述指令当由所述至少一个可编程处理器运行时,使得所述至少一个可编程处理器执行以下操作:
在查询语言架构的语言层确定接收到的查询的查询语法和该查询的结果集的定义;
在该查询语言架构的编译器层检查所接收的查询的语义,编译器层支持在多层业务软件架构的多个应用层上可用的单个数据模型;
从要返回查询结果的数据库的持久层中的数据字典中读取与所述结果集对应的字段表达式;
由编译器层将该字段表达式构建到查询语句中;
在该查询语言架构的运行时层运行包括该查询语句的查询;以及
基于该数据库上的该查询的运行按照结果集返回该查询的结果。
8.如权利要求7所述的系统,其中所述查询语言架构以业务软件编程语言来实施,作为业务软件架构的一部分。
9.如权利要求8所述的系统,其中所述业务软件编程语言包括高级业务应用编程(ABAP)语言。
10.如权利要求7所述的系统,其中所述查询语法包括使用逻辑关联来表示实体之间的连接。
11.如权利要求7所述的系统,其中所述操作还包括将响应于所述查询的数据检索中使用的逻辑推送到所述数据库的数据库层。
12.一种计算机实施的方法,包括:
在查询语言架构的语言层确定接收到的查询的查询语法和该查询的结果集的定义;
在所述查询语言架构的编译器层检查所接收的查询的语义,编译器层支持在多层业务软件架构的多个应用层上可用的单个数据模型;
从要返回查询结果的数据库的持久层中的数据字典中读取与所述结果集对应的字段表达式;
由编译器层将该字段表达式构建到查询语句中;
在该查询语言架构的运行时层运行包括该查询语句的查询;以及
基于该数据库上的该查询的运行按照结果集返回该查询的结果。
13.如权利要求12所述的计算机实施的方法,其中所述查询语言架构以业务软件编程语言来实施,作为业务软件架构的一部分。
14.如权利要求13所述的计算机实施的方法,其中所述业务软件编程语言包括高级业务应用编程(ABAP)语言。
15.如权利要求12所述的计算机实施的方法,其中所述查询语法包括使用逻辑关联来表示实体之间的连接。
16.如权利要求12所述的计算机实施的方法,其中所述方法还包括将响应于所述查询的数据检索中使用的逻辑推送到所述数据库的数据库层。
17.如权利要求12所述的计算机实施的方法,其中所述确定、所述检查、所述读取、所述构建、所述运行以及所述返回中的至少一个由包括至少一个可编程处理器的系统执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/712,898 US9098546B2 (en) | 2012-12-12 | 2012-12-12 | Advanced business query language |
US13/712,898 | 2012-12-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103870532A CN103870532A (zh) | 2014-06-18 |
CN103870532B true CN103870532B (zh) | 2019-04-05 |
Family
ID=48917311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310674461.2A Active CN103870532B (zh) | 2012-12-12 | 2013-12-11 | 高级业务查询语言 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9098546B2 (zh) |
EP (1) | EP2743838B1 (zh) |
CN (1) | CN103870532B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9405793B2 (en) | 2013-06-12 | 2016-08-02 | Sap Se | Native language support for intra-and interlinked data collections using a mesh framework |
US10061800B2 (en) * | 2014-09-15 | 2018-08-28 | Sap Se | Embedding database procedures in data-driven applications |
US9501516B2 (en) * | 2014-12-19 | 2016-11-22 | Sap Se | Zero downtime upgrade of database applications using triggers and calculated fields |
US9898494B2 (en) | 2015-02-23 | 2018-02-20 | Sap Se | Zero downtime upgrade for database applications using tables with sequences |
US10942710B1 (en) * | 2019-09-24 | 2021-03-09 | Rockwell Automation Technologies, Inc. | Industrial automation domain-specific language programming paradigm |
CN113987372B (zh) * | 2021-12-27 | 2022-03-18 | 昆仑智汇数据科技(北京)有限公司 | 一种领域业务对象模型的热点数据获取方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678674B1 (en) * | 1998-07-09 | 2004-01-13 | Informex, Inc. | Data retrieving method and apparatus data retrieving system and storage medium |
CN102098287A (zh) * | 2010-12-17 | 2011-06-15 | 无锡华润上华半导体有限公司 | 一种实现sap与b2b系统数据传输的方法 |
CN102156736A (zh) * | 2011-04-12 | 2011-08-17 | 上海电通信息服务有限公司 | Sap系统与sql数据库之间数据传输的方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7251641B2 (en) * | 2001-08-01 | 2007-07-31 | It Liberator As | Adjustable database runtime kernel |
US7861253B1 (en) * | 2004-11-12 | 2010-12-28 | Microstrategy, Inc. | Systems and methods for accessing a business intelligence system through a business productivity client |
US20060235839A1 (en) * | 2005-04-19 | 2006-10-19 | Muralidhar Krishnaprasad | Using XML as a common parser architecture to separate parser from compiler |
US7680767B2 (en) * | 2006-03-23 | 2010-03-16 | Microsoft Corporation | Mapping architecture with incremental view maintenance |
US7647298B2 (en) * | 2006-03-23 | 2010-01-12 | Microsoft Corporation | Generation of query and update views for object relational mapping |
US20100153431A1 (en) | 2008-12-11 | 2010-06-17 | Louis Burger | Alert triggered statistics collections |
US8327351B2 (en) * | 2009-04-30 | 2012-12-04 | Sap Ag | Application modification framework |
US8285728B1 (en) | 2010-08-24 | 2012-10-09 | The United States Of America As Represented By The Secretary Of The Navy | Knowledge discovery and dissemination of text by mining with words |
US9002876B2 (en) * | 2010-12-02 | 2015-04-07 | Sap Se | Interpreted computer language to analyze business object data with defined relations |
US20140019429A1 (en) * | 2012-07-12 | 2014-01-16 | Volker Driesen | Downtime reduction for lifecycle management events |
-
2012
- 2012-12-12 US US13/712,898 patent/US9098546B2/en active Active
-
2013
- 2013-08-01 EP EP13003831.8A patent/EP2743838B1/en active Active
- 2013-12-11 CN CN201310674461.2A patent/CN103870532B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678674B1 (en) * | 1998-07-09 | 2004-01-13 | Informex, Inc. | Data retrieving method and apparatus data retrieving system and storage medium |
CN102098287A (zh) * | 2010-12-17 | 2011-06-15 | 无锡华润上华半导体有限公司 | 一种实现sap与b2b系统数据传输的方法 |
CN102156736A (zh) * | 2011-04-12 | 2011-08-17 | 上海电通信息服务有限公司 | Sap系统与sql数据库之间数据传输的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2743838B1 (en) | 2020-04-22 |
US20140164425A1 (en) | 2014-06-12 |
EP2743838A1 (en) | 2014-06-18 |
CN103870532A (zh) | 2014-06-18 |
US9098546B2 (en) | 2015-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103870532B (zh) | 高级业务查询语言 | |
US11726969B2 (en) | Matching metastructure for data modeling | |
US11526656B2 (en) | Logical, recursive definition of data transformations | |
US9870203B2 (en) | Consumption layer for business entities | |
US9575819B2 (en) | Local buffers for event handlers | |
US20160117358A1 (en) | Graph database system that dynamically compiles and executes custom graph analytic programs written in high-level, imperative programing language | |
US9354948B2 (en) | Data models containing host language embedded constraints | |
US8255888B2 (en) | API derivation and XML schema derivation for developing applications | |
US20050071803A1 (en) | Development environment for developing applications using a metamodel | |
US10102269B2 (en) | Object query model for analytics data access | |
US7779047B2 (en) | Pluggable merge patterns for data access services | |
Oren et al. | ActiveRDF: Embedding Semantic Web data into object-oriented languages | |
US20070033212A1 (en) | Semantic model development and deployment | |
US10019537B1 (en) | System and method for data search in a graph database | |
US20140181004A1 (en) | Common Framework for Definition, Generation, and Management of Metadata Runtime-Loads | |
US20170323001A1 (en) | Integration of Relational Calculation Views into a Relational Engine | |
Lerman et al. | Programming entity framework: DbContext | |
Cvetković et al. | A comparative study of the features and performance of orm tools in a. net environment | |
US9037570B2 (en) | Optimization of business warehouse filters on complex calculation models | |
US10713244B2 (en) | Calculation engine optimizations for join operations utilizing automatic detection of forced constraints | |
US9053151B2 (en) | Dynamically joined fast search views for business objects | |
Galvizo | On indexing multi-valued fields in AsterixDB | |
US10452659B2 (en) | Compatibility check for execution of joins | |
US11036730B2 (en) | Business intelligence language type representing result structure | |
Yan | Understanding and Improving Database-Backed Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C53 | Correction of patent for invention or patent application | ||
CB02 | Change of applicant information |
Address after: German Waldo Applicant after: SAP AG Address before: German Waldo Applicant before: SAP AG |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SAP AG TO: SAP EUROPE AG |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |