CN116745758A - 使用基于神经网络的机器学习的智能查询编辑器 - Google Patents

使用基于神经网络的机器学习的智能查询编辑器 Download PDF

Info

Publication number
CN116745758A
CN116745758A CN202180091824.2A CN202180091824A CN116745758A CN 116745758 A CN116745758 A CN 116745758A CN 202180091824 A CN202180091824 A CN 202180091824A CN 116745758 A CN116745758 A CN 116745758A
Authority
CN
China
Prior art keywords
query
queries
marker
latest
neural network
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
CN202180091824.2A
Other languages
English (en)
Inventor
A·K·马哈什瓦里
V·R·帕萨姆
R·K·阿格拉瓦尔
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.)
Oracle International Corp
Original Assignee
Oracle International Corp
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 Oracle International Corp filed Critical Oracle International Corp
Publication of CN116745758A publication Critical patent/CN116745758A/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/242Query formulation
    • G06F16/2423Interactive query statement specification based on a database schema
    • 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/242Query formulation
    • 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/903Querying
    • G06F16/9032Query formulation
    • G06F16/90324Query formulation using system suggestions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本文描述了用于使用神经网络来生成、编辑和优化查询的技术。在一些实施例中,这些技术包括使用一组高性能的数据库查询来训练神经网络以自动学习高性能的查询中不同分词序列之间的模式。一旦被训练,神经网络就可以接收不完整的查询作为输入,其中不完整的查询包括一个或多个查询分词。训练后的神经网络然后可以执行下一个分词预测以推测一组一个或多个附加查询分词,该组一个或多个附加查询分词可以跟在不完整查询中的一个或多个查询分词后面以形成完整的、高性能的查询。

Description

使用基于神经网络的机器学习的智能查询编辑器
技术领域
本公开涉及机器学习和查询处理系统。特别地,本公开涉及训练、调优和利用神经网络来优化查询性能。
背景技术
应用开发者通常负责编写查询以从数据库中检索满足一组标准的数据。在现代环境中,数据库中存储的分析和事务数据量可能非常庞大,从而增加了非高性能的数据库查询的风险。作为非高性能的数据库查询可能导致查询处理系统在查询执行期间低效地使用计算和存储器资源。在一些情况下,非高性能的查询可能危及数据库的健康,阻止并发进程能够及时访问数据。负面影响可能包括应用性能下降、数据丢失和数据损坏。
传统上,编写高性能查询需要合理的数据库专业知识、复杂的数据库模式知识以及对结构化查询语言(SQL)执行计划的理解。对于应用开发者,获取这样的知识通常是耗时的过程。此外,在编写数据库查询时,即使经验丰富的数据库管理员也可能容易忽视次优表达式并出错。
本部分中描述的方法是可以施行的方法,但不一定是先前已经设想或施行的方法。因此,除非另有说明,否则不应假定本部分中描述的任何方法仅因其包括在本部分中而作为现有技术。
附图说明
实施例在附图的图中通过示例而非限制的方式示出。应当注意,本公开中对“一(a)”或“一个(one)”实施例的引用不一定指相同实施例,而是它们意味着至少一个。在附图中:
图1图示了根据一些实施例的用于使用机器学习自动生成、编辑和优化查询的系统。
图2图示了根据一些实施例的用于处理不完整查询的数据流。
图3图示了根据一些实施例的包括来自变换器的双向编码器表示的神经网络架构。
图4图示了根据一些实施例的用于训练神经网络模型以便为不完整查询预测查询分词的过程。
图5图示了根据一些实施例的用于将数据库查询转换为数值向量的过程。
图6图示了根据一些实施例的用于调优机器学习模型的过程。
图7图示了根据一些实施例的用于在查询在被编写时实时编辑和优化查询的过程。
图8图示了可以在其上实现实施例的计算机系统。
具体实施方式
在以下描述中,出于解释的目的,许多具体细节被阐述以提供透彻的理解。一个或多个实施例可以在没有这些具体细节的情况下被实践。在一个实施例中描述的特征可以与在不同实施例中描述的特征组合。在一些示例中,为了避免不必要地模糊本发明,参考框图形式描述众所周知的结构和设备。
1.0总体概述
2.0系统架构
3.0利用机器学习来编辑查询
3.1模型层和数据流示例
3.2NLP层训练和架构
3.3用于将查询转换为数值向量的嵌入层
3.4模型调优
4.0使用机器学习的实时查询创作(composition)和编辑
5.0计算机网络和云网络
6.0微服务应用
7.0硬件概述
8.0杂项;扩展
1.0总体概述
本文描述了用于使用基于神经网络的机器学习来生成、编辑和优化查询的技术。在一些实施例中,这些技术包括使用一组高性能的数据库查询来训练神经网络以自动学习高性能的查询中不同分词(token)序列之间的模式。一旦被训练,神经网络可以接收不完整的查询作为输入,其中不完整的查询包括一个或多个查询分词。训练后的神经网络然后可以执行下一个分词预测以推测(project)一组一个或多个附加查询分词,该一组一个或多个附加查询分词最有可能跟随不完整查询中的一个或多个查询分词以形成完整的、高性能的查询。
在一些实施例中,神经网络模型的输出用于找到相似的高性能的查询。相似查询可能包括与神经网络模型输出的完整、高性能的查询重叠的分词。相似查询中的一个或多个相似查询可能具有不同于最初由神经网络处理的不完整查询中的分词。附加地或替代地,相似查询中的一个或多个相似查询可以具有等同的分词。相似查询可以从已知的高性能的查询列表中提取以降低执行非高性能的查询的风险。
在一些实施例中,在查询创作期间将完整的查询和/或满足相似性阈值的一个或多个相似查询呈现给用户。例如,当用户将查询键入用户界面时,训练后的神经网络可以预测并呈现用于跟在经由用户界面键入的分词后面的最可能的一组查询分词。附加地或替代地,系统可以识别和呈现到自动补全的查询的前n个相似的高性能的查询。用户可被给予选择、保存和/或执行所呈现的查询中的一个或多个的选项。如果用户选择查询,则它可以作为输入再次馈送到训练后的神经网络中以预测什么附加查询分词可被添加来扩展所选择的查询和/或类似于自动扩展的查询的已知的高性能的查询。
本说明书中描述的和/或权利要求中记载的一个或多个实施例可能不包括在该总体概述部分中。
2.0系统架构
图1图示了根据一些实施例的用于使用机器学习来自动生成、编辑和优化查询的系统100。如图1所示,系统100包括客户端102a和客户端102b、查询编辑器104、查询引擎112、数据库120和机器学习(ML)机器学习引擎122。系统100可以包括比图1中所示的组件更多或更少的组件。图1中所示的组件可以在彼此本地或彼此远离。图1中所示的组件可以在软件和/或硬件中实现。每个组件可以分布在多个应用和/或机器上。多个组件可以组合成一个应用和/或机器。关于一个组件描述的操作可以代替地由另一组件执行。
在一些实施例中,客户端102a和客户端102b是提交请求以将数据存储到数据库120或从数据库120获取数据的应用或应用组件。请求可以包括或用于构造符合结构化语言(诸如SQL)的数据库查询。例如,多层应用的应用层内的软件应用或组件(诸如应用服务器)可以提交数据操纵语言(DML)命令以添加、删除和/或修改数据库120内的数据。作为另一个示例,客户端可以提交数据定义语言(DDL)命令来定义、修改和移除数据结构(诸如表和模式)以控制底层数据如何被存储和关联。
在一些实施例中,查询编辑器104包括促进查询的创作和优化的逻辑。查询编辑器104可以包括编辑器接口106、自动补全引擎108和推荐引擎110。查询编辑器104可以是诸如客户端102a或客户端102b之类的一个或多个客户端应用的部分。在其他实施例中,查询编辑器104可以是单独的后端应用或云服务的一部分,诸如数据库服务器。
在一些实施例中,编辑器接口106提供用户和/或应用可以通过其创作(compose)新查询的接口。示例用户接口包括图形用户界面(GUI)、应用编程接口(API)、web接口、命令行界面(CLI)、触觉接口和语音命令接口。编辑器接口106可以被配置为呈现用户界面元素并经由用户界面元素接收输入。示例用户界面元素包括复选框、单选按钮、下拉列表、列表框、按钮、切换键、文本字段、日期和时间选择器、命令行、滑块、页面、表单和语音提示。例如,编辑器接口106可以包括显示在应用页面或网页内的文本框和/或其他图形用户界面(GUI)元素,用户可以通过其键入SQL命令、查询表达式和/或其他查询分词。当用户正在输入查询分词时,编辑器接口106可以通过显示在相同页面上的一个或多个GUI元素基于什么查询分词已被输入来实时地呈现推荐的SQL表达式和/或相似查询。
在一些实施例中,自动补全引擎108包括用于建议查询分词来补全不完整的查询和/或扩展完整的查询的逻辑。自动补全引擎108可以经由编辑器接口106接收一个或多个查询分词作为输入。作为响应,自动补全引擎108可以使用训练后的机器学习(ML)模型(诸如人工神经网络)来预测/推荐一个或多个查询分词以顺序添加到输入的查询分词以便补全或扩展查询。
在一些实施例中,推荐引擎110包括用于识别要经由编辑器接口106向用户推荐的高性能的查询的逻辑。推荐引擎110可以接收由自动补全引擎108输出的完整的查询作为输入。作为响应,推荐引擎110可以识别满足相似性阈值的查询,诸如来自高性能的查询列表的前n个最相似的查询。
在一些实施例中,查询引擎112处理经由查询编辑器104提交的从诸如客户端102a和客户端102b之类的数据库客户端接收的传入查询。查询引擎112可以是向其他计算应用和网络主机提供数据库服务的数据库服务器的组件。客户端102a和/或客户端102b可以远离数据库服务器并通过一个或多个网络连接提交请求,或者可以驻留在与查询引擎112和/或查询编辑器104相同的网络主机上。
查询引擎112通常包括查询编译器114、查询优化器116和查询计划执行器118。在一些实施例中,查询编译器114为传入查询生成查询执行计划。查询编译器114可以包括用于执行句法和语义处理的解析器。解析器可以将不同的查询表达式和/或查询的其他分词分离成表示查询执行计划的步骤的数据结构,诸如行源运算符。行源运算符为查询执行计划的给定步骤定义什么数据流入、对数据执行的操作(如果有的话)以及什么数据流出。计划的每个步骤可以对应于一个或多个操作,诸如执行扫描、联接、删除、更新、数值操作、逻辑操作、数据分割等。查询执行计划可以包括步骤树,诸如链接的行源运算符链,其中一个步骤的输出作为输入流向树中的父步骤,直到最终查询结果被生成。
在一些实施例中,查询编译器114检查一个或多个高速缓存以确定代码是否可以被重新用于查询。如果提交的SQL语句与已被高速缓存的SQL语句相匹配,则先前由查询编译器114生成的代码可被重新使用。软解析允许优化和计划生成被跳过,这可以减少查询执行时间。如果现有代码不能被重新使用,则硬解析可被执行,其中一组新的一个或多个执行计划被生成并优化。
在一些实施例中,查询优化器116评估不同的可能候选查询执行计划并选择候选之一来执行查询。如前所述,每个查询执行计划可包括可由查询计划执行器118执行以生成查询结果的一组步骤。可能存在产生相同的正确查询结果的若干可能的不同步骤组合。在一些情况下,查询优化器116可以选择具有最低估计成本的执行计划。然而,取决于特定的实现,其他启发法和/或规则也可用于选择查询执行计划。一旦候选查询执行计划已被选择,查询编译器114就可以将执行计划转换成可由查询计划执行器118执行的代码。
在一些实施例中,查询计划执行器118执行优化的查询执行计划的代码,以向/从数据库120获取、操纵和/或存储数据。例如,查询计划执行器118可以执行全表扫描、构建索引、执行联接和/或执行其他数据库操作以提供最终查询结果。
数据库120可以存储在任何类型的存储单元和/或设备上。此外,数据库120可以包括多个不同的存储单元和/或设备。多个不同的存储单元和/或设备可以是或者可以不是相同类型的或位于相同的物理站点。此外,数据库120可以在与系统100的其他组件相同的计算系统上实现,或者可以驻留在单独的计算系统上,诸如单独的网络主机。在一些实施例中,数据库120由存储服务器实现。系统100的其他组件可以经由直接连接或经由网络通信地耦合到数据库120。
机器学习(ML)引擎122提供组件,关于查询性能的推断和对数据库查询的调整通过这些组件可以在查询创作期间自动进行,而不是依赖静态指令集来执行任务。在一些实施例中,ML引擎122可以被配置为自动学习和推断与高性能的查询相关联的查询模式。ML引擎112可以向查询编辑器104提供提示以补全和/或优化查询。例如,ML引擎114可以学习彼此相关的不同查询分词之间的模式,并经由自动补全引擎108建议最有可能跟在用户当前已经键入到编辑器接口106中的查询分词后面的分词。
在一些实施例中,ML引擎122包括分词器124,其接收一组查询或查询表达式作为输入并自动提取一组查询分词。查询分词可以是识别查询文本的一个或多个词的数据对象,诸如字符串值。例如,查询分词可以对应于数据库命令(例如,SELECT、UPDATE、INSERTINTO、DELETE、CREATE TABLE或其他SQL语句)、子句(例如,WHERE、FROM、FOR等)、谓词(例如,可以评估为真、假或未知的指定条件)和/或对数据库对象的引用(例如,表、视图或数据库模式名称)。分词可以唯一地识别查询内的单个词(称为一元(unigram))或两个或多个词的序列(称为n元(n-gram))。
ML引擎122还可以包括嵌入服务126,其被配置为针对查询和/或查询分词生成向量表示。向量表示可以是促进由ML引擎122的其他组件进行的处理的一组数值。在一些实施例中,每个唯一分词可以被映射到唯一向量表示。例如,SELECT语句可以由一个ML向量表示,WHERE子句由另一个表示,等等。
在一些实施例中,ML引擎122包括用于训练诸如人工神经网络之类的ML模型的训练逻辑128。训练逻辑128可以接收一组标记的查询作为输入以训练神经网络的一组节点,如本文进一步描述的。标签本质上可以是描述性的,或者可以捕获一个或多个指标值。例如,每个查询可以被标记为高性能或非高性能以训练ML模型以学习包含在高性能的查询和/或非高性能的查询中的查询表达式之间的模式。
在一些实施例中,ML引擎122包括用于调节和细化模型参数以优化模型准确度的调优逻辑130。例如,调优逻辑130可以使用不同的模型参数集来训练多个候选神经网络模型。调优逻辑130可以确定哪个模型平均产生最低的预测/估计误差并且选择这些参数来评估新的查询。
在一些实施例中,ML引擎122包括用于评估经由编辑器接口输入的新的查询分词序列的估计逻辑132。例如,估计逻辑132可以执行下一个分词预测以预测哪些分词最有可能跟在用户输入的一组分词后面。估计逻辑132可以将训练后的机器学习模型应用于从未在生产和/或测试环境内看到或执行过的查询分词序列。
在一些实施例中,系统100的一个或多个组件(诸如ML引擎122)可以集成到云服务中,云服务诸如软件即服务(SaaS)、平台即服务(PaaS)或web服务。诸如客户端102a和客户端102b之类的客户端可以是web浏览器、移动应用或通信地耦合到网络的其他软件应用。客户端可以使用诸如超文本传输协议(HTTP)和/或互联网协议(IP)套件的其他通信协议之类的一种或多种通信协议与云服务交互。在其他实施例中,组件可以是用户本地可访问的,诸如经由桌面或其他独立应用可访问的。
系统100的组件可以在一个或多个数字设备上实现。术语“数字设备”通常是指包括处理器的任何硬件设备。数字设备可以指执行应用或虚拟机的物理设备。数字设备的示例包括计算机、平板电脑、膝上型电脑、台式机、上网本、服务器、web服务器、网络策略服务器、代理服务器、通用机器、特定功能硬件设备、硬件路由器、硬件交换机、硬件防火墙、硬件防火墙、硬件网络地址转换器(NAT)、硬件负载均衡器、大型机、电视、内容接收器、机顶盒、打印机、移动手持终端、智能手机、个人数字助理(“PDA”)、无线接收器和/或发射器、基站、通信管理设备、路由器、交换机、控制器、接入点和/或客户端设备。
计算机网络和微服务应用相关的附加实施例和/或示例在下面在题为“计算机网络和云网络”的第5.0节和题为“微服务应用”的第6.0节中被描述。
3.0利用机器学习来编辑查询
3.1模型层和数据流示例
在一些实施例中,来自不完整或完整的查询的查询分词被输入到产生推荐编辑和/或完全形成的查询的多层模型的顶层。顶层以下的模型层可以从模型中的其他层接收一个或多个输入并产生一个或多个输出值。模型层可以包括一个或多个模型本身和/或用于生成输出值的其他逻辑。
图2图示了根据一些实施例的包括用于处理不完整的查询的多个层的模型200。如图2所示,模型200包括自然语言处理(NLP)预测层204、嵌入层206和推荐层208。模型200可以包括比图2中所示的组件更多或更少的组件。图2中所示的组件可以在彼此本地或彼此远离。图2中所示的组件可以在软件和/或硬件中实现。每个组件可以分布在多个应用和/或机器上。多个组件可以组合成一个应用和/或机器。关于一个组件描述的操作可以代替地由另一组件执行。
在一些实施例中,模型200接收不完整的查询202并且作为响应生成输出212。不完整的查询202可以包括一个或多个查询分词,诸如SQL命令、子句和/或对象引用。附加地或替代地,模型200可以接收完整的查询作为输入。输出212可以包括一个或多个查询分词以补全或以其他方式添加到不完整的查询202。对于已经完整的查询,输出212可以包括一个或多个查询分词以扩展查询。附加地或替代地,输出212可以包括针对已经被识别为高性能的相似查询的建议。
在一些实施例中,NLP预测层204包括被训练以执行下一个分词预测的ML模型。下一个分词预测可以包括下一个词预测或,在下一个词预测中序列中的下一个查询分词被预测,在下一个语句预测中下一个查询分词序列被预测。在一些实施例中,下一个分词预测产生在被添加到不完整的查询202时形成完整的查询的一个或多个分词。然而,在其他实施例中,如果被添加到不完整的查询202,则一个或多个查询分词可能不形成完全完整的查询但可被生成以快速扩展不完整的查询202。一个或多个查询分词可以包括由NLP预测层204预测的最有可能由用户接下来输入的SQL分词。
在一些实施例中,嵌入层206将NLP预测层204的输出转换为数值向量表示。例如,NLP预测层204可以向嵌入层206提供自动补全不完整的查询202的内部建议。作为响应,嵌入层206可以使用词嵌入模型将自动补全的查询内的查询分词映射到不同的数值。
在一些实施例中,推荐层208从NLP预测层204接收自动补全查询和/或从嵌入层206接收其数值向量表示。推荐层208可以使用数值向量表示来识别满足相似性阈值的查询向量210中的一个或多个。在优选实施例中,余弦相似性可用于计算两个数值查询向量之间的相似性。然而,取决于特定的实现,诸如欧几里德距离之类的其他相似性度量也可被使用。
相似性阈值可以根据要找到多少查询来定义。例如,推荐层208可以被配置为识别如由余弦相似性或另一相似性度量确定的前n个最相似的查询,其中n是正整数。在其他实施例中,推荐层208可以被配置为识别具有超过或以其他方式满足阈值的相似性值的查询。相似查询可以包括不完整查询202中包括的所有查询分词。在其他情况下,如果相似查询与自动补全查询足够相似,则相似查询可以包括查询分词的子集或者甚至不包括查询分词中的任何一个。
在一些实施例中,查询向量210包括一组高性能数据库查询的数值向量表示。高性能数据库查询可与不完整查询202具有相同的模式和/或来自相同的数据库环境。例如,高性能的数据库查询可以来自相同的生产环境。高性能数据库查询集可以包括已被手动和/或自动标记为高性能的查询。数据库环境内的查询可以根据一个或多个性能指标被自动标记或选择。示例指标包括执行时间、CPU利用率、每秒输入/输出(I/O)操作、每秒平均I/O吞吐量以及数据库会话的平均等待时间。如果用于查询的性能指标满足目标数据库环境内的一个或多个性能阈值,则其可被添加到高性能数据库查询的列表。附加地或替代地,数值向量表示可被计算并存储在用于高性能的查询的数值向量表示的列表中。不满足性能阈值的查询可从列表中被排除,以避免推荐具有降低数据库性能风险的SQL表达式或数据库查询。
输出212可以包括自动补全查询、由NLP预测层204预测以添加到不完整查询202的分词以形成自动补全查询的分词子集、和/或满足相似性阈值的一个或多个查询。输出212可以返回到系统100的一个或多个组件。例如,推荐引擎110可以接收输出212并经由编辑器接口106呈现用于补全不完整查询202的推荐。
3.2NLP层训练和架构
在优选实施例中,NLP预测层204包括来自变换器的双向编码器表示(BERT),其根据一组高性能数据库查询被训练以执行用于自动补全不完整查询202的下一个分词预测。BERT是使用变换器模型的双向训练以用于语言建模的一种NLP技术。变换器是使用神经网络来处理诸如查询分词序列之类的顺序数据的深度学习模型。但是,利用双向训练,变换器不需要按次序处理顺序数据。双向语言模型可以捕获对语言上下文的见解以及单向语言模型无法学习的查询分词之间的流动。然而,其他模型可被用来执行下一个分词预测。示例包括递归神经网络(RNN)、序列到序列模型和基于word2vec的神经网络模型。
图3图示了根据一些实施例的包括来自变换器的双向编码器表示的神经网络架构300。神经网络架构300包括输入层302,输入层302包括来自查询的一组输入SQL分词,其可以从完整或不完整的查询中提取。
在一些实施例中,神经网络架构300包括词嵌入层304,其将查询分词转换为ML向量以用于训练或应用ML模型。词嵌入层304可以将输入分词转换为数值向量表示。取决于实现,词嵌入层304可以使用与嵌入层206相同的词嵌入或不同的嵌入。词嵌入层304可以在模型训练期间掩蔽(mask)一个或多个分词。
在一些实施例中,神经网络架构300包括变换器编码器层306。变换器编码器层306可以将从嵌入层206接收的词嵌入变换成一组一个或多个变换器编码。变换器编码器层306生成的示例编码可以包括分词嵌入、语句嵌入和/或位置嵌入。变换器编码器层306可以包括一组一个或多个编码器以生成对应的变换器编码。编码器可以包括自注意力机制,该机制对查询分词相对于彼此的相关性加权以生成变换器编码集。编码器还可以包括前馈神经网络以单独地处理编码。来自一个编码器的编码可以作为输入馈送到另一个编码器。变换器编码器层306可以读取整个查询分词序列,包括每个分词的位置信息,同时允许编码部分地基于查询分词的左和右两侧的查询分词来捕获关于查询分词的信息。因此,变换器编码器层306可以考虑到所有周围的查询分词来学习查询分词的上下文以对不同查询分词序列之间的关系建模。例如,给定具有两个不同SQL分词序列的查询,模型可以学习第二分词序列是随机的还是概率地链接到第一组查询分词。
在一些实施例中,神经网络架构300包括变换器解码器层308。变换器解码器层308内的每个解码器可以包括自注意力机制和前馈神经网络,类似于编码器。附加地,每个解码器可以包括注意力机制以提取关于从变换器编码器层306接收的编码和/或其他解码器的输出的信息。附加地或替代地,变换器解码器层308可以包括一组一个或多个分类节点以产生查询分词(或分词序列)的输出概率。分类节点可以执行线性变换和/或将softmax函数应用于解码器的输出以确定输出概率。
在一些实施例中,一组高性能数据库查询用于训练NLP模型。通过从训练中排除非高性能的查询,BERT(或其他NLP)模型可以仅从不降低数据库性能的查询中学习关系。然而,在其他实施例中,模型可以使用非高性能的查询来训练以确定以避免向用户推荐的查询分词序列。附加地或替代地,在非高性能的查询上训练的模型可被查询编辑器104用来呈现关于要避免的查询(或查询部分)的警告或建议。
图4图示了根据一些实施例的用于训练神经网络模型以为不完整查询预测查询分词的过程400。图4中所示的一个或多个操作可被修改、重新布置或省略。因此,图4中所示的特定操作序列不应被解释为限制一个或多个实施例的范围。
参考图4,过程400接收一组高性能的查询(操作402)。取决于特定的实现,高性能的查询集可以是用于生成查询向量210的相同查询或不同的查询集。
过程400接下来解析高性能查询集以移除别名和绑定变量(操作404)。此步骤可能有助于减少SQL查询中与具有不同别名/绑定变量值相关联的噪音。例如,以下可以是来自查询存储库的高性能SQL查询:
SELECT t.entity_name,z.tenantId,z.me_id,z.mg_name.z.collection_time_utc FROM system#manageable_entities m,system#latest_marker l WHERE m.tenant_id=z.tenant_id AND m.me_id=z.me_id AND t.entity_type='cloud_host_linux'ANDm.me_class='TARGET'AND z.mg_name='HOST_CPU'.
上面的SQL查询然后可以通过解析层被馈送以将查询转换如下:
SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#manageable_entities.me_id=system#latest_marker.me_id AND system#manageable_entities.entity_type=:bind AND system#manageable_entities.me_class=:bind AND system#latest_marker.mg_name=:bind
在一些实施例中,过程400对查询进行分词(操作406)。如前所述,查询分词可以对应于查询的一个或多个部分,包括数据库命令、SQL表达式和包含在其中的对象引用。
在一些实施例中,过程400为每个分词生成词嵌入以训练NLP神经网络模型(操作408)。每个词嵌入可以是唯一识别对应查询分词的数值词向量。在一些实施例中,位置信息可以被包括或以其他方式与指示对应查询分词在查询内的位置的词嵌入相关联。
在一些实施例中,过程400掩蔽用于训练NLP神经网络模型的查询的至少一个子集中的一个或多个分词(操作410)。过程400可以随机选择具有[MASK(掩蔽)]分词的查询分词的阈值百分比。取决于特定的实现,其他掩蔽技术也可被使用。
在一些实施例中,过程400根据训练数据集中每个查询的查询分词,生成来自变换器的双向编码器表示(操作412)。变换器编码可以包括对对应查询分词的唯一方面进行编码的分词嵌入、对查询的唯一方面作为整体进行编码的语句嵌入、和/或对关于查询分词的相对于该查询分词的左和右两侧的查询分词的位置信息进行编码的位置嵌入。
在一些实施例中,过程400计算用于掩蔽的查询分词和/或不同查询分词序列之间的关系的概率(操作414)。概率可由变换器解码器层308计算,诸如通过使用一组解码器并应用如前所述的分类函数来计算。诸如递归神经网络和基于word2vec的神经网络之类的其他模型也可以通过执行通过神经网络的前向传播来根据输入ML向量计算概率。
在一些实施例中,过程400调整NLP神经网络模型内的一个或多个节点的权重和偏置以在将模型应用于测试数据集时最小化误差函数(操作416)。对于BERT模型,梯度下降可被用来最小化模型的预测误差,这可以使用softmax函数计算。利用梯度下降,神经网络节点的权重和偏置改变与误差梯度成比例,这可以基于当应用模型来对一组测试查询执行下一个分词预测时预测误差中的差异来确定。权重和偏置可以在与变换器编码器层306和/或变换器解码器层308相关联的神经网络节点内变化。
在一些实施例中,一旦误差已被最小化,过程400就存储权重和偏置集(操作418)。存储的权重和偏置值可以应用于无论是完整的还是不完整的新的查询,以执行下一个分词预测。
3.3用于将查询转换为数值向量的嵌入层
在一些实施例中,嵌入层206使用词嵌入模型来为一组高性能的查询中的每个查询生成数值查询表示。诸如连续词袋和连续跳元模型之类的一些词嵌入模型被设计为基于通过自然语言处理确定的语言上下文将词映射到实值向量。然而,数据库查询内的词通常不限于文学语言,而且还涉及可能专用于特定计算应用领域的结构。例如,SQL是用于在关系数据库管理系统中管理数据的一种域特定的计算机语言。诸如SELECT之类的SQL查询中的词的上下文通常与文学上下文中的相同词有非常不同的含义。
在一些实施例中,嵌入层206包括被训练以基于上下文相似性将查询分词映射到实值向量的词嵌入模型。嵌入层206可以包括使用一组查询训练的词袋或跳元模型,该一组查询可以不同于高性能的查询集。然而,代替语言上下文或除语言上下文之外,嵌入层206可以基于查询上下文(诸如与词相关联的功能、结构和关系属性)来训练模型。具有相似查询上下文的查询分词可被映射到在向量空间中比不太相似的查询分词的向量靠得更近的向量。换句话说,相比于不相似的分词,查询分词的向量可能与具有更相似的查询上下文的分词的向量空间中的另一个向量具有更小的欧几里得距离和/或更大的余弦相似性。
功能属性可以基于为给定词执行的一个或多个功能操作来确定。例如,数据库命令(例如,SELECT、UPDATE、DELETE和CREATE TABLE等)和子句/谓词(例如,WHERE x=1)对于给定的SQL查询传达某些功能含义。在训练和应用ML模型时,这些功能属性可被考虑在内。因此,具有相似功能上下文的查询分词可被映射到在向量空间内定位得更近的向量。
结构和关系属性可以基于数据库内的已学习和/或预定义的模式来确定。例如,数据库模式和/或其他元数据可以定义数据库对象之间的关系。在其他情况下,关系可以基于访问模式来学习,诸如联接和/或其他查询操作中的频繁共现。相比于对于不相关的对象,对应于相关数据库对象的查询分词可以更紧密地映射在一起。附加地或替代地,其他信息(诸如数据库对象的大小(例如,行数)、行的唯一性和/或其他对象属性)在训练模型时可以被使用。
一旦被训练,词嵌入模型可用于为查询分词生成数值向量表示。例如,查询分词x1可以映射到词嵌入向量110、查询分词x2映射到001以及查询分词x3映射到111。在此示例中,查询分词x1和x3靠得更近,这指示查询上下文中比分词x2更大的相似性。注意,词嵌入向量的长度可能长得多,并且可能取决于特定的实现而有所不同。
给定的查询可被表示为一组词嵌入向量。例如,包括四个查询分词的查询可以通过连结针对每个分词的四个对应词嵌入向量来表示。如本文进一步描述的,查询表示的长度可以使用填充和/或替换来归一化,以促进模型200的处理。
图5图示了根据一些实施例的用于将数据库查询转换为数值向量的过程500。图5中所示的一个或多个操作可被修改、重新布置或省略。因此,图5中所示的特定操作序列不应被解释为限制一个或多个实施例的范围。
参照图5,过程500接收一组高性能的数据库查询(操作502)。如前所述,高性能的数据库查询可以与经由编辑器接口106提交的查询(诸如不完整的查询202)具有相同的模式和/或来自相同的环境。
在一些实施例中,过程500解析查询并移除查询内的别名(操作504)。查询可以通过关于以上操作404描述的相同解析层被馈送。
在一些实施例中,过程500生成在高性能查询中使用的唯一查询分词的列表并且将唯一数字指派给每个唯一查询分词(操作506)。例如,下表显示了从查询中提取的唯一词与数值指派之间的示例映射:
在一些实施例中,指派给每个查询分词的数值可以基于不同查询表达式之间的结构和/或关系属性来确定,如前所述。训练后的ML模型可用于确定每个查询分词的数字指派。因此,在上下文中更相似的分词可以被指派距离更近的值。在其他实施例中,数字可被任意地指派。
在一些实施例中,过程500选择查询以转换成数值向量(操作508)。过程500可以以任何预定义的或任意次序遍历查询。
在一些实施例中,过程通过用唯一数字表示替换每个分词来为所选查询生成数值向量(操作510)。例如,基于上面的数值指派,下面的SQL查询:
SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#manageable_entities.me_id=system#latest_marker.me_id AND system#latest_marker.mg_name=:bind可以被转换为以下查询向量:[1,9,7,10,8,11,7,12,8,11,7,13,8,11,7,14,8,11,7,15,2,9,8,11,3,9,7,12,6,11,7,12,4,9,6,13,6,11,7,13,4,11,7,14,6,5]。
在一些实施例中,过程500确定是否填充数值查询向量(操作512)。数值向量可被填充以创建相等长度的查询表示,这在计算系统内执行相似性计算时可能更容易处理。阈值长度可以基于高性能查询集中最长的查询来设置。例如,如果最长查询有100个分词,则长度100可被设置。然而,比高性能查询集中的最长查询更长的其他阈值可被用来容纳可能随后被添加的更长查询。
如果数值向量表示在长度上比阈值短,则过程500填充查询(操作514)。在一些实施例中,过程500通过添加零来左填充查询。例如,上面的向量表示可以被左填充如下:[…0,0,0,0,0,0,0,0,0,0,1,9,7,10,8,11,7,12,8,11,7,13,8,11,7,14,8,11,7,15,2,9,8,11,3,9,7,12,6,11,7,12,4,9,6,13,6,11,7,13,4,11,7,14,6,5]。添加的零的数量可以取决于向量的长度而有所不同,其中添加的零越多,初始查询向量越短以获得等长的归一化查询向量。
在一些实施例中,过程500确定是否有剩余的查询要处理(操作516)。如果存在剩余的查询,则过程500返回到操作508以生成用于所选择的下一个查询的数值向量。
一旦所有查询已被处理,过程500就存储高性能查询集的数值查询向量的列表(操作518)。查询向量可用于执行如本文进一步描述的相似性计算。
3.4模型调优
ML引擎122可以被配置为调优一个或多个模型超参数值以优化模型性能。图6图示了根据一些实施例的用于调优机器学习模型的过程600。图6中所示的一个或多个操作可被修改、重新布置或省略。因此,图6中所示的特定操作序列不应被解释为限制一个或多个实施例的范围。
调优过程包括改变一个或多个超参数值(操作602)。此上下文中的超参数指的是在训练开始之前设置的值。基于BERT的神经网络模型的示例超参数包括学习率、模型的加权衰减和训练轮次(epoch)的数量。超参数属性和它们变化的方式可以取决于特定的实现。在其他实施例中,一组默认的超参数值可以在不调优的情况下被使用。
在一些实施例中,过程600使用新的超参数值训练候选模型(操作604)。例如,ML引擎122可以根据图4中描绘的过程在NLP预测层204处使用新的超参数值来训练神经网络。
在一些实施例中,过程600为候选模型确定估计误差(操作606)。为了确定估计误差,过程可以为测试数据集生成估计。测试数据集可以包括未用于训练候选模型但对于其标签已知的示例。调优过程可以使用基于(一个或多个)新的超参数值训练后的候选模型为测试数据集中的相应示例生成预测,并将其与相应的已知标签进行比较。测试数据集中示例的估计误差可以作为估计标签和已知标签之间差异的函数来计算。候选模型的估计误差可被计算为跨测试数据集中所有示例的估计误差的平均。
在一些实施例中,过程600确定是否继续调优(操作608)。例如,调优过程可以遍历超参数值的各种预定义组合。附加地或替代地,估计误差阈值可被设置,其中如果候选模型中的一个或多个候选模型的估计误差低于阈值则调优可以停止。
在一些实施例中,过程600选择具有最低估计误差的候选模型(操作610)。所选择的模型然后可用于根据对应的超参数值和经由训练过程获得的对应的单元(cell)参数来评估新文档。
4.0使用机器学习的实时查询创作和编辑
在一些实施例中,查询编辑器104可以使用训练后的模型200来指导数据库查询的创作、编辑和优化。当用户经由编辑器接口106键入查询时,查询编辑器104可以实时地向用户提供提示或建议。例如,用户可以键入“SELECT”并立即被呈现有用于补全查询的一组建议。用户可以选择建议之一或继续键入附加的查询分词。当用户输入附加的分词时,经由编辑器接口106呈现的建议可以通过将模型重新应用到新的查询分词序列来更新。附加地或替代地,查询编辑器104可以被配置为仅在用户已经明确地请求提示或建议之后才提供提示或建议。查询编辑器104可以给用户选项以改变推荐被呈现的模式或者默认模式可以取决于实现来实现。
图7图示了根据一些实施例的用于在查询被编写时实时编辑和优化查询的过程700。图7中所示的一个或多个操作可被修改、重新布置或省略。因此,图7中所示的特定操作序列不应被解释为限制一个或多个实施例的范围。
参照图7,过程700接收一个或多个输入查询分词(操作702)。然后,用户可以请求用于编辑、补全、扩展或以其他方式扩充SQL的建议,诸如通过点击“建议”按钮或编辑器接口106中的另一个用户界面元素。在其他实施例中,当用户键入SQL时建议可以自动生成和呈现。
在一些实施例中,过程700用一个或多个输入查询分词预测按顺序的下一组一个或多个查询分词以补全查询(操作704)。过程700可以使用经过训练后的NLP预测模型(诸如先前描述的基于BERT的神经网络)来执行预测。一个或多个查询分词集可以被转换为ML向量,其可以通过变换器编码层306被馈送,该变换器编码层306在通过神经网络节点的正向传递上应用权重和/或偏置集以生成分词编码。然后变换器编码可以通过变换器解码层308馈送,该变换器解码层308还可以应用一组权重和偏置、线性变换和/或softmax函数来生成下一个分词预测。如先前所述,其他模型,诸如递归神经网络和基于word2vec的神经网络,可用于在此阶段生成预测。
在一些实施例中,过程700基于高性能的数值查询表示来识别满足相对于完整的查询的相似性阈值的一个或多个附加查询(操作706)。过程700可以通过将NLP模型输出的自动补全的查询转换成数值查询向量来识别查询。然后可以在自动补全查询的向量表示和高性能查询集的向量表示之间计算余弦相似性、欧几里得距离和/或其他相似性度量。
在一些实施例中,过程700可以跳过操作706。在此情况下,过程700基于NLP模型的输出生成自动补全的查询但是可以在不基于查询向量比较找到相似的查询的情况下继续进行。取决于特定的实现,用户可被允许在不同模式之间选择,或者单个模式可以在应用内实现。
在一些实施例中,过程700向用户呈现完整的查询和/或一个或多个附加查询(操作708)。在一些实施例中,自动补全查询和相似查询两者被呈现给用户。然而,在其他实施例中,仅自动补全查询或从预定义查询列表中提取的相似查询可被呈现。取决于训练后的NLP模型的输出,自动补全的查询可能包括或可能不包括在高性能查询列表中。
在一些实施例中,过程700接收选择和/或(一个或多个)附加分词(操作710)。例如,用户可选择经由编辑器接口106呈现的查询或继续手动编辑查询。在其他情况下,用户可以继续如当前创作的查询而无需选择查询或添加进一步的分词。
在一些实施例中,过程700确定是否执行和/或存储查询(操作712)。例如,用户可以请求执行所选择的查询。作为响应,查询可被传递给查询引擎112以供执行。在其他情况下,用户可以请求用于编辑查询的进一步建议。在此情况下,过程700可以返回到操作704以基于所选择的查询中的新的分词组合生成更新的推荐。用户可以多次遍历此过程以经由编辑器接口106扩充或以其他方式修改查询。
一旦用户已经完成了查询,过程700就执行和/或存储查询(操作714)。上述技术允许用户从多个高性能查询之中来选择,这有助于避免使用降低数据库性能的代价高昂的SQL表达式或组合。此外,选择可以有助于加快查询创作,因为用户不必手动键入SQL语句,同时防止打字和句法错误。
作为过程700的示例,用户可以经由编辑器接口106输入以下不完整的SQL:
SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE
过程700可被运行以生成并呈现以下推荐的SQL查询:
1.SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id
2.SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.me_id=system#latest_marker.me_id
3.SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#manageable_entities.me_id=system#latest_marker.me_id
4.SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#manageable_entities.me_id=system#latest_marker.me_id AND system#latest_marker.collection_time_utc>:bind
5.SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#latest_marker.mg_name=:bind
响应于被呈现有上述建议,用户可以选择以下查询:
SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#manageable_entities.me_id=system#latest_marker.me_id
用户随后可以请求用于所选择查询的附加建议,或者建议可以响应于选择而被自动触发。例如,查询编辑器104可以呈现以下建议来扩展上面选择的查询示例:
1.SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#manageable_entities.me_id=system#latest_marker.me_id AND system#latest_marker.mg_name=:bind AND system#manageable_entities.tenant_id=:bind
2.SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#manageable_entities.me_id=system#latest_marker.me_id AND system#manageable_entities.me_id==:bind AND system#manageable_entities.tenant_id=:bind
3.SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#manageable_entities.me_id=system#latest_marker.me_id AND system#manageable_entities.me_id==:bind AND system#manageable_entities.tenant_id=:bind AND system#latest_marker.mg_name=:bind
4.SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#manageable_entities.me_id=system#latest_marker.me_id AND system#manageable_entities.entity_name==:bind AND system#latest_marker.mg_name=:bind AND system#manageable_entities.tenant_id=:bind
5.SELECT system#manageable_entities.entity_name,system#latest_marker.tenantId,system#latest_marker.me_id,system#latest_marker.mg_name,system#latest_marker.collection_time_utc FROM system#manageable_entities,system#latest_marker WHERE system#manageable_entities.tenant_id=system#latest_marker.tenant_id AND system#manageable_entities.me_id=system#latest_marker.me_id AND system#manageable_entities.entity_name==:bind AND system#manageable_entities.tenant_id=:bind
然后用户可以选择上面的SQL之一,并通过用变量替换绑定占位符来完成它。一旦完成,查询就可被执行和/或保存供以后使用。
5.0计算机网络和云网络
在一些实施例中,计算机网络提供一组节点之间的连接性。节点可以在在彼此本地和/或彼此远离。节点由一组链路连接。链路的示例包括同轴电缆、非屏蔽双绞线、铜缆、光纤和虚拟链路。
节点的子集实现计算机网络。这样的节点的示例包括交换机、路由器、防火墙和网络地址转换器(NAT)。节点的另一个子集使用计算机网络。这样的节点(也被称为“主机”)可以执行客户端进程和/或服务器进程。客户端进程做出对计算服务(诸如,特定应用的执行和/或特定数据量的存储)的请求。服务器进程通过执行请求的服务和/或返回对应数据来响应。
计算机网络可以是物理网络,包括通过物理链路连接的物理节点。物理节点是任何数字设备。物理节点可以是特定功能的硬件设备,诸如硬件交换机、硬件路由器、硬件防火墙和硬件NAT。附加地或替代地,物理节点可以是被配置为执行各种虚拟机和/或执行相应功能的应用的通用机器。物理链路是连接两个或更多个物理节点的物理介质。链路的示例包括同轴电缆、非屏蔽双绞电缆、铜缆和光纤。
计算机网络可以是覆盖网络。覆盖网络是在另一个网络(诸如,物理网络)之上实现的逻辑网络。覆盖网络中的每个节点对应于底层网络中的相应节点。因此,覆盖网络中的每个节点都与覆盖地址(用于寻址覆盖节点)和底层地址(用于寻址实现覆盖节点的底层节点)两者相关联。覆盖节点可以是数字设备和/或软件进程(诸如,虚拟机、应用实例或线程)。连接覆盖节点的链路被实现为通过底层网络的隧道。隧道任一端的覆盖节点将它们之间的底层多跳路径视为单个逻辑链路。隧道连接是通过封装和解封装来执行的。
在一些实施例中,客户端可以在计算机网络本地和/或远离计算机网络。客户端可以通过其他计算机网络(诸如专用网络或互联网)访问计算机网络。客户端可以使用诸如HTTP之类的通信协议将请求传送到计算机网络。请求通过接口(诸如客户端接口(诸如web浏览器)、程序接口或API)通信。
在一些实施例中,计算机网络提供客户端和网络资源之间的连接性。网络资源包括被配置为执行服务器进程的硬件和/或软件。网络资源的示例包括处理器、数据存储装置、虚拟机、容器和/或软件应用。网络资源在多个客户端之间共享。客户端彼此独立地从计算机网络请求计算服务。网络资源在按需的基础上被动态指派给请求和/或客户端。被指派给每个请求和/或客户端的网络资源可以基于例如(a)特定客户端请求的计算服务,(b)特定租户请求的聚合计算服务,和/或(c)计算机网络的请求的聚合计算服务来按放大或缩小。这样的计算机网络可以被称为“云网络”。
在一些实施例中,服务提供商向一个或多个最终用户提供云网络。云网络可以实现各种服务模型,包括但不限于软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)。在SaaS中,服务提供商为最终用户提供使用在网络资源上执行的服务提供商的应用程序的能力。在PaaS中,服务提供商为最终用户提供将自定义应用程序部署到网络资源上的能力。自定义应用程序可以使用服务提供商支持的编程语言、库、服务和工具来创建。在IaaS中,服务提供商为最终用户提供供应由网络资源提供的处理、存储、网络和其他基础计算资源的能力。任何任意应用程序(包括操作系统)可以被部署在网络资源上。
在一些实施例中,可以通过计算机网络实现各种部署模型,包括但不限于私有云、公共云和混合云。在私有云中,网络资源被供应用于由一个或多个实体的特定组独占使用(如本文使用的术语“实体”是指公司、组织、个人或其他实体)。网络资源可以位于特定实体组的场所本地和/或远离特定实体组的场所。在公共云中,云资源被供应用于彼此独立的多个实体(也被称为“租户”或“客户”)。计算机网络及其网络资源由对应于不同租户的客户端访问。这样的计算机网络可以被称为“多租户计算机网络”。若干租户可以在不同时间和/或同时使用相同的特定网络资源。网络资源可以位于租户的场所本地和/或远离租户的场所。在混合云中,计算机网络包括私有云和公共云。私有云和公共云之间的接口允许数据和应用的可移植性。存储在私有云处的数据和存储在公共云处的数据可以通过接口交换。在私有云处实现的应用和在公共云处实现的应用可以彼此具有依赖关系。从私有云处的应用到公共云处的应用的调用(反之亦然)可以通过接口执行。
在一些实施例中,多租户计算机网络的租户彼此独立。例如,一个租户的业务或操作可能与另一个租户的业务或操作分开。不同的租户对计算机网络可能要求不同的网络需求。网络需求的示例包括处理速度、数据存储量、安全需求、性能需求、吞吐量需求、延迟需求、弹性需求、服务质量(QoS)需求、租户隔离和/或一致性。相同计算机网络可能需要实现不同租户要求的不同网络需求。
在一些实施例中,在多租户计算机网络中,租户隔离被实现以确保不同租户的应用和/或数据不彼此共享。各种租户隔离方法可被使用。
在一些实施例中,每个租户都与租户ID相关联。多租户计算机网络的每个网络资源都被标记有租户ID。仅当租户和特定网络资源与相同租户ID相关联时,租户才被允许访问特定网络资源。
在一些实施例中,每个租户都与租户ID相关联。由计算机网络实现的每个应用都被标记有租户ID。附加地或替代地,由计算机网络存储的每个数据结构和/或数据集都被标记有租户ID。仅当租户和特定应用、数据结构和/或数据集与相同租户ID相关联时,租户才被允许访问特定应用、数据结构和/或数据集。
例如,由多租户计算机网络实现的每个数据库都可以被标记有租户ID。只有与对应租户ID相关联的租户可以访问特定数据库的数据。作为另一个示例,由多租户计算机网络实现的数据库中的每个条目可以被标记有租户ID。只有与对应租户ID相关联的租户可以访问特定条目的数据。但是,数据库可由多个租户共享。
在一些实施例中,订阅列表指示哪些租户有权访问哪些应用。对于每个应用,被授权访问该应用的租户的租户ID列表被存储。仅当租户的租户ID被包括在对应于特定应用的订阅列表中时,租户才被允许访问特定应用。
在一些实施例中,对应于不同租户的网络资源(诸如数字设备、虚拟机、应用实例和线程)与由多租户计算机网络维护的租户特定覆盖网络隔离。作为示例,来自租户覆盖网络中任何源设备的分组可能仅被发送到相同租户覆盖网络内的其他设备。封装隧道被用于禁止从租户覆盖网络上的源设备到其他租户覆盖网络中的设备的任何传输。具体地,从源设备接收的分组被封装在外部分组内。外部分组从(与租户覆盖网络中的源设备通信的)第一封装隧道端点被发送到(与租户覆盖网络中的目的地设备通信的)第二封装隧道端点。第二封装隧道端点对外部分组进行解封装以获得由源设备发送的原始分组。原始分组从第二封装隧道端点被发送到相同特定覆盖网络中的目的地设备。
6.0微服务应用
根据一些实施例,本文描述的技术在微服务架构中实现。此上下文中的微服务是指设计为可独立部署的软件逻辑,其具有可以逻辑耦合到其他微服务以构建各种各样的应用的端点。使用微服务构建的应用与单体应用不同,单体应用被设计为单个固定单元并且通常包括单个逻辑可执行文件。对于微服务应用,不同的微服务可以独立部署为单独的可执行文件。微服务可以使用HTTP消息和/或根据其他通信协议经由API端点通信。微服务可以单独被管理和更新、用不同的语言编写并独立于其他微服务执行。
微服务提供了管理和构建应用中的灵活性。在不改变微服务的源代码的情况下,不同的应用可以通过连接不同的微服务集来构建。因此,微服务充当可以以各种各样方式布置以构建不同的应用的逻辑构建块。微服务可以提供监控服务,当暴露给微服务管理器的一组触发事件中的触发事件发生时,该监控服务通知微服务管理器(诸如If-This-Then-That(如果这样那么那样)(IFTTT)、Zapier或Oracle自助服务自动化(OSSA))。针对应用暴露的微服务可以替代地或附加地提供基于从微服务管理器接收的数据在应用中执行动作的动作服务(通过传入值、将动作连接到其他触发器和/或从微服务管理器中的其他动作传递的数据来经由微服务管理器可控制和可配置)。微服务触发器和/或动作可以链接在一起以形成发生在可选的不同应用中的动作配方(recipe),否则这些应用彼此不知道或没有控制或依赖关系。这些受管理的应用可被验证或插入到微服务管理器中,例如,使用用户向管理器提供的应用凭据,而无需在每次受管理的应用被单独使用或与其他应用组合使用时重新进行验证。
在一些实施例中,微服务可以经由GUI连接。例如,微服务可以显示为窗口、框架、GUI的其他元素内的逻辑块。用户可以将微服务拖放到用于构建应用的GUI区域中。用户可以使用有向箭头或任何其他GUI元素将一个微服务的输出连接到另一个微服务的输入。应用构建器可以运行验证测试以确认输出和输入兼容(例如,通过检查数据类型、大小限制等)。
触发器
根据一些实施例,上述技术可以封装到微服务中。换句话说,微服务可以基于上述技术触发通知(进入微服务管理器以供其他插入的应用(这里被称为“目标”微服务)可选使用)和/或可以表示为GUI块并连接到一个或多个其他微服务。触发条件可以包括值的绝对或相对阈值,和/或要分析的数据量或持续时间的绝对或相对阈值,使得每当插入的微服务应用检测到阈值被越过,到微服务管理器的触发发生。例如,当微服务应用检测到值已越过触发阈值时,用户可以请求到微服务管理器的触发。
在一些实施例中,触发器在被满足时可以输出数据供目标微服务消耗。在其他实施例中,触发器在被满足时输出指示触发器已被满足的二进制值,或输出触发条件针对其被满足的字段的名称或其他上下文信息。附加地或替代地,目标微服务可以连接到一个或多个其他微服务,使得警报被输入到其他微服务。其他微服务可以基于上述技术执行响应动作,包括但不限于部署附加资源、调整系统配置和/或生成GUI。
动作
在一些实施例中,插入的微服务应用可以向微服务管理器暴露动作。暴露的动作可以接收数据或数据对象的标识或数据的位置作为输入,这使得数据被移动到数据云中。
在一些实施例中,暴露的动作可以接收增加或减少现有警报阈值的请求作为输入。输入可以识别现有的应用内警报阈值以及是否增加或减少、或删除阈值。附加地或替代地,输入可以请求微服务应用来创建新的应用内警报阈值。应用内警报可以在登录到应用时触发对用户的警报,或者可以使用微服务应用本身内可用的默认或用户选择的警报机制而不是通过插入微服务管理器的其他应用来触发对用户的警报。
在一些实施例中,微服务应用可以基于识别、定位或提供历史数据并且定义所请求输出的程度或范围的输入来生成并提供输出。在被触发时,动作导致微服务应用提供、存储或显示输出,例如,作为数据模型或作为描述数据模型的聚合数据。
7.0硬件概述
根据一些实施例,本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行技术,或者可以包括被永久编程以执行技术的数字电子设备,诸如一个或多个专用集成电路(ASIC)、现场可编程门阵列(FPGA)或网络处理单元(NPU),或者可以包括被编程为根据固件、存储器、其他存储装置或组合中的程序指令来执行技术的一个或多个通用硬件处理器。这样的专用计算设备还可以将自定义的硬连线逻辑、ASIC、FPGA或NPU与自定义的编程相结合来完成技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备或并入了硬连线和/或程序逻辑以实现技术的任何其他设备。
例如,图8是图示了实施例可以在其上实现的计算机系统800的框图。计算机系统800包括总线802或用于传送信息的其他通信机制,以及与总线802耦合以用于处理信息的硬件处理器804。硬件处理器804可以是例如通用微处理器。
计算机系统800还包括耦合到总线802的主存储器806,诸如随机存取存储器(RAM)或其他动态存储设备,以用于存储要由处理器804执行的信息和指令。主存储器806还可以用于在要由处理器804执行的指令的执行期间存储临时变量或其他中间信息。这样的指令当被存储在处理器804可访问的非暂时性存储介质中时,使计算机系统800成为被自定义以执行指令中指定的操作的专用机器。
计算机系统800还包括耦合到总线802的只读存储器(ROM)808或其他静态存储设备,以用于为处理器804存储静态信息和指令。诸如磁盘或光盘之类的存储设备810被提供并耦合到总线802,以用于存储信息和指令。
计算机系统800可以经由总线802被耦合到显示器812,诸如阴极射线管(CRT)或发光二极管(LED)监视器,用于向计算机用户显示信息。可以包括字母数字键和其他键的输入设备814被耦合到总线802,用于将信息和命令选择传送到处理器804。另一种类型的用户输入设备是光标控件816(诸如鼠标、轨迹球或用于将方向信息和命令选择传送到处理器804并用于控制显示器812上的光标移动的光标方向键)。输入设备814通常在两个轴(第一轴(例如,x)和第二轴(例如,y))中具有两个自由度,这允许设备指定平面中的位置。
计算机系统800可以使用自定义的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑(它们与计算机系统结合使得计算机系统800成为专用机器或将其编程为专用机器)来实现本文描述的技术。根据一些实施例,本文的技术由计算机系统800响应于处理器804执行包含在主存储器806中的一个或多个指令的一个或多个序列而执行。这样的指令可以从另一存储介质(诸如存储设备810)被读入主存储器806。包含在主存储器806中的指令序列的执行导致处理器804执行本文描述的处理步骤。在替代实施例中,可以代替或结合软件指令使用硬连线电路。
本文使用的术语“存储介质”是指存储导致机器以具体方式操作的数据和/或指令的任何非暂时性介质。这样的存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备810。易失性介质包括动态存储器,诸如主存储器806。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或盒式磁带、内容可寻址存储器(CAM)和三态内容可寻址存储器(TCAM)。
存储介质不同于传输介质但可以与传输介质结合使用。传输介质参与在存储介质之间转移信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线802的电线。传输介质还可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的声波或光波。
将一个或多个指令的一个或多个序列携带到处理器804以用于执行可能涉及各种形式的介质。例如,指令最初可以被携带在远程计算机的磁盘或固态驱动器上。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过网线(诸如电话线、光纤电缆或同轴电缆)发送指令。计算机系统800本地的调制解调器可以在网线上接收数据并使用红外线发射器将数据转换成红外线信号。红外线检测器可以接收红外线信号中携带的数据,并且适当的电路可以将数据放置在总线802上。总线802将数据携带到主存储器806,处理器804从主存储器806检索并执行指令。主存储器806接收的指令在由处理器804执行之前或之后可以可选地被存储在存储设备810上。
计算机系统800还包括耦合到总线802的通信接口818。通信接口818提供到被连接到本地网络822的网络链路820的双向数据通信耦合。例如,通信接口818可以是集成服务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或提供到对应类型电话线的数据通信连接的调制解调器。作为另一个示例,通信接口818可以是提供到兼容LAN的数据通信连接的局域网(LAN)卡。无线链路也可被实现。在任何这样的实现中,通信接口818发送和接收携带表示各种类型的信息的数字数据流的电、电磁或光信号。
网络链路820通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路820可以提供通过本地网络822到主机计算机824或到由互联网服务提供商(ISP)826操作的数据设备的连接。ISP 826继而通过现在通常被称为“互联网”828的全球分组数据通信网络提供数据通信服务。本地网络822和互联网828两者都使用携带数字数据流的电、电磁或光信号。通过各种网络的信号和网络链路820上的以及通过通信接口818的信号(这些信号将数字数据携带到计算机系统800以及从计算机系统800携带数字数据)是传输介质的示例形式。
计算机系统800可以通过(一个或多个)网络、网络链路820和通信接口818发送消息和接收数据,包括程序代码。在互联网示例中,服务器830可以通过互联网828、ISP 826、本地网络822和通信接口818发送对于应用程序的请求代码。
接收到的代码可以在其被接收到时由处理器804执行,和/或被存储在存储设备810或其他非易失性存储装置中以用于稍后执行。
8.0杂项;扩展
实施例涉及一种具有一个或多个设备的系统,该一个或多个设备包括硬件处理器并且被配置为执行本文描述的和/或在以下任何权利要求中记载的任何操作。
在一些实施例中,一种非暂时性计算机可读存储介质包括指令,该指令当由一个或多个硬件处理器执行时,导致执行本文描述的和/或在任何权利要求中记载的任何操作。
本文描述的特征和功能的任何组合可以根据一个或多个实施例来使用。在前述说明书中,实施例已经参考可能随实现而改变的许多具体细节被描述。因此,说明书和附图被认为是说明性的而不是限制性的。本发明范围的唯一和排他性指示物,以及申请人旨在作为本发明范围的内容,是以这样的权利要求发布的具体形式从本申请所发布的权利要求集合的字面和等效范围,包括任何后续更正。

Claims (13)

1.一种方法,包括:
从用户接收包括第一组一个或多个查询分词的不完整的查询;
响应于接收到所述不完整的查询,由神经网络模型至少部分地基于第一组一个或多个查询分词生成对第二组一个或多个查询分词的预测以补全所述不完整的查询以形成完整的查询;
识别满足相对于所述完整的查询的相似性阈值的一组一个或多个查询;以及
向所述用户呈现所述完整的查询以及满足相对于所述完整的查询的所述相似性阈值的所述一组一个或多个查询。
2.如权利要求1所述的方法,还包括:接收识别与所述完整的查询或来自所述一组一个或多个查询中的查询之一对应的选择的查询的输入;响应于接收到所述输入,执行所述选择的查询。
3.如权利要求1所述的方法,还包括:接收识别与所述完整的查询或来自所述一组一个或多个查询中的查询之一对应的选择的查询的输入;响应于接收到所述输入,由所述神经网络模型至少部分地基于所述选择的查询中的分词生成对第三组一个或多个查询分词的第二预测,以添加到所述选择的查询以用于扩充所述选择的查询。
4.如权利要求1所述的方法,还包括:使用已经被标记为高性能的一组查询来训练所述神经网络。
5.如权利要求4所述的方法,其中标记的查询的至少子集具有域特定标记,所述域特定标记指示所述子集在应用正在其中执行的特定域内是高性能的。
6.如权利要求4所述的方法,其中所述查询基于与在计算环境内执行所述查询相关联的运行时性能指标被自动标记。
7.如权利要求1所述的方法,其中所述神经网络模型包括来自变换器的双向编码器表示。
8.如权利要求1所述的方法,其中第一组一个或多个分词和第二组一个或多个分词包括结构化查询语言表达式。
9.如权利要求1所述的方法,其中识别满足相对于所述完整的查询的相似性阈值的所述一组一个或多个查询包括至少基于第一组一个或多个查询分词和第二组一个或多个查询分词为所述完整的查询生成特征向量;以及将所述特征向量与多个其他特征向量进行比较,以识别具有最接近所述完整的查询的所述特征向量的对应特征向量的至少一个其他查询。
10.如权利要求1所述的方法,其中所述完整的查询包括第一组一个或多个查询分词;以及其中所述一组一个或多个查询中的至少一个查询不包括第一组一个或多个查询分词中的至少一个查询分词。
11.一种存储指令的非暂时性计算机可读存储介质,所述指令当由一个或多个硬件处理器执行时,引发如权利要求1-10中任一项所述的操作的执行。
12.一种包括至少一个设备的系统,所述至少一个设备包括硬件处理器,所述系统被配置为执行如权利要求1-10中任一项所述的操作。
13.一种包括用于执行如权利要求1-10中任一项所述的操作的装置的系统。
CN202180091824.2A 2020-12-23 2021-11-30 使用基于神经网络的机器学习的智能查询编辑器 Pending CN116745758A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/133,278 US11704307B2 (en) 2020-12-23 2020-12-23 Intelligent query editor using neural network based machine learning
US17/133,278 2020-12-23
PCT/US2021/061212 WO2022140020A1 (en) 2020-12-23 2021-11-30 Intelligent query editor using neural network based machine learning

Publications (1)

Publication Number Publication Date
CN116745758A true CN116745758A (zh) 2023-09-12

Family

ID=79927160

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180091824.2A Pending CN116745758A (zh) 2020-12-23 2021-11-30 使用基于神经网络的机器学习的智能查询编辑器

Country Status (4)

Country Link
US (1) US11704307B2 (zh)
EP (1) EP4248333A1 (zh)
CN (1) CN116745758A (zh)
WO (1) WO2022140020A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117130645A (zh) * 2023-10-25 2023-11-28 山东大学 基于大型语言模型和补全引擎的自动程序修复方法及系统

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11941020B2 (en) * 2021-02-26 2024-03-26 Micro Focus Llc Displaying query results using machine learning model-determined query results visualizations
US20230029196A1 (en) * 2021-07-22 2023-01-26 XRSpace CO., LTD. Method and apparatus related to sentence generation
US11868756B2 (en) * 2021-08-10 2024-01-09 Paypal, Inc. Compute platform for machine learning model roll-out
US20230237053A1 (en) * 2022-01-27 2023-07-27 Intuit Inc. Intelligent query auto-completion systems and methods

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108648A (en) 1997-07-18 2000-08-22 Informix Software, Inc. Optimizer with neural network estimator
US10838957B2 (en) 2010-06-17 2020-11-17 Microsoft Technology Licensing, Llc Slicing relational queries using spool operators
US9477782B2 (en) * 2014-03-21 2016-10-25 Microsoft Corporation User interface mechanisms for query refinement
CN110574021B (zh) 2017-04-29 2023-10-13 谷歌有限责任公司 使用经过训练的生成模型生成查询变体
US10599719B2 (en) 2018-06-13 2020-03-24 Stardog Union System and method for providing prediction-model-based generation of a graph data model
US20200349161A1 (en) 2019-04-30 2020-11-05 Microsoft Technology Licensing, Llc Learned resource consumption model for optimizing big data queries
US12008456B2 (en) 2019-06-28 2024-06-11 Intel Corporation Methods, apparatus, systems and articles of manufacture for providing query selection systems
US11593334B2 (en) 2019-08-01 2023-02-28 Teradata Us, Inc. Physical database design and tuning with deep reinforcement learning
US11531671B2 (en) 2019-08-19 2022-12-20 Technion Research & Development Foundation Limited Estimating query cardinality
US11675764B2 (en) * 2020-10-16 2023-06-13 Salesforce, Inc. Learned data ontology using word embeddings from multiple datasets

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117130645A (zh) * 2023-10-25 2023-11-28 山东大学 基于大型语言模型和补全引擎的自动程序修复方法及系统

Also Published As

Publication number Publication date
US20220197900A1 (en) 2022-06-23
US11704307B2 (en) 2023-07-18
EP4248333A1 (en) 2023-09-27
WO2022140020A1 (en) 2022-06-30

Similar Documents

Publication Publication Date Title
US11455306B2 (en) Query classification and processing using neural network based machine learning
US11704307B2 (en) Intelligent query editor using neural network based machine learning
US11651163B2 (en) Multi-turn dialogue response generation with persona modeling
Yin et al. Structvae: Tree-structured latent variable models for semi-supervised semantic parsing
US11023461B2 (en) Query translation
US11681944B2 (en) System and method to generate a labeled dataset for training an entity detection system
US11521075B2 (en) Transfer learning system for automated software engineering tasks
US20200192727A1 (en) Intent-Based Organisation Of APIs
US11934403B2 (en) Generating training data for natural language search systems
US11687570B2 (en) System and method for efficient multi-relational entity understanding and retrieval
US11494559B2 (en) Hybrid in-domain and out-of-domain document processing for non-vocabulary tokens of electronic documents
US11507747B2 (en) Hybrid in-domain and out-of-domain document processing for non-vocabulary tokens of electronic documents
US20220100963A1 (en) Event extraction from documents with co-reference
CN111443964B (zh) 更新用户界面的方法、设备和计算机可读存储介质
US20220100772A1 (en) Context-sensitive linking of entities to private databases
CN112784595A (zh) 用广义词汇表标记训练和评估机器学习模型的系统和方法
WO2022046190A1 (en) Automatic generation of assert statements for unit test cases
US20220100967A1 (en) Lifecycle management for customized natural language processing
EP4285217A1 (en) Natural language source code search using using neural transformers
KR20240004875A (ko) 사용자 내비게이션 추천들에 대한 인간 판독가능 설명들의 구성
CN108932225B (zh) 用于将自然语言需求转换成为语义建模语言语句的方法和系统
EP4222635A1 (en) Lifecycle management for customized natural language processing
Saha et al. NLINQ: A natural language interface for querying network performance
US20230401286A1 (en) Guided augmention of data sets for machine learning models
US20240202466A1 (en) Adapting prompts selected from prompt task collections

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