一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于与模式无关的查询模板的生成和应用的系统和方法与流程

2022-09-02 22:39:08 来源:中国专利 TAG:
1.本公开总体上涉及数据库管理。更具体地,本公开涉及用于与模式无关(schema-agnostic)的查询模板的生成的系统和方法以及其对具有不同模式(shema)的数据集的应用。
背景技术
::2.数据集通常根据定义的模式进行结构化。模式是数据集中包含的数据记录的结构或格式的描述或设计。例如,数据集的模式可以提供对可以为每个数据记录填充的属性(例如,表示在不同的列中)的描述和/或可以提供对不同数据记录和/或包含各种数据记录的数据表可以如何相互相关或以其他方式在逻辑上彼此关联的描述。模式可以包括存储数据记录所需的所有实现细节,诸如数据记录的数据类型、对数据记录的约束等。3.在许多情况下,并且出于各种原因,诸如数据集的单独开发和/或收集,各种数据集的模式彼此不同(通常显著不同)。因此,给定数据集可能根据不一定与其他潜在相关的数据集的模式匹配的特定的模式进行结构化。4.目前,鉴于数据集的这种模式特定的性质,对数据集的一般查询以特定的查询语言(如sql)表述,并明确被设计为考虑存储库的特定模式。因此,为了查询特定数据集,必须开发考虑要查询的数据集的特定模式的复杂性的查询。该过程可能需要大量的工作量和费用,包括开发和测试任何数量的中间的、不成功的尝试。对于较大的实体,诸如维护成百上千个不同数据集的公司,为每个不同的数据集编写不同的模式特定的查询构成巨大的挑战和低效率的根源。5.作为一个示例,考虑返回所有员工的姓名的查询。在a公司,所有员工的信息可能存储在名为“employees(员工)”的表中,并且每个员工的姓名可能存储在名为“name(姓名)”的列中。然后,对于a公司,此查询将表示为:6.q1:selectname7.fromemployees8.但是对于b公司,员工姓名可能存储在名为“personnel(人员)”的表中的名为“first_name(名)”和“last_name(姓)”的两个列中。然后,为b公司评估基本相同的查询需要我们完全对查询进行重写并编写类似如下内容:9.q2:selectfirst_name,last_name10.frompersonnel11.上述简单示例说明的是,每次都需要按照执行查询对照的特定模式的词汇表来定制相同的语义等价查询。这实际上是sql标准(在此示例中)强制执行的期望。由于模式在客户和数据库之间存在很大差异,因此该任务几乎总是手动完成,这再次构成成本、工作量和效率低下的重要原因。技术实现要素:12.本公开的实施例的各方面和优点将在下面的描述中部分地阐述,或者可以从描述中获悉,或者可以通过对实施例的实践获悉。13.本公开的一个示例方面涉及一种用于将与模式无关的查询模板应用于数据集的计算机实现的方法。该方法包括由包括一个或多个计算设备的计算系统获得查询模板,查询模板包括对一个或多个分类标签的一个或多个引用。一个或多个分类标签中的每一个是数据组的与模式无关的表示。该方法包括由计算系统访问与存储在数据库中并根据模式结构化的数据集关联的模式-分类映射,其中,模式-分类映射限定一个或多个分类标签与数据集的模式的一个或多个组成部分之间的映射。该方法包括由计算系统基于模式-分类映射来修改查询模板以生成模式特定的查询。该方法包括由计算系统针对存储在数据库中的数据集执行模式特定的查询以生成查询结果。该方法包括由计算系统提供查询结果作为输出。14.本公开的另一示例方面涉及一种利用与模式无关的查询模板的计算系统。该计算系统包括存储数据集的数据库;一个或多个处理器;和共同存储指令的一个或多个非暂时性计算机可读介质,该指令在由一个或多个处理器执行时使计算系统执行操作。该操作包括由计算系统获得查询模板,查询模板包括对一个或多个分类标签的一个或多个引用,一个或多个分类标签中的每一个是数据组的与模式无关的表示。该操作包括由计算系统访问与数据集关联并根据模式结构化的模式-分类映射,其中,模式-分类映射限定一个或多个分类标签与数据集的模式的一个或多个组成部分之间的映射。该操作包括由计算系统基于模式-分类映射来修改查询模板以生成模式特定的查询。该操作包括由计算系统针对存储在数据库中的数据集执行模式特定的查询以生成查询结果。该操作包括由计算系统提供查询结果作为输出。15.本公开的其他方面涉及各种系统、装置、非暂时性计算机可读介质、用户界面和电子设备。16.参考以下描述和所附权利要求将更好地理解本公开的各种实施例的这些和其他特征、方面和优点。被并入且构成本说明书一部分的附图示出了本公开的示例实施例,并且与描述一起用于解释相关原理。附图说明17.针对本领域普通技术人员的实施例的详细讨论在参照附图的说明书中进行阐述,其中:18.图1a-图1b描绘了根据本公开的示例实施例的示例计算系统的框图。19.图2描绘了根据本公开的示例实施例的示例查询生成和应用平台的框图。20.图3描绘了根据本公开的示例实施例的生成查询模板的示例方法的流程图。21.图4描绘了根据本公开的示例实施例的将查询模板应用于数据集的示例方法的流程图。具体实施方式22.概述23.总体上,本公开涉及生成和/或应用以通用的与模式无关的语言表述的查询模板的系统和方法。查询模板可以“从零开始”生成,或者可以从现有查询自动生成,这个过程可以称为对现有查询“模板化”。作为一个示例,可以通过迭代过程执行查询模板的生成,该迭代过程随时间迭代地生成候选模板以优化对现有查询的集合的覆盖。在生成与模式无关的查询模板之后,本文描述的系统和方法可以自动将模板化查询转换/映射成“具体的”模式特定的查询,该查询可以在特定客户模式/数据集上进行评估。以这种方式,对于给定语义查询(例如,“返回所有员工的姓名”)的查询模板只需被编写一次作为查询模板。所提出的系统和方法然后可以将查询模板转换为任何数量的模式特定的查询,该查询适当地考虑作为输入提供的任何数量的特定模式(例如,能够针对其进行评估)。在另一方面,给定查询模板和特定模式的描述,所提出的系统和方法可以评估从特定模式的查询模板生成模式特定的查询的可行性。因此,本公开的示例方面涉及生成和/或向用户提供模板化查询、评估模板化查询对用户模式的可行性、从模板化查询(例如,其可以被参数化)生成模式特定的查询以及对用户的模式执行模式特定的查询以为用户生成查询结果。24.更特别地,本公开的各方面向用户提供了评估查询的能力,而不管他们正在使用的基础模式如何。为此,本公开的系统和方法可以生成和应用查询模板。在一些实施方式中,查询模板可以是描述比如“返回所有员工的姓名”的通用请求的(查询)规范。25.作为一个示例,查询模板可以如下所示:26.querytemplate:select《name_columa_list》,optional(《age》)27.from《employee_table_name》28.optional(where《age》》《value》)29.该示例查询模板不依赖于特定的模式(即,其为“与模式无关(schema-agnostic)”)。给定这样的模板,并且参考
背景技术
:部分,本公开的各方面使a公司和b公司都能够评估查询模板,而不用关心查询模板如何映射到它们的基础模式。实际上,所提出的系统利用了这样一种机制,给定:(a)查询模板(如上面的查询模板);和(b)底层数据的模式,模板被自动转换为可以在相应模式上运行的具体查询。这样,对于a公司的模式,转换机制会将上面的模板转换成查询q1,而对于b公司的模式,将生成查询q2。上述查询和查询模板是作为简化示例提供的,可以进行更复杂的查询。30.与本文提出的模板的自动生成和应用相比,过去在查询模板化方面的工作仅限于为查询提供简单的运行时参数(run-timeargument)。例如,过去sql模板化的范围限于支持值参数,如下所述:31.q3:selectname32.fromemployees33.whereage>“?”34.其中,where语句中的“?”可以被动态替换为用户在运行时提供的值(例如,25)。但是,查询的关键结构(如表名和列名)始终是固定的。此外,查询的所有部分都是必需的,并且无法处理任何部分的数据缺失。35.为了解决这些限制,用户通常依赖查询视图来替换真实的查询模板。这样,用户只对视图编写一次查询(如果存在真实的模板化查询机制就会发生这种情况),并且该查询通过映射集合被转换成对基础模式(例如,对于a公司或b公司)的查询。查询视图方法的明显限制是这些映射必须是先验已知的,并且通常也是手动创建的。此外,为了使查询视图机制起作用,其假设视图中的所有结构(在关系数据库的情况下为表和列)都映射到基础模式。36.相比之下,本文提出的模板化查询机制考虑了模板的可选的并且在模板被转换时可能会或可能不会被映射的部分。作为示例,返回所有员工的姓名和可能的年龄(如果存在)的模板可能会返回没有年龄列(对于其基础模式不存储其员工年龄的公司)或具有年龄列(对于存储该信息的公司)的结果。类似地,查询模板可以具有可选的过滤器,其仅选择比如25岁以上的员工。如果a公司存储其员工的年龄,则该过滤器可能适用于a公司的员工,但当这一信息不可用时,该过滤器可能不适用于b公司。查询模板的这样的动态定制是超越当前机制的基本能力(包括查询视图的能力,如所示,其不能处理可选性)的实质性进步。37.更特别地,查询生成和应用平台可以由包括一个或多个计算设备的计算系统执行。查询生成和应用平台可以生成一个或多个查询模板和/或将查询模板应用于具有不同模式的数据集。38.在一些实施方式中,查询模板可以从零开始设计。作为一个示例,可以开发预定义的查询模板的集合(例如,由平台自身的开发人员)并作为包提供给用户。作为另一示例,用户可以通过将查询模板输入计算系统中(例如,经由图形用户界面)来直接设计查询模板。作为另一示例,用户可以修改现有模式特定的查询或现有的查询模板以生成可以保存以供以后使用的新的查询模板。39.在下面更详细讨论的其他示例中,计算系统可以实现一种或多种算法以自动生成新的查询模板。在一个示例中,给定现有查询模板的集合(例如,由用户提供),计算系统可以自动合成查询模板,该查询模板是现有查询模板的集合中尽可能大的一部分的语义等价物(例如,提供相同的结果集)。40.根据本公开的一个方面,查询模板可以利用分类(taxonomy)作为建立通用语言的方法,该通用语言描述由用户带入平台的数据集以及平台试图在这些数据集上实例化的查询模板。每个分类可以包括一个或多个分类标签。每个分类标签可以是数据组的与模式无关的表示。例如,分类标签可以与语义概念相关,并且分类标签可以是对也引用了这样的语义概念或与这样的语义概念(例如,使用模式特定的词汇)相关的任何模式特定的数据(例如,列)的替代引用。可以手动定义分类标签和/或可以提供默认分类标签集合。因此,分类可以是灵活的,并且可以绑定到任何不同的用例或语义查询类型。41.举个示例,参照上面提供的示例查询模板和查询q1和q2,分类标签“name_column_list”是员工姓名的语义概念的与模式无关的表示。该分类标签可以映射到由引用相同的语义概念的a公司和b公司的数据集的相应的模式使用的模式特定的词汇。特别地,对于员工姓名的语义概念,a公司的模式在名为“employees”的表中包含名为“name”的列,而b公司的模式在名为“personnel”表中包含名为“first_name”和“last_name”的两个列。因此,与模式无关的分类标签“name_column_list”可以被映射到这些模式特定的词汇条目。42.如上所述,在某些情况下,可以手动创建查询模板,而在其他情况下,计算系统可以从一个或多个现有查询的集合(例如,该一个或多个现有查询分别与一个或多个现有数据集关联并且可以在该一个或多个现有数据集上执行)自动生成查询模板。因此,在一个示例中,计算系统可以接收分别与一个或多个现有数据集关联的一个或多个现有模式特定的查询的集合,并且可以基于一个或多个现有模式特定的查询的集合生成查询模板。43.作为一个示例,基于现有模式特定的查询的集合生成查询模板可以包括:基于一个或多个现有模式特定的查询的集合迭代地生成候选查询模板,并将候选查询模板应用于分别与一个或多个现有模式特定的查询关联的一个或多个现有数据集,以获得一个或多个候选结果集。例如,针对现有数据集执行候选查询模板可以包括,对于每个现有数据集,从候选查询模板生成相应的模式特定的查询,并在现有数据集上评估该相应的模式特定的查询,以获得现有数据库的相应的候选结果集。44.在每次迭代中,计算系统可以将一个或多个候选结果集与通过针对一个或多个现有数据集执行一个或多个模式特定的查询而生成的一个或多个现有结果集进行比较。例如,如果针对特定数据集生成的候选结果集匹配(例如,完全相同地匹配)通过针对特定数据集执行特定现有模式特定的查询而生成的现有结果集,则对应的候选查询模板可以被指示为具有对于特定现有模式特定的查询的肯定覆盖(positivecoverage)。换句话说,如果将特定候选查询模板应用于现有数据集提供与应用对应的现有模式特定的查询相同的结果,则可以说候选查询模板具有这样的现有模式特定的查询的覆盖。45.计算系统可以迭代地搜索提供关于现有模式特定的查询的集合的最大覆盖的候选查询模板。可以在每次迭代中执行各种技术以生成要在这样的迭代中评估的候选查询模板。作为一个示例,现有查询和/或关联的数据集可以使用树和/或图表来表示。自动化过程可以分析候选查询模板和现有查询之间的可用树和/或树的重叠/叠加。这种分析可以揭示查询的哪些部分是必要的,哪些部分是可选的,并且可以帮助理解对候选查询模板的更改将如何改变对应的结果集的语义。46.作为另一示例,可以执行迭代搜索技术(诸如进化搜索)来生成候选查询模板。例如,可以在每次迭代中将随机突变应用于查询模板,并且可以评估这样的随机突变是增加还是减少覆盖。作为又另一示例,强化学习技术可以用于学习生成候选查询模板的智能体模型(agentmodel)。例如,覆盖量(或其相对增加)可以用于奖励/训练智能体模型以用于生成候选查询模板。在一个示例中,智能体模型可以是循环神经网络。47.因此,可以迭代地生成和评估候选查询模板,直到满足某个停止条件,目标是在现有查询的集合上最大化覆盖。该过程在构思上可以被视为对现有查询的集合(例如,由用户提供)进行逆向工程以生成查询模板(例如,然后用户可以将其应用于其他不同和/或新的数据集)。该过程可以显著节省时间和工作量。例如,诸如大型公司的组织可能拥有数千个不同的数据集/数据库。该组织可以生成一些模式特定的查询,然后可以使用这些模式特定的查询来生成(例如,自动地生成)可以应用于数量更大的数据集的查询模板。因此,可以大大减少需要手动生成的模式特定的查询的量,从而节省时间和工作量。48.查询模板(例如,自动生成的查询模板)可以根据许多不同的数据库结构语言来表述。一种示例语言是sql语言。其他示例语言是基于图形的语言,诸如sparql。因此,在一些示例中,数据集可以包括结构化数据(例如,数据可以是sql数据,并且查询语言可以是sql)。在其他示例中,数据集可以包括半结构化数据(例如,数据可以是xml数据,并且查询语言可以是xpath)。在其他示例中,数据集可以包括图形数据(例如,rdf数据)并且查询语言可以是基于图形的语言(例如,sparql)。一旦查询模板被生成、导入或以其他方式包括在查询生成和应用平台内,可以对数据集(例如,由用户上传、链接或以其他方式可供平台访问的数据集)应用这些查询模板。作为一个示例,由用户可访问的数据集可以包括由诸如谷歌分析(googleanalytics)之类的网络分析服务生成的网络分析数据集。49.根据本公开的一个方面,查询生成和应用平台可以将查询模板转换成适当地考虑(例如,能够针对其进行评估)作为输入提供的任何数量的特定模式的任何数量的模式特定的查询。50.作为一个示例,对于特定的一对数据集和查询模板或分类,查询生成和应用平台可以访问与数据集关联的模式-分类映射。模式-分类映射可以限定模板或分类中包括的一个或多个分类标签与数据集的模式的一个或多个组成部分之间的映射。模式-分类映射可以手动生成,或者可以自动生成。模式-分类映射中的每个映射可以是一对一、一对多或多对一。51.作为一个示例,模式组成部分的特性可以对照与分类标签关联的预期特性进行匹配,以生成模式的组成部分和分类标签之间的映射。例如,与分类标签关联的预期字符长度可以用于将分类标签映射到模式的组成部分。52.举个示例,除了一些众所周知的例外,sku通常是长度在6-8个字符之间的字母数字字符串。因此,包含同样地为6-8个字符长的字母数字字符串的数据条目的模式组成部分(例如,列)可以被推断为映射到sku分类标签。再举另一示例,upc是统一赋值的,并且在美国是12位,在欧洲是13位。因此,与这些特性匹配的模式组成部分可以被映射到upc分类标签。可以利用的另一样式是sku和upc条目通常是唯一的,并且在其相应的列中通常不重复。53.更一般地,可以利用与不同模式组成部分关联的数据特性所展示的样式来自动确定一个或多个分类标签与模式组成部分之间的映射。在一个示例中,可以训练机器学习模型(例如,神经网络)以在给定模式和/或底层数据集以及查询模板和/或分类作为输入时推断映射。例如,机器学习模型可以使用分类标签和模式组成部分之间的现有映射以监督方式进行训练。作为另一示例,在强化学习方法中,可以训练智能体以生成模式和分类标签之间的映射。特别地,可以使用奖励函数来训练智能体,该奖励函数评估智能体生成的映射使查询模板能够被应用于数据集以获得与现有查询对于该数据集的相同覆盖的表现好坏。54.另一进一步的示例,在2019年11月6日提交的国际申请号pct/us19/60010中描述的用于自动确定两个模式之间的映射的技术可以适用于取代自动确定特定模式和与模式无关的查询或分类之间的映射。国际申请号pct/us19/60010通过引用整体并入本文。55.在获得数据集与分类或模板之间的模式-分类映射后,查询生成和应用平台可以基于模式-分类映射修改查询模板以生成模式特定的查询。56.作为一个示例,基于模式-分类映射修改查询模板以生成模式特定的查询可以包括:利用分类标签通过模式-分类映射而被映射到的模式的一个或多个组成部分的替换引用来替换查询模板中对分类标签之一的每个相应引用。换句话说,查询模板中的每个分类标签可以用对映射到这样的分类标签的模式组成部分的引用来替换。57.在一些实施方式中,查询模板可以被参数化。在这样的实施方式中,基于模式-分类映射修改查询模板以生成模式特定的查询可以包括:识别查询模板中包括的一个或多个用户可指定参数;提供使用户能够为一个或多个用户可指定参数输入值的用户界面;和使用用户经由用户界面为该一个或多个用户可指定参数输入的值构造模式特定的查询。因此,作为一个示例,可以请求用户提供用于查询所应用的过滤器的特定数据。58.在一些实施方式中,一个或多个机器学习模型可以用于基于模式-分类映射修改查询模板,以生成模式特定的查询。作为一个示例,机器学习模型可以是序列到序列模型,可以对其进行训练以将查询模板重写为模式特定的查询,例如采用模式-分类映射(或其嵌入)作为上下文。例如,这种方法可以在构思上类似于使用序列到序列模型进行机器翻译。59.查询生成和应用平台然后可以针对存储在数据库中的数据集执行模式特定的查询,以生成查询结果并提供该查询结果作为输出。例如,可以将查询结果显示给用户。在另一示例中,可以生成和应用模式特定的查询,并且可以将查询结果作为服务提供给其他应用、设备或实体(例如,经由应用程序编程接口(api)接收对查询应用的请求并且经由api将查询结果返回)。60.根据本公开的另一方面,给定查询模板和特定模式的描述,查询生成和应用平台可以评估从特定模式的查询模板生成模式特定的查询的可行性。例如,当用户首次将数据集引入平台时,平台可以自动评估平台中包括的哪些查询模板对于针对新数据集及其关联模式的运行是可行的。平台可以提供某些可视化指示,指示哪些查询模板对于针对数据集的执行是可行的。例如,不可应用的查询可以“以灰色显示”或以其他方式呈现为不可选择。61.可以执行许多不同的技术来评估将查询模板应用于数据集及其关联模式的可行性。作为一个示例,评估从查询模板生成模式特定的查询的可行性可以包括:识别查询模板中包括的一个或多个基本分类标签和一个或多个可选分类标签,以及确定对于一个或多个基本分类标签中的每一个,模式-分类映射是否限定到模式的至少一个组成部分的映射。换句话说,在一些实施方式中,仅当查询模板中的每个分类标签具有映射到其的模式的至少一个组成部分时,从查询模板生成模式特定的查询可以是可行的。在一些实施方式中,在没有模式组成部分映射到查询模板中包括的分类标签的情况下,原则上仍然可以评估查询,而对于分类标签的所有值返回null(空)值。这些null值的替代是仅当所有分类标签都基于具体关系元素时才允许查询模板被触发的逻辑。62.此外,应注意,即使在没有任何模式组成部分映射到作为可选分类标签的分类标签时,从查询模板生成模式特定的查询也是可行的。这种忽视可选标签的数据不存在的能力是相对于现有模式映射系统的重大进步,现有模式映射系统需要对查询的所有元素进行一对一映射。63.作为评估可行性的另一示例技术,可以将与查询模板(例如,映射到查询模板中包括的分类标签的模式模板)中牵涉的模式组成部分关联的数据量和与其他模式组成部分和/或整个数据集关联的数据的平均或总量进行比较。这可以确保显著不完全的数据的存在不会对将查询模板应用于数据集的可行性给出误报(falsepositive)。因此,在一些实施方式中,评估从查询模板生成模式特定的查询的可行性可以包括:对于分类标签中的至少一个,确定与这样的分类标签关联的数据集中包括的非空数据条目的数量与数据集中包括的数据条目的总数。64.本公开的附加方面关注尚未激活的查询。例如,如果用户注意到有非常有趣的查询模板,但该查询没有被激活(可行)。在这样的情况下,平台可以分析可用的数据集,并可以向用户提供关于必须导入什么类型的数据才能激活该查询的指示。该设置创建有用的反馈回路,其中,进入系统的新数据激活查询的类别,而未激活查询的类别指导客户端接下来必须导入什么类型的数据。65.因此,本公开的示例方面涉及生成和/或向用户提供模板化查询、评估模板化查询对用户模式的可行性、从模板化查询(例如,其可以被参数化)生成模式特定的查询以及对用户的模式执行模式特定的查询以为用户生成查询结果。66.本公开的系统和方法提供了许多技术效果和益处。特别地,所提出的系统和方法不是简单地在两个不同的现有模式之间进行映射,而是灵活地应对真正的结构变化。作为一个示例,所提出的系统和方法可以指示给定数据集是否具有足够的数据来使能查询模板的应用(这一概念在本文其他地方称为“可行性”)。作为另一示例,所提出的系统和方法可以使能和处理查询模板内的可选功能。例如,应用查询模板的可选部分(例如,对与分类标签关联的数据的可选请求)可以包括确定给定数据集是否具有足够的数据来为查询模板的可选部分提供结果。67.现在参照附图,将更详细地讨论本公开的示例实施例。68.示例设备和系统69.图1a描绘了根据本公开的示例实施例的示例计算系统100的框图。计算系统100包括通过网络180进行通信(例如,根据客户端-服务器关系)的用户计算设备102和数据库管理系统130。数据库管理系统130管理或以其他方式访问一个或多个数据库150。设备102、系统130和/或数据库150中的任何之间的通信可以根据一个或多个应用程序编程接口(api)来格式化或结构化。70.用户计算设备102可以是任何类型的设备,包括个人计算设备和/或客户端服务器设备。个人计算设备可以包括膝上型计算机、台式计算机、智能电话、平板计算机、嵌入式计算设备、游戏控制台等。71.用户计算设备102可以包括一个或多个处理器112和存储器114。一个或多个处理器112可以是任何合适的处理设备(例如,处理器核、微处理器、asic、fpga、控制器、微控制器等),并且可以是一个处理器或操作性地连接的多个处理器。存储器114可以包括一种或多种非暂时性计算机可读存储介质,诸如ram、rom、eeprom、eprom、闪存设备、磁盘等以及其组合。存储器114可以存储数据116和由处理器112执行以使用户计算设备102执行操作的指令118。72.数据库管理系统130包括一个或多个处理器132和存储器134。一个或多个处理器132可以是任何合适的处理设备(例如,处理器核、微处理器、asic、fpga、控制器、微控制器等),并且可以是一个处理器或操作性地连接的多个处理器。存储器134可以包括一种或多种非暂时性计算机可读存储介质,诸如ram、rom、eeprom、eprom、闪存设备、磁盘等以及其组合。存储器134可以存储数据136和由处理器132执行以使数据库管理系统130执行操作的指令138。73.在一些实施方式中,数据库管理系统130包括一个或多个服务器计算设备,或者由一个或多个服务器计算设备实现。在数据库管理系统130包括多个服务器计算设备的情况下,这样的服务器计算设备可以根据顺序计算架构、并行计算架构或其某种组合进行操作。74.数据库管理系统130可以包括并执行查询生成和应用平台140。查询生成和应用平台140可以向/双数据库150提供存储、处理和保护数据的核心服务。在一些实施方式中,查询生成和应用平台140可以包括查询解析器、查询优化器、执行引擎、元数据管理器、api处理器(handler)、查询结果返回器和/或其他组件。75.根据本公开的一方面,查询生成和应用平台140可以生成和/或应用以通用的与模式无关语言表述的一个或多个查询模板。查询模板可以“从零开始”生成,或者可以从现有查询自动生成,这个过程可以称为对现有查询“模板化”。作为一个示例,查询生成和应用平台140可以通过迭代过程生成查询模板,该迭代过程随时间迭代地生成候选模板以优化对现有查询的集合的覆盖。在生成与模式无关的查询模板之后,查询生成和应用平台140可以将模板化查询自动转换/映射成“具体的”模式特定的查询,该查询可以在特定客户模式/数据集上进行评估。以这种方式,对于给定语义查询(例如,“返回所有员工的姓名)的查询模板只需被编写一次作为查询模板。因此,查询生成和应用平台140可以将查询模板转换为任何数量的模式特定的查询,该查询适当地考虑作为输入提供的任何数量的特定模式(例如,能够针对其进行评估)。在另一方面,给定查询模板和特定模式的描述,查询生成和应用平台140可以评估从特定模式的查询模板生成模式特定的查询的可行性。操作图2描述了一个示例查询生成和应用平台140。76.仍然参考图1,数据库150可以存储一个或多个数据集,例如,数据集可以包括数据表。数据表(或其单独的行、列或条目)可以彼此相关。特别地,数据库150中存储的每个数据集可以根据特定模式被组织或结构化。数据集可以与特定用户关联,并且在一些实施方式中,用户必须登录到查询生成和应用平台140以访问其关联的数据集。77.数据库150可以是一个数据库或者可以是多个在物理上分布的数据库。数据库150可以由多个存储设备(诸如,例如,存储盘)备份。78.查询生成和应用平台140(或其任何子系统)可以包括用于提供期望功能的计算机逻辑。查询生成和应用平台140(或其任何子系统,诸如图2中所示的那些)可以以硬件、固件和/或控制通用处理器的软件实现。例如,在一些实施方式中,查询生成和应用平台140(或其任何子系统)包括存储在存储设备上、加载到存储器中并由一个或多个处理器执行的程序文件。在其他实施方式中,查询生成和应用平台140(或其任何子系统)包括存储在诸如ram硬盘或者光学或磁介质的有形计算机可读存储介质中的一个或多个计算机可执行指令集。79.图1a示出了可以用于实现查询生成和应用平台140的一个示例计算系统。也可以使用其他计算系统。作为一个示例,图1b示出了替代布置,其中,查询生成和应用平台140存储在用户计算设备102处并由用户计算设备102执行。80.图2描绘了示例查询生成和应用平台200的图形示意图。查询生成和应用平台200可以由包括一个或多个计算设备的计算系统(例如,诸如图1a和1b所示)执行。查询生成和应用平台200可以生成一个或多个查询模板206和/或将查询模板206应用于具有不同模式的数据集(例如,存储在数据库150中的用户数据集202)。81.在一些实施方式中,查询模板206可以从零开始设计。作为一个示例,可以开发预定义的查询模板206的集合(例如,由平台自身的开发人员)并作为包提供给用户。作为另一示例,用户可以通过将查询模板206输入平台200的图形用户界面来直接设计查询模板206。作为另一示例,用户可以修改现有模式特定的查询203或现有的查询模板以生成可以保存以供以后使用的新的查询模板。82.在其他示例中,诸如图2中所示的示例,平台200可以实现查询模板生成器205以自动生成新的查询模板206。在一个示例中,给定现有查询模板203的集合(例如,由用户提供),查询模板生成器205可以自动合成查询模板206,该查询模板是现有查询模板203的集合中的尽可能大的一部分的语义等价物(例如,提供相同的结果集)。83.根据本公开的一个方面,查询模板206可以利用分类204作为建立通用语言的方法,该通用语言描述由用户带入平台的数据集(例如,202)以及平台200试图在这些数据集上实例化的查询模板206。每个分类204可以包括一个或多个分类标签。每个分类标签可以是数据组的与模式无关的表示。例如,分类标签可以与语义概念相关,并且分类标签可以是对也引用了这样的语义概念或与这样的语义概念(例如,使用模式特定的词汇)相关的任何模式特定的数据(例如,列)的替代引用。可以手动定义分类标签和/或可以提供默认分类标签集合。因此,分类204可以是灵活的,并且可以绑定到任何不同的用例或语义查询类型。84.按产品检索利润的一个示例查询模板206如下:[0085][0086]在上面提供的示例查询模板206中,未知列或关系由分类标签表示。此外,查询模板的最后一行包括用@user_para1和@user_param2标记的两个特殊指示符。这些指示符可以用于触发ui,该ui要求用户填写两个值,以便将可盈利产品的搜索范围限定到在一对日期之间发布的产品。[0087]如上所述,在某些情况下,可以手动创建查询模板206,而在其他情况下,查询模板生成器205可以从一个或多个现有查询203的集合(例如,该一个或多个现有查询分别与一个或多个现有数据集关联并且可以在该一个或多个现有数据集上执行)自动生成查询模板206。因此,在一个示例中,平台200可以接收分别与一个或多个现有数据集关联的一个或多个现有模式特定的查询203的集合,并且可以基于一个或多个现有模式特定的查询的集合生成查询模板206。[0088]作为一个示例,基于现有模式特定的查询203的集合生成查询模板206可以包括:由查询模板生成器205基于一个或多个现有模式特定的查询203的集合迭代地生成候选查询模板,并将候选查询模板应用于分别与一个或多个现有模式特定的查询203关联的一个或多个现有数据集,以获得一个或多个候选结果集。例如,针对现有数据集执行候选查询模板可以包括,对于每个现有数据集,从候选查询模板生成相应的模式特定的查询,并在现有数据集上评估该相应的模式特定的查询,以获得现有数据库的相应的候选结果集。[0089]在每次迭代中,计算系统可以将一个或多个候选结果集与通过针对一个或多个现有数据集执行一个或多个模式特定的查询203而生成的一个或多个现有结果集进行比较。例如,如果针对特定数据集生成的候选结果集匹配(例如,完全相同地匹配)通过针对特定数据集执行特定现有模式特定的查询203而生成的现有结果集,则对应的候选查询模板可以被指示为具有对于特定现有模式特定的查询203的肯定覆盖。换句话说,如果将特定候选查询模板应用于现有数据集提供与应用对应的现有模式特定的查询203相同的结果,则可以说候选查询模板具有这样的现有模式特定的查询的覆盖。[0090]查询模板生成器205可以迭代地搜索提供关于现有模式特定的查询203的集合的最大覆盖的候选查询模板。可以在每次迭代中执行各种技术以生成要在这样的迭代中评估的候选查询模板。作为一个示例,现有查询和/或关联的数据集可以使用树和/或图表来表示。自动化过程可以分析候选查询模板和现有查询之间的可用树和/或树的重叠/叠加。这种分析可以揭示查询的哪些部分是必要的,哪些部分是可选的,并且可以帮助理解对候选查询模板的更改将如何改变对应的结果集的语义。[0091]作为另一示例,可以执行迭代搜索技术(诸如进化搜索)来生成候选查询模板。例如,可以在每次迭代中将随机突变应用于候选查询模板,并且可以评估这样的随机突变是增加还是减少覆盖。作为又另一示例,强化学习技术可以用于学习生成候选查询模板的智能体模型。例如,覆盖量(或其相对增加)可以用于奖励/训练智能体模型以用于生成候选查询模板。在一个示例中,智能体模型可以是循环神经网络。[0092]因此,可以迭代地生成和评估候选查询模板,直到满足某个停止条件,目标是在现有查询的集合上最大化覆盖。该过程在构思上可以被视为对现有查询203的集合(例如,由用户提供)进行逆向工程以生成查询模板206(例如,然后用户可以将其应用于其他不同和/或新的数据集)。该过程可以显著节省时间和工作量。例如,诸如大型公司的组织可能拥有数千个不同的数据集/数据库。该组织可以生成一些模式特定的查询,然后可以使用这些模式特定的查询来生成(例如,自动地生成)可以应用于数量更大的数据集的查询模板。因此,可以大大减少需要手动生成的模式特定的查询的量,从而节省时间和工作量。[0093]查询模板206(例如,自动生成的查询模板)可以根据许多不同的数据库结构语言来表述。一种示例语言是sql语言。其他示例语言是基于图形的语言,诸如sparql。因此,在一些示例中,数据集可以包括结构化数据(例如,数据可以是sql数据,并且查询语言可以是sql)。在其他示例中,数据集可以包括半结构化数据(例如,数据可以是xml数据,并且查询语言可以是xpath)。在其他示例中,数据集可以包括图形数据(例如,rdf数据)并且查询语言可以是基于图形的语言(例如,sparql)。一旦查询模板206被生成、导入或以其他方式包括在查询生成和应用平台200内,可以对数据集(例如,由用户上传、链接或以其他方式可供平台访问的数据集,例如数据集202)应用这些查询模板。作为一个示例,由用户可访问的数据集可以包括由诸如谷歌分析之类的网络分析服务生成的网络分析数据集。[0094]根据本公开的一个方面,查询生成和应用平台200可以将查询模板206转换成适当地考虑(例如,能够针对其进行评估)作为输入提供的任何数量的特定模式的任何数量的模式特定的查询214。[0095]作为一个示例,对于特定的一对数据集202和查询模板206或分类204,查询生成和应用平台200可以访问与数据集202关联的模式-分类映射210。模式-分类映射210可以限定查询模板206或分类204中包括的一个或多个分类标签与数据集202的模式的一个或多个组成部分之间的映射。模式-分类映射210可以手动生成,或者可以自动生成(图2示出由模式-分类映射生成器208自动生成模式-分类映射210)。[0096]作为一个示例,数据集202的模式的模式组成部分的特性可以对照与分类204中包括的分类标签关联的预期特性进行匹配,以生成模式的组成部分和分类标签之间的模式-分类映射210中包括的映射。例如,与分类标签关联的预期字符长度可以用于将分类标签映射到模式的组成部分。[0097]举个示例,除了一些众所周知的例外,sku通常是长度在6-8个字符之间的字母数字字符串。因此,包含同样地为6-8个字符长的字母数字字符串的数据条目的模式组成部分(例如,列)可以被推断为映射到sku分类标签。再举另一示例,upc是统一赋值的,并且在美国是12位,在欧洲是13位。因此,与这些特性匹配的模式组成部分可以被映射到upc分类标签。可以利用的另一样式是sku和upc条目通常是唯一的,并且在其相应的列中通常不重复。[0098]更一般地,可以利用与不同模式组成部分关联的数据特性所展示的样式来自动确定分类204或查询模板206的一个或多个分类标签与数据集202的模式的模式组成部分之间的模式-分类映射210中的映射。在一个示例中,可以训练机器学习模型(例如,神经网络)以在给定模式和/或底层数据集以及查询模板206和/或分类204作为输入时推断映射。例如,机器学习模型可以使用分类标签和模式组成部分之间的现有映射以监督方式进行训练。作为另一示例,在强化学习方法中,可以训练智能体以生成模式和分类标签之间的映射。特别地,可以使用奖励函数来训练智能体,该奖励函数评估智能体生成的映射使查询模板能够被应用于数据集以获得与现有查询对于该数据集的相同覆盖的表现好坏。[0099]另一进一步的示例,在2019年11月6日提交的国际申请号pct/us19/60010中描述的用于自动确定两个模式之间的映射的技术可以适用于取代自动确定特定模式和与模式无关的查询或分类之间的映射。国际申请号pct/us19/60010通过引用整体并入本文。[0100]作为一个示例,示例导入的数据表可以如下:[0101]产品产品名称发布日期价格利润gxp4100小部件18/23/2016$300$10gve2300最大型号小部件8/23/2016$450$20tgb4245超级小部件8/15/2017$700$30pix-new60小部件相机8/15/2017$850$40[0102]继续该示例,一个示例模式-分类映射210如下:[0103][0104]作为另一相关示例,示例模板分类简档如下:[0105][0106]在此示例中,模板中的简档中的分类标签的集合(“profit”和“sku”)包含在简档的分类标签中,并且因此可以激活模板。例如,在实际激活之前,对于与模板关联的每个col_name,都会发出查询以检查该列是否实际填充了数据。由于简档中缺失可选的check_query,则这意味着对两个列的检查查询都是微不足道的,并且它们只需要检查是否存在非null值。[0107]即使当与查询模板关联的所有分类标签都可以基于模式-分类映射,但是情况可能是导入的关系实际上没有为导入的列提供数据。例如,假设在导入的数据集中,用户选择隐藏某个数据列(例如,“profit”列中的所有值都是null)。为了解决这样的问题,可以发出简单的查询来确定是否正确填充了导入数据中的某些重要列。例如,以下查询计数具有填充的利润值的元组,其结果可以与整个关系中的元组数进行比较。[0108]selectcount(*)[0109]fromproduct[0110]whereprofitisnotnull;[0111]另一考虑是,除了查询的模板化(分类-注释)部分之外,为了激活查询模板,可能还必须检查与查询的非模板化部分对应的数据是否在对应的数据库中可用。例如,可以执行检查以确定用户的数据集是否确实已导入到平台可访问的数据库中。即使对于琐碎的查询(例如,不包含分类标签而仅依赖于预定和众所周知的关系的查询),也可以执行该最后的检查。对于这样的查询,确定用户将所有必要数据导入平台以激活查询的时间点也是很有用的。[0112]仍然参照图2,在已经获得数据集202和分类204之间的模式-分类映射210之后,模式特定的查询生成器212可以基于模式-分类映射210修改查询模板206以生成模式特定的查询214。[0113]作为一个示例,基于模式-分类映射210修改查询模板206以生成模式特定的查询214可以包括:利用分类标签通过模式-分类映射210而被映射到的模式的一个或多个组成部分的替换引用来替换查询模板206中对分类标签之一的每个相应引用。换句话说,查询模板206中的每个分类标签可以用对映射到这样的分类标签的模式组成部分的引用来替换。[0114]例如,可以通过解析模板的ast(例如,使用googlesql解析器api)并将对标签的每个引用替换为关联的templatetaxonomyprofile中提到的对应关系和列来执行该替换步骤。因此,在一些实施方式中,模式特定的查询生成器212可以使用将用户数据集202与分类204相关联的模式-分类映射以及将查询模板206与分类204相关联的模板分类简档两者。[0115]在一些实施方式中,查询模板206可以被参数化。在这样的实施方式中,基于模式-分类映射210修改查询模板206以生成模式特定的查询214可以包括:识别查询模板206中包括的一个或多个用户可指定参数;提供使用户能够为一个或多个用户可指定参数输入的值的用户界面;和使用用户经由用户界面为该一个或多个用户可指定参数输入的值构造模式特定的查询214。因此,作为一个示例,可以请求用户提供用于查询所应用的过滤器的特定数据。[0116]在一些实施方式中,一个或多个机器学习模型可以用于基于模式-分类映射210修改查询模板206,以生成模式特定的查询214。作为一个示例,机器学习模型可以是序列到序列模型,可以对其进行训练以将查询模板206重写为模式特定的查询214,例如采用模式-分类映射210(或其嵌入)作为上下文。例如,这种方法可以在构思上类似于使用序列到序列模型进行机器翻译。[0117]查询生成和应用平台200然后可以针对存储在数据库150中的数据集202执行模式特定的查询214,以生成查询结果216。可以提供查询结果216作为输出。例如,可以将查询结果216显示给用户。在另一示例中,可以生成和应用模式特定的查询214,并且可以将查询结果216作为服务提供给其他应用、设备或实体(例如,经由应用程序编程接口(api)接收对查询应用的请求并且经由api将查询结果216返回)。[0118]示例方法[0119]图3描绘了根据本公开的示例实施例的生成查询模板的示例方法300的流程图。[0120]在302,计算系统可以接收分别与一个或多个现有数据集关联的一个或多个现有模式特定的查询的集合。特别地,每个现有数据集可以根据特定模式进行结构化,并且每个模式特定的查询可以被编写为考虑这样的特定模式。[0121]在304,计算系统可以基于一个或多个现有模式特定的查询的集合生成候选查询模板。例如,可以随机初始化候选查询模板,或者可以将用于相关任务的现有查询模板用作候选查询模板的出发点。[0122]在306,计算系统可以将候选查询模板应用于一个或多个现有数据集以获得一个或多个候选结果集。例如,将候选查询模板应用于一个或多个现有数据集可以包括对每个现有数据集执行图4的方法400。[0123]仍然参照图3,在308,计算系统可以将一个或多个候选结果集与通过针对一个或多个现有数据集执行一个或多个模式特定的查询而生成的一个或多个现有结果集进行比较。例如,计算系统可以评估候选查询模板相对于现有模式特定的查询的集合的覆盖。[0124]在310,计算系统可以确定是否应当执行附加迭代。例如,可以执行迭代直到满足一个或多个停止标准。停止标准可以是任何数量的不同标准,包括达例如到预定最大值的循环计数器、模板调整中迭代与迭代间的变化下降到阈值以下、覆盖量中迭代与迭代间变化下降到阈值以下、损失函数的梯度低于阈值和/或各种其他标准。[0125]如果在310确定应当执行附加迭代,则方法300可以返回到304并生成另一候选查询模板(例如,通过突变或以其他方式修改先前的候选查询模板)。[0126]然而,如果在310确定不应执行附加迭代,则方法300可以前进到312。在312,计算系统可以将当前候选查询模板保存为可以稍后使用的查询模板(例如,稍后被应用于附件数据集)。[0127]图4描绘了根据本公开的示例实施例的将查询模板应用于数据集的示例方法400的流程图。[0128]在402,计算系统可以接收根据模式结构化的数据集。例如,数据集可以由用户上传、链接或以其他方式可访问。[0129]在404,计算系统可以访问与数据集关联的模式-分类映射。例如,模式-分类映射可以手动生成或自动生成。模式-分类映射可以将分类和/或查询模板中的每个分类标签映射到数据集的模式的组成部分。[0130]在406,计算系统可以评估将一个或多个查询模板应用于数据集的可行性。在408,计算系统可以向用户提供(例如,在用户界面中)哪些查询模板是可行的指示。[0131]在410,计算系统可以接收用户对查询模板之一的选择。在412,计算系统可以基于模式-分类映射修改查询模板以生成模式特定的查询。[0132]在414,计算系统可以对数据集执行模式特定的查询以生成查询结果。在416,计算系统可以提供查询结果作为输出(例如,将结果显示给用户或将结果提供给另一系统(例如,经由api))。[0133]附加公开[0134]本文讨论的技术涉及服务器、数据库、软件应用和其他基于计算机的系统,以及这样的系统所采取的动作及发送到这样的系统的信息和从这样的系统发送的信息。基于计算机的系统固有的灵活性允许在两个组件之间和更多个组件之间对任务和功能进行多种可能的配置、组合和划分。例如,本文讨论的过程可以使用单个设备或组件或者联合工作的多个设备或组件来实现。数据库和应用可以在单个系统上实现,或可以分布在多个系统上。分布式组件可以顺序或并行地操作。[0135]虽然本主题已针对其各种特定示例实施例进行了详细描述,但每个示例是以解释而不是对本公开的限制来提供的。本领域技术人员在获得对前述内容的理解后,可以容易地产生对这样的实施例的改变、变化和等价物。因此,本公开不排除包括对本领域普通技术人员显而易见的对本主题的修改、变化和/或添加。例如,作为一个实施例的一部分示出或描述的特征可以与另一实施例一起使用以产生又一实施例。因此,本公开旨在涵盖这样的改变、变化和等同物。[0136]特别地,尽管出于说明和讨论的目的,某些附图分别描绘了以特定顺序执行的步骤,但是本公开的方法不限于特定说明的顺序或布置。在不偏离本公开的范围的情况下,可以以各种方式省略、重新布置、组合和/或调整本文描述的方法的各个步骤。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献