CN108885635A - 分层声明式转换的分布式执行 - Google Patents

分层声明式转换的分布式执行 Download PDF

Info

Publication number
CN108885635A
CN108885635A CN201780020674.XA CN201780020674A CN108885635A CN 108885635 A CN108885635 A CN 108885635A CN 201780020674 A CN201780020674 A CN 201780020674A CN 108885635 A CN108885635 A CN 108885635A
Authority
CN
China
Prior art keywords
mode
inquiries
conversion chains
chains link
inquiry
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
Application number
CN201780020674.XA
Other languages
English (en)
Inventor
S·K·帕克哈雷
R·肖贾伊
B·M·费尔普斯
R·格鲁伊安
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN108885635A publication Critical patent/CN108885635A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24575Query processing with adaptation to user needs using context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation

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)
  • Information Transfer Between Computers (AREA)

Abstract

在转换链内委托匹配可委托查询模式的查询,该可委托查询模式与外部服务相关联。与一个或多个外部服务相关联的一个或多个可委托查询模式与转换链内包括的一个或多个查询之间的一个或多个匹配被识别。然后,识别的一个或多个查询的执行被委托给一个或多个外部服务。在识别的一个或多个查询的执行时,与执行相关联的一个或多个结果随后被接收。一旦一个或多个结果已被接收,那么结果就在转换链内被实施。

Description

分层声明式转换的分布式执行
背景技术
软件程序或应用使计算机系统能够获得高度的功能性。通过移动计算机、电话和平板电脑的使用,软件应用已经成为许多人生活和工作方式中不可或缺的一部分。软件应用由计算机可执行指令组成,该计算机可执行指令已由一个或多个个人和/或计算机系统开发。为了使个人获得创建复杂软件开发所需的技能和经验,通常需要多年的教育和经验。
本文所要求保护的主题不限于解决任何缺点的实施例或仅在诸如上述那些环境中操作的实施例。相反,该背景技术仅被提供用于说明本文所描述的一些实施例能够被实践的一个示例性技术领域。
发明内容
本文所描述的至少一些实施例涉及在转换链内委托匹配可委托查询模式的查询,该可委托查询模式与外部服务相关联。例如,实施例可以包括识别与一个或多个外部服务相关联的一个或多个可委托查询模式与转换链内包括的一个或多个查询之间的一个或多个匹配。然后,识别的一个或多个查询的执行被委托给一个或多个外部服务。在识别的一个或多个查询的执行时,与执行相关联的一个或多个结果随后被接收。一旦一个或多个结果已被接收,那么结果就在转换链内被实施。
因此,与转换链的节点相关联的查询/操作可以被智能地委托给外部服务,而不是在处理能力方面本质上受到限制的设备(例如,智能电话、平板电脑等)上执行。此外,远程执行的结果可以与来自本地执行的部分的结果组合,以创建由本地主机设备可使用的最终结果。
本发明内容被提供来以简化的形式介绍一系列概念,这些概念将在下面的具体实施方式中被进一步描述。本发明内容不旨在识别所要求保护的主题的关键特征或必要特征,也不旨在被用作辅助确定所要求保护的主题的范围。
附图说明
为了描述本发明的上述和其他优点和特征能够被获得的方式,以上被简要描述的本发明的更具体的描述将通过参考在附图中被图示的本发明的特定实施例来呈现。应当理解,这些附图仅描绘了本发明的典型实施例,并且因此不应被认为是对其范围的限制,通过附图的使用,本发明将利用附加的特征和细节来描述和解释,在附图中:
图1图示了其中可以采用本文所描述的原理的示例计算机系统。
图2图示了转换链到一系列代码片段的转换。
图3图示了转换链节点的分解图。
图4图示了可分发模式库用于识别支持的查询模式的用途。
图5图示了查询构建器用于生成代码的用途。
图6图示了多个所识别的可委托查询的委托。
图7图示了用于在转换链内委托匹配与外部服务相关联的可委托查询模式的查询的示例方法的流程图。
具体实施方式
本文所描述的至少一些实施例涉及在转换链内委托匹配与外部服务相关联的可委托查询模式的查询。例如,实施例可以包括识别与一个或多个外部服务相关联的一个或多个可委托查询模式与转换链内包括的一个或多个查询之间的一个或多个匹配。然后,识别的一个或多个查询的执行被委托给一个或多个外部服务。在识别的一个或多个查询的执行时,与执行相关联的一个或多个结果随后被接收。一旦一个或多个结果已被接收,那么结果就在转换链内被实施。
因此,与转换链的节点相关联的查询/操作可以被智能地委托给外部服务,而不是在处理能力方面本质上受到限制的设备(例如,智能电话、平板电脑等)上执行。此外,远程执行的结果可以与来自本地执行的部分的结果组合,以创建由本地主机设备可使用的最终结果。
由于本文所描述的原理在计算系统的环境中操作,因此计算系统将首先参考图1被描述,作为用于本文所描述的原理的使能技术。此后,关于在转换链内委托匹配与外部服务相关联的可委托查询模式的查询的进一步细节将参考图2至图7来描述。
计算系统现在越来越多地采用各种形式。计算系统可以是例如手持设备,电器,膝上型计算机,台式计算机,大型机,分布式计算系统,数据中心,或者甚至是常规上不被认为是计算系统的设备、诸如可穿戴设备(例如,眼镜、手表、带等)。在本说明书和权利要求书中,术语“计算系统”被广义地定义为包括任何这样的设备或系统(或其组合),其包括至少一个物理和有形处理器以及能够在其上具有由处理器可执行的计算机可执行指令的物理和有形存储器。存储器可以采用任何形式,并且可以取决于计算系统的性质和形式。计算系统可以被分布在网络环境上,并且可以包括多个组成计算系统。
如图1所示,在其最基本的配置中,计算系统100通常包括至少一个硬件处理单元102和存储器104。存储器104可以是物理系统存储器,其可以是易失性的、非易失性的、或两者的某种组合。术语“存储器”在本文中还可以被用来指代非易失性大容量存储单元,诸如物理存储介质。如果计算系统是分布式的,则处理能力、存储器和/或存储能力也可以是分布式的。
所描绘的每个计算机系统通过网络(或者其一部分)彼此连接,网络诸如例如为局域网(“LAN”)、广域网(“WAN”)、甚至是互联网。因此,每个所描绘的计算机系统以及任何其他连接的计算机系统及其组件,可以创建消息相关数据并通过网络交换消息相关数据(例如,互联网协议(“IP”)数据报和其他利用IP数据报的高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等)。
计算系统100在其上具有通常被称为“可执行组件”的多个结构。例如,计算系统100的存储器104被图示为包括可执行组件106。术语“可执行组件”是计算领域的普通技术人员很好理解的结构的名称,该结构可以是软件、硬件或其组合。例如,当以软件形式被实现时,本领域普通技术人员将理解:可执行组件的结构可以包括可以在计算系统上被执行的软件对象、例程、方法,,这样的可执行组件是否存在于计算系统的堆中,或者可执行组件是否存在于计算机可读存储介质上。
在这种情况下,本领域普通技术人员将认识到可执行组件的结构存在于计算机可读介质上,以使得当由计算系统的一个或多个处理器(例如,通过处理器线程)解释时,使计算系统执行功能。这种结构可以由处理器直接计算机可读的(如果可执行组件是二进制的,则是这种情况)。备选地,该结构可以被构造成可解释的和/或编译的(无论是在单个阶段还是在多个阶段中),以便生成可由处理器直接解释的这种二进制文件。当使用术语“可执行组件”时,对可执行组件的示例结构的这种理解完全在计算领域的普通技术人员的理解之内。
术语“可执行组件”还被本领域普通技术人员充分理解为包括以硬件专有或近似专有地实现的结构,诸如在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或任何其他专用电路内。因此,术语“可执行组件”是用于由计算领域的普通技术人员很好理解的结构的术语,无论该结构是以软件、硬件还是组合实现的。在本说明书中,还可以使用术语“组件”、“服务”、“引擎”、“模块”、“控制器”、“验证器”、“运行器”、“部署器”、“协调器”、“构建器”等。如在本说明书中所使用的并且在这种情况下,这些术语(无论该术语是否用一个或多个修饰符来修饰)也旨在与术语“可执行组件”同义或者是这种“可执行组件”的特定类型,并且因此也具有由计算领域的普通技术人员很好理解的结构。
在以下描述中,实施例参考由一个或多个计算系统执行的动作来描述。如果这些动作是以软件来实现的,则(执行该动作的相关联的计算系统的)一个或多个处理器响应于已执行构成可执行组件的计算机可执行指令来指导计算系统的操作。例如,这样的计算机可执行指令可以体现在形成计算机程序产品的一个或多个计算机可读介质上。这种操作的示例涉及数据的操纵。
计算机可执行指令(和所操纵的数据)可以被存储在计算系统100的存储器104中。计算系统100还可以包含通信信道108,其允许计算系统100通过例如网络110与其他计算系统通信。
虽然并非所有计算系统都需要用户界面,但在一些实施例中,计算系统100包括用于与用户交互的用户界面112。用户界面112可以包括输出机构112A以及输入机构112B。本文所描述的原理不限于精确的输出机构112A或输入机构112B,因为这将取决于设备的性质。然而,输出机构112A可以包括例如扬声器、显示器、触觉输出、全息图等。输入机构112B的示例可以包括例如麦克风、触摸屏、全息图、相机、键盘、其他指针输入的鼠标、任何类型的传感器等。根据本文所描述的原理,警报(无论是视觉、听觉和/或触觉的)可以经由输出机构112A来呈现。
本文所描述的实施例可以包括或利用包括计算机硬件(诸如例如,一个或多个处理器和系统存储器)的专用或通用计算系统,如下面更详细地讨论的。本文所描述的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这种计算机可读介质可以是能够由通用或专用计算系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。因此,通过示例但非限制的方式,实施例可以包括至少两种截然不同的计算机可读介质:存储介质和传输介质。
计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备、或者可以被用来以计算机可执行指令或数据结构的形式存储期望程序代码部件并且可以由通用或专用计算系统访问的任何其他物理和有形存储介质。
“网络”被定义为能够在计算系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或者硬连线或无线的组合)被传送或提供给计算系统时,计算系统将该连接正确地视为传输介质。传输介质可以包括网络和/或数据链路,其可以被用来以计算机可执行指令或数据结构的形式携带期望的程序代码部件并且可以由通用或专用计算系统访问。上述的组合也应该被包括在计算机可读介质的范围内。
此外,在到达各种计算系统组件时,以计算机可执行指令或数据结构的形式的程序代码部件可以从传输介质被自动地传递到存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以在网络接口模块(例如,“NIC”)内的RAM中被缓冲,并随后最终被传递到计算系统RAM和/或计算系统处的较少易失的存储介质。因此,应当理解,可读介质可以被包括在也(或甚至主要)利用传输介质的计算系统组件中。
计算机可执行指令包括例如指令和数据,当在处理器处被执行时,指令和数据使通用计算系统、专用计算系统或专用处理设备执行特定功能或功能组。备选地或附加地,计算机可执行指令可以将计算系统配置为执行特定功能或功能组。计算机可执行指令可以是例如二进制文件,或甚至是在由处理器直接执行之前经历一些转译(诸如编译)的指令、诸如中间格式指令(诸如汇编语言),或甚至是源代码。
本领域技术人员将理解,本发明可以在具有许多类型的计算系统配置的网络计算环境中被实践,计算系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费类电子产品、网络PC、小型机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机、数据中心、可穿戴设备(诸如眼镜或手表)等。本发明还可以在分布式系统环境中被实施,其中通过网络(由硬连线数据链路、无线数据链路、或硬连线和无线数据链路的组合)链接的本地和远程计算系统两者都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。
本文所描述的原理使用转换链(在本文中也被称为依赖链、依赖图和转换图)来操作。转换链是一组互连的节点(在本文中也被称为实体),每个节点可以表示数据源或数据汇。节点之间存在链接,每个链接表示转换。对于任何给定的链接,相关联的转换接收位于链接的输入端的一个或多个数据源的值的副本,并且生成在位于链接的输出端的一个或多个数据汇处所提供的结果值。对于任何给定的转换,当输入端的一个或多个数据源的值改变时,转换自动被重新评估,可能导致转换输出端的一个或多个数据汇的(一个或多个)值发生变化。
在一个实施例中,无论转换链有多复杂,转换都可以从表达等式、规则、约束、模拟的声明式语句来构建,或者可以从能够接收一个或多个值作为输入并将得到的一个或多个值作为输出的任何其他转换类型来构建。因为通过链接不同的转换链以兑现链之间的依赖关系来构建程序,所以转换链可以被增强。转换链的部分也可以被委托给其他设备和/或用户。
如所描述的,节点的转换链可以被用作针对计算机应用的模型,该计算机应用允许那些具有很少或没有软件开发经验的人来创建其他计算机应用。例如,节点可以由被包括在这种创建的计算机应用中的可视实体(例如,按钮、滑块、表格、MICROSOFT表格、MICROSOFT OFFICE表格、结构化查询语言(“SQL”)表格、MICROSOFT OFFICE 365代理等等)组成。在该依赖关系的源改变的情况下,当数据汇必须被重新评估、重新计算等时,节点可以被认为依赖于另一节点。
这种依赖关系的示例可以在电子表格软件应用(例如,MICROSOFT EXCEL)中被找到。在这样的应用中,当一个单元被修改时,它可能对一个或多个其他单元产生影响(这反过来又可能影响其他单元,等等)。在另一示例中,所创建的应用可以具有按钮,该按钮在与之交互时可以使所创建的应用内的其他节点被重新评估、重新计算等等。因此,整个转换链可以根据需要来更新。
每个节点可以使用作为声明式/功能性逻辑段的转换来注释。例如,这种转换可以由公式/表达式组成。这种转换可以指定数据在其流入节点时如何被操纵/改造。此外,如果节点本质上是可视的,则当数据流入节点时,这样的节点可以以可视方式作出反应。例如,具有杆和手柄的滑块可以包括当数据输入在滑块处被接收时手柄相对于杆改变位置。类似地,当手柄的位置被手动改变(例如,手柄相对于杆的位置由用户改变)时,手柄也可以输出数据。
转换链可以是表示创建的应用将如何表现(即,所见即所得(what you see iswhat you get)-“WYSIWYG”)的数据流执行模型。因此,在应用的创建期间,与所创建的应用相关联的转换链可以改变形状(例如,在整个创建过程中,节点到其他节点的连接以及数据可以被改变)。最终,作为创建的应用的一部分生成的代码可以作为所创建的应用在主机设备(例如,智能电话、平板电脑、膝上型计算机等)上运行(即,创建的应用可以具有用户能够与之交互的用户界面,执行各种功能/服务等)。
协调转换链的无缝分布可以包括各种步骤。例如,能够被远程和异步执行的可委托查询模式可以被识别。可以处理具有可委托查询模式的查询的专用查询构建器随后可以被用来与远程服务器/服务通信,以执行可委托查询。然后,不可委托的查询可以在主机设备(例如,电话、平板电脑、膝上型计算机等)上被执行,而可委托的查询可以被远程执行。因此,所有查询(可委托和不可委托的)的结果可以被无缝地重新集成并组合成创建的应用能够使用的最终结果。
如图所示,图2包括被统称为节点210、并且一起形成声明式转换链的节点。虽然10个不同的节点210被图示为形成转换链,但是可以存在形成转换链的任何数量的节点。图2还包括协调器220,协调器220可以将转换链递增地转换为一系列生成的代码片段(即,代码片段232、代码片段234和代码片段236)。虽然仅三个代码片段被示出,但是省略号238表明可能存在任何数量的生成的代码片段。
代码片段可以包括能够在设备(电话、平板电脑、膝上型计算机、台式计算机等)上本地运行以及在web/云计算环境内运行的任何语言(例如,)。一些代码片段可以具有在可委托的代码片段内的分段(即,分段232A、分段234A、分段236A、分段236B和分段段236C),使得这些分段的执行可以被委托给云中的各种外部服务器/服务240(例如,SQLREST API等)。再一次地,虽然图2图示了每个代码片段有一个至三个可委托分段,但在代码片段内可能存在任意数量的可委托分段,包括少至零个分段。然后外部服务器/服务240可以被指示以执行各种可委托分段,如本文更全面地描述的。然后,被远程执行的分段的结果被无缝地重新并入回到创建的应用中。
图3以节点210B内所包括的单个声明式转换的分解图图示了节点210B。如本文中简要描述的,转换可以包括类似于将被包括在电子表格软件应用(例如,MICROSOFT EXCEL、APPLEGOOGLE SHEETS TM等)中的声明式表达式。如图所示,表达式320包括“=If(slider2<20,Sort(Employees,Age),Sort(Employees,Age+1))”。图3还包括表达式320的可委托部分320A。图3中所示的突出显示的查询320(在本文中也被称为操作、查询模式、模式或架构(schema))可以被识别为包括可委托的查询模式。因此,可委托部分320A包括可以在远程服务器/服务240之一上执行的查询模式。然而,另一个排序函数查询模式(即,age+1)可能是不可委托的,并且因此将在主机设备上执行。
执行本文所描述的总体过程的第一步骤可以包括以某种形式编码被包括在转换链内的查询(例如,使用树结构、有向无环图(“DAG”)结构等来编码)。如图3所示,节点210B的表达式320可以使用树结构330来编码。然后编码的查询可以与能够由外部服务器/服务执行的编码的查询模式进行匹配,如本文更全面地描述的。在一些实施例中,在执行这样的表达式(即,表达式320)时的结果可以被发送到具有示出表格数据的能力的视觉输入。因此,根据“slider2”的值,员工可以按age来排序,或员工可以按age+1来排序。无论数据如何被排序,结果都可以被发送到视觉输入并由视觉输入使用(即,结果可以被显示在与转换链相关联的软件应用的用户界面(UI)上)。
图4图示了可分发模式库410的用途,该可分发模式库410由与特定外部服务240相关联的元数据420组成。每个支持的服务240(例如,SQL服务/连接器、MICROSOFT EXCEL连接器等)可以包括元数据420(例如,基于JSON的元数据),其识别哪些操作由特定服务支持以及用于委托查询的一些要求。因此,每个单独的服务240可以发布服务支持的查询模式。然后,查询模式可以通过使用任何适用的结构(例如,树结构、DAG结构或任何其他适用的结构)以与被包括在转换链内的查询类似的方式进行编码。
虽然图4图示了包括排序查询模式430A和过滤查询模式430B的两个支持的编码查询模式430,但是任何数量的查询模式可以由特定服务240支持。因此,与由服务支持的查询模式相关联的元数据可以由该服务发布。然后支持的查询模式(和/或其相关联的元数据)可以被编码以创建具有查询模式的图结构,该查询模式可以与转换链内的识别和编码后的查询匹配。
在一些实施例中,表示表格数据源(例如,被包括在MICROSOFT EXCEL表或SQL表中的数据)的转换链中的节点可以用由数据存储器提供的元数据来标记,该元数据指示一组性能。例如,性能可以包括关于特定列对数据进行排序或过滤的能力。创建的应用内的查询的图结构可以利用测量与可用服务的性能的兼容性的属性来注释。基于这些属性,各种算法可以被用来识别图结构的特定部分,该图结构的执行可以通过委托给其他设备、远程存储器、远程服务器、以及其他(例如,服务)来分发。例如,在树或DAG结构上操作的模式匹配算法可以被采用,以识别已经被编码成树或DAG结构的转换链的支持/可委托的查询模式。
因此,如图4所示,基于树的表示330内的查询(例如,在创建的应用内找到的查询模式)可以利用已经由特定服务识别为可被委托给特定服务的查询的查询模式430来识别/与之匹配。在一些实施例中,匹配可以通过本地模式识别符(即,本地的主机设备-智能电话、平板电脑、膝上型计算机)来完成,该识别符可以识别由可用服务支持的所有查询模式,并将一个或多个查询模式与在转换链中找到的查询匹配。
图4图示了在转换(例如,创建的应用)中找到的查询与由至少一个服务支持的查询模式之间的一个匹配。如图所示,查询模式430A已被识别为匹配基于树的表示330内的查询。然后所识别/匹配的查询可以被委托给支持识别的查询模式430A的服务。在一些情况下,可能存在支持特定的查询模式的多于一个的服务。这样,可能存在一些内置逻辑,其确定在这种实例中使用哪种服务,如本文中更全面地描述的。无论多于一个的服务是否支持特定的查询模式,一旦查询已被委托给特定的服务,那么该服务就远程地执行查询(即,由于其涉及本地主机设备而是远程的)。
在一些实施例中,可以确定某些可委托查询由于各种原因将不被委托,各种原因包括服务器/主机离线、委托被估计为比本地执行花费更长的时间、查询将被委托的服务器当前在峰值使用时间内操作等。然而,委托通常是有利的。例如,能够发生委托的外部服务器通常可以比本地主机设备处理显著更多的数据、更快速地处理数据、并且更高效地处理数据。换言之,外部服务器可以具有现有技术的架构/算法,并且可以专门被构建以处理被委托的查询和/或操作(例如,排序、过滤、连接合并、分组等)的类型。
因此,可以做出关于查询是否要被委托的判定,其可以基于各种因素(例如,操作的复杂性、服务器的状况、估计的执行时间等)。在一些实施例中,具有与被放置在可分发模式库中的模式相匹配的查询模式的所有查询都被委托。换言之,委托特定操作/查询模式的判定可以在模式被放置在可分发模式库内时被做出。
如图5所示,基于树的表示330内的识别的查询(包括可委托和不可委托的查询)随后通过查询构建器510来运行,这导致复合生成的代码520。生成的代码520可以包括JAVASCRIPT或在本地设备和web/云计算环境之间可移植的任何其他语言。生成的代码520可以是(在基于树的表示330内的)查询的可执行表示,其将所有识别的可委派部分(例如,可委托排序操作320A)委托给适用的远程服务。例如,开放数据协议(“ODATA”)查询、SQL脚本或数据分析表达式(DATA ANALYSIS EXPRESSIONS,“DAX”)查询可以被生成以编码和调度识别的查询的可委派部分的远程执行。
生成的代码520(即,可执行表示)可以组合远程执行的部分(即,可委托查询)和本地执行的部分两者的结果。基于特定表达式或声明式转换(即,If(slider2<20,Sort(Employees,Age),Sort(Employees,Age+1)),如图4所示)的基于树的表示,该组合可以被用来在本地主机设备上提供相干的结果。
如图6所示,两个单独的查询构建器510可以被使用,一个用于可委托查询模式(即,可分发查询构建器510B),一个用于不可委托查询模式(即,本地查询构建器510A)。这样,本地查询构建器510A能够在本地运行用于不可委托的查询模式(或被确定为不被委托的可委托模式)的逻辑。另一方面,可分发查询构建器510B能够委托外部服务240并与外部服务240通信,以便执行具有可委托模式的查询。
虽然图4和图5及其相关联的描述涉及单个转换,但图6图示了多个转换。例如,图6图示了表达式610,其包括可委托过滤操作610B(即,与age小于50相关)内的可委托排序操作320和可委托排序操作610A(即,随着age下降)。因此,具有可委托查询模式的多个查询可以被委托。三角形630是表达式610的表示,类似于基于树的表示330。如图所示,三角形320、610A和610B分别表示可委托排序操作320、可委托排序操作610和可委托过滤操作620,所有这些都包括具有可委托模式(即,由外部服务支持的模式)的查询。
如本文中所简要描述的,可委托查询320、610A和610B可以由可分发查询构建器510B处理,而其余查询(即,三角形的其余部分)可以由本地查询构建器510A处理。可分发查询构建器510B还可以包括了解可委托操作/查询的依赖关系的顺序所必需的逻辑。例如,在图6中,可以并行执行可委托操作320和610A。然而,可委托操作610B可以取决于可委托操作610A,因此操作610B将等待操作610A执行。
可分发查询构建器510B可以进一步遵循所使用的特定编程语言的操作顺序(例如,“排序”和“过滤”操作可以被并行运行,但“if语句”可以分支,从而阻止特定操作并行运行)。此外,单独的服务也能够同时为同一个创建的应用执行单独的操作(例如,SQL中的一个操作,MICROSOFT AZURE TM中的一个操作,AMAZON WEB(“AWS”)中的一个操作,等等)。因此,可分发查询构建器510B可以通过智能地命令单独的外部服务240执行对创建的应用的单独的查询,来提供执行创建的应用的查询中的更高效率。然而,被用于执行可委托查询的一些数据可以由服务(例如,SQL表)拥有。在这种情况下,虽然在本地主机设备上可能存在一些数据表示,但是实际数据可以在云中被存储在特定服务器/服务(例如,SQL SERVER)上。
当可委托查询在外部被执行时,来自不可委托查询的生成的代码可以在本地主机设备(例如,电话、平板电脑、台式计算机等)上运行,如有必要,本地主机设备将与正在执行任何可委托查询的外部服务240(例如,SQL、REST API等)进行通信。然后,所有结果(即,本地执行的结果和远程执行的结果两者)可以被组合到生成的代码中,以提供可以由在本地主机设备640上运行的创建的应用使用的结果。
图7图示了用于在转换链内委托匹配与外部服务相关联的可委托查询模式的查询的方法700的流程图。方法700包括识别与一个或多个外部服务相关联的一个或多个可委托查询模式与被包括在转换链内的一个或多个查询之间的一个或多个匹配(动作710)。例如,与转换链的节点相关联的排序操作可以被识别为匹配由外部服务支持的查询模式。识别匹配还可以包括首先将可委托查询模式和转换链内所包括的查询两者编码在基于树的图或DAG中。
一旦一个或多个匹配已经被识别,那么识别的一个或多个查询的执行就可以被委托给一个或多个外部服务(动作720)。例如,对排序操作与支持的查询模式的识别的匹配的执行随后可以被委托给执行这种操作的外部服务。然后,与识别的一个或多个查询的执行相关联的一个或多个结果可以被接收(动作730)。例如,排序操作的执行结果然后可以被接收。一旦一个或多个结果已经被接收,那么它们就可以在转换链内被实施(动作740)。在转换中实施结果可以包括重新评估整个转换链,其可能导致转换链的一个或多个输出的值的改变。例如,转换链可以与创建的软件应用相关联。这样,当一个或多个结果被实施时,软件可以具有显示接收的结果的相关联的用户界面(UI)或以某种方式修改UI。
以这种方式,与转换链的节点相关联的查询/操作可以被智能地委托给外部服务,而不是在处理能力方面本质上受到限制的设备(例如,智能电话、平板电脑等)上执行。此外,远程执行的结果可以与来自本地执行的部分的结果组合以创建由本地主机设备可使用的最终结果。
尽管本主题已经用结构特征和/或方法动作专用的语言来描述,应该理解,所附权利要求书中定义的主题不必限于所描述的上述特征或动作、或上述动作的顺序。相反,所描述的特征和动作被公开为实施权利要求的示例形式。
在不脱离本发明的精神或基本特性的情况下,本发明可以以其他特定形式来体现。所描述的实施例在所有方面都应被视为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由前面的描述指示。在权利要求的含义和等同范围内的所有变化都被包含在其范围内。

Claims (10)

1.一种计算机系统,包括:
一个或多个处理器;以及
一个或多个计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令由所述一个或多个处理器可执行以使所述计算机系统在转换链内委托匹配可委托查询模式的查询,所述可委托查询模式与外部服务相关联,所述计算机可执行指令包括可执行以使所述计算机系统执行至少以下操作的指令:
识别与一个或多个外部服务相关联的一个或多个可委托查询模式与所述转换链内包括的一个或多个查询之间的一个或多个匹配;
将识别的所述一个或多个查询的执行委托给所述一个或多个外部服务;
接收与识别的所述一个或多个查询的所述执行相关联的一个或多个结果;以及
在所述转换链内实施所述一个或多个结果。
2.根据权利要求1所述的计算机系统,其中所述转换链包括多个节点。
3.根据权利要求1所述的计算机系统,其中所述转换链与软件应用相关联。
4.根据权利要求1所述的计算机系统,其中所述一个或多个查询中的至少一个查询包括声明式表达式。
5.根据权利要求1所述的计算机系统,其中在所述转换链内实施所述一个或多个结果包括:在与所述转换链相关联的软件应用的用户界面(UI)上显示所述一个或多个结果。
6.一种在包括一个或多个处理器的计算机系统上实施的方法,所述方法用于在转换链内委托匹配可委托查询模式的查询,所述可委托查询模式与外部服务相关联,所述方法包括:
识别与一个或多个外部服务相关联的一个或多个可委托查询模式与转换链内包括的一个或多个查询之间的一个或多个匹配;
将识别的所述一个或多个查询的执行委托给所述一个或多个外部服务;
接收与识别的所述一个或多个查询的所述执行相关联的一个或多个结果;以及
在所述转换链内实施所述一个或多个结果。
7.根据权利要求6所述的方法,进一步包括:在识别所述一个或多个可委托查询模式与所述一个或多个查询之间的所述一个或多个匹配之前,编码被包括在所述转换链内的所述一个或多个查询。
8.根据权利要求7所述的方法,其中所述一个或多个查询使用树结构和有向无环图(DAG)结构中的至少一个而被编码。
9.根据权利要求8所述的方法,进一步包括:在识别所述一个或多个可委托查询模式与所述一个或多个查询之间的所述一个或多个匹配之前,编码与所述一个或多个外部服务相关联的所述一个或多个可委托查询模式。
10.根据权利要求9所述的方法,其中所述一个或多个可委托查询模式使用被用来编码所述一个或多个查询的相同结构而被编码。
CN201780020674.XA 2016-04-28 2017-04-26 分层声明式转换的分布式执行 Pending CN108885635A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662329094P 2016-04-28 2016-04-28
US62/329,094 2016-04-28
US15/199,612 2016-06-30
US15/199,612 US20170316060A1 (en) 2016-04-28 2016-06-30 Distributed execution of hierarchical declarative transforms
PCT/US2017/029506 WO2017189641A1 (en) 2016-04-28 2017-04-26 Distributed execution of hierarchical declarative transforms

Publications (1)

Publication Number Publication Date
CN108885635A true CN108885635A (zh) 2018-11-23

Family

ID=60157451

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780020674.XA Pending CN108885635A (zh) 2016-04-28 2017-04-26 分层声明式转换的分布式执行

Country Status (4)

Country Link
US (1) US20170316060A1 (zh)
EP (1) EP3449393A1 (zh)
CN (1) CN108885635A (zh)
WO (1) WO2017189641A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080201293A1 (en) * 2007-02-15 2008-08-21 Cognos Incorporated Multidimensional query simplification using data access service having local calculation engine
CN102708121A (zh) * 2011-02-18 2012-10-03 微软公司 异构源上的动态分布式查询执行
CN103678466A (zh) * 2012-09-19 2014-03-26 国际商业机器公司 排列对于概念查询的回答的系统和方法
US20150347510A1 (en) * 2014-05-30 2015-12-03 International Business Machines Corporation Distributed execution of expressions in a query
CN105474172A (zh) * 2013-08-19 2016-04-06 高通股份有限公司 用于实现代码划分和在异构处理器内核上执行的高效有向非循环图模式匹配

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292938B1 (en) * 1998-12-02 2001-09-18 International Business Machines Corporation Retargeting optimized code by matching tree patterns in directed acyclic graphs
CA2510630A1 (en) * 2005-06-23 2006-12-23 Cognos Incorporated System and method for query planning and execution
US7580918B2 (en) * 2006-03-03 2009-08-25 Adobe Systems Incorporated System and method of efficiently representing and searching directed acyclic graph structures in databases
US10120902B2 (en) * 2014-02-20 2018-11-06 Citus Data Bilgi Islemleri Ticaret A.S. Apparatus and method for processing distributed relational algebra operators in a distributed database
US9747399B2 (en) * 2015-09-22 2017-08-29 Intel Corporation Method and apparatus for providing rule patterns on grids

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080201293A1 (en) * 2007-02-15 2008-08-21 Cognos Incorporated Multidimensional query simplification using data access service having local calculation engine
CN102708121A (zh) * 2011-02-18 2012-10-03 微软公司 异构源上的动态分布式查询执行
CN103678466A (zh) * 2012-09-19 2014-03-26 国际商业机器公司 排列对于概念查询的回答的系统和方法
CN105474172A (zh) * 2013-08-19 2016-04-06 高通股份有限公司 用于实现代码划分和在异构处理器内核上执行的高效有向非循环图模式匹配
US20150347510A1 (en) * 2014-05-30 2015-12-03 International Business Machines Corporation Distributed execution of expressions in a query

Also Published As

Publication number Publication date
EP3449393A1 (en) 2019-03-06
WO2017189641A1 (en) 2017-11-02
US20170316060A1 (en) 2017-11-02

Similar Documents

Publication Publication Date Title
Kartsaklis et al. lambeq: An efficient high-level python library for quantum NLP
Moraitis et al. The Gaia2Jade process for multi-agent systems development
Catano et al. EventB2Java: A code generator for Event-B
CN108121742A (zh) 用户分类模型的生成方法及装置
Ahnert et al. Solving ordinary differential equations on GPUs
Pacheco et al. Improving collaboration efficiency between UX/UI designers and developers in a low-code platform
CN110140108A (zh) 处理兄弟调用
CN107646105A (zh) 云计算基础架构
Traversa et al. Memcomputing integer linear programming
Ramírez-Noriega et al. A software tool to generate a Model-View-Controller architecture based on the Entity-Relationship Model
CN108885635A (zh) 分层声明式转换的分布式执行
Sarkar et al. The Python machine learning ecosystem
Long et al. An architecture for the integration of different functional and structural plant models
TWI643083B (zh) 電子應用程式開發之方法、非暫時性電腦可讀儲存媒體及系統
Venero et al. Modeling and simulating interaction protocols using nested Petri nets
Cococcioni et al. Grossone methodology for lexicographic mixed-integer linear programming problems
Wang et al. Improvement of type declaration of the IEC 61499 basic function block for developing applications of cyber-physical system
Dani et al. Review on Frameworks Used for Deployment of Machine Learning Model
Schubotz et al. Towards Networked Linked Data-Driven Web3D Applications.
Niu et al. A uniform solution for vertex cover problem by using time-free tissue p systems
Hernández-Espinosa et al. Is there any real substance to the claims for a ‘new computationalism’?
US20230277925A1 (en) Adjustable balanced controller handle
Weber et al. Unifiedocl: achieving system-wide constraint representations
Wasti et al. Large Language User Interfaces: Voice Interactive User Interfaces powered by LLMs
Zschaler et al. GTS Families for the Flexible Composition of Graph Transformation Systems

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20181123