用于查询数据源的系统和方法与流程

文档序号:13518291阅读:950来源:国知局
用于查询数据源的系统和方法与流程

相关申请的交叉引用

本申请根据35u.s.c.119(e)要求于2015年3月26日提交的美国临时专利申请序列号62/138,450的优先权,其内容通过引用整体并入本文。

本公开涉及数据处理领域,更具体地,涉及从多个数据源/布局查询数据,以及清理、转换和聚合数据以返回查询结果。



背景技术:

数据库(或数据仓库)是被设计为便于信息检索和分析的数据存储库。提取、转换和加载(etl)是在数据库中填充数据所需的过程。数据是从同构数据源或异构数据源中提取的。将提取的数据转换为适当的格式或结构,并将转换后的数据加载到数据库中的表中以供查询和分析。这种方法被称为“写模式”(schema-on-write)。如果从各种数据源提取的数据的格式或结构有很大的变化,这个过程是繁琐的,可能是复杂的。此外,随着数据表数量的增加,表本身需要改变,与存储和管理结构以及存储的数据相关联的成本也增加。

数据查询是指从数据库发出信息请求。具有适当索引的预定义结构以及正确定位查询以有效地仅获取请求的信息的能力是使数据库如此强大的原因。存在各种形式的查询(posingquery),诸如从菜单中选择参数,实例查询(qbe)和使用查询语言。使用查询语言,诸如结构化查询语言(sql),需要了解数据库结构、业务概念和一般查询编程语言,因此并不是每个人都可即时设计新的查询。即使除了直接使用查询语言的查询方法,查询语言也通常涉及幕后生成查询。

预先定义所有事物以将数据存储在数据库中的刚性和需求、在将数据加载到数据库之前管理异常和清理所有内容的复杂性会影响任何数据解决方案的成本和灵活性。因此,需要改进用于访问存储在数据源中的数据的方法和系统。

此外,数据管理行业存在着使用非结构化基础来存储数据的转变,使用脚本来管理不同的数据结构,以及使用类似的脚本来转换和处理数据。这种方法被称为“读取模式”(schema-on-read),有时一般称为nosql、hadoop或bigdata。由于没有结构化的脚本,管理结构的复杂性和依赖性已经从数据库管理员转移到熟练的程序员。因此,还需要改进结构和维护方法。



技术实现要素:

本文描述了用于从一个或多个数据源获得结果而不需要在执行查询之前提取、转换和加载数据到数据库中的方法和系统。数据可以保留其原始格式并保留在其初始位置,并使用动态生成的查询语句来提供对数据的选择性访问。可同时访问多个数据源,每个数据源对于存储的数据具有其自己的格式。方法的一般结构和视觉特性促进了查询的更新。

生成查询语句以通过定义用于给定查询的数据源、目标字段和参数来从各种数据源获得数据(查询结果)。语句包括递归应用的预定义操作,以将数据源中的数据转换(有时聚合)到查询结果中。可以保存查询语句和查询结果以供以后(如果适用)与信息文件一起使用,以确定所用的源、参数和查询语句。

如果新查询包括相同的数据源和相同的参数,并且数据源没有改变,则保存的查询结果可被重复使用(即用于重新生成查询结果)。如果新查询包含相同的数据源和相同的参数但数据源已改变,则保存的查询语句也可重用。在这种情况下,可删除先前保存的查询结果,并且可与新的信息文件一起生成新的查询结果。

保存的查询语句可用作新的查询语句的数据源。这将创建一个递归和级联架构,从而语句可从不同的来源拉取(pull)原始数据,并生成查询结果,以作为其他查询结果的来源。

该系统本质上是“拉取式”(pull-type)系统,由此在需要时拉取数据,而不是“推式”系统,由此将数据推入数据库以备以后访问。拉取函数在来自各种数据源的数据转换中是递归的,以生成结果。保存的语句和保存的结果用于递归和级联架构。

根据第一广泛的方面,提供了一种用于从数据源查询数据的方法。该方法包括接收第一查询请求并生成对应于第一查询请求的第一查询语句,第一查询语句标识至少一个第一数据源;至少一个第一目标字段;第一查询参数;以及具有相关属性的多个嵌套操作。所述方法进一步包括:使用所述第一查询参数访问所述至少一个第一数据源来执行所述第一查询语句;使用所述嵌套操作中的至少一个从所述至少一个第一数据源中的给定字段中检索数据;以及使用剩余的嵌套操作将检索到的数据转换成至少一个目标结果。该方法还包括通过用至少一个目标结果填充至少一个目标字段来生成第一查询结果。

根据另一个广泛的方面,提供了一种用于从数据源查询数据的系统。该系统包括处理单元和通信地耦接到处理单元并且包括计算机可读程序指令的存储器。所述程序指令由所述处理单元执行,用于接收第一查询请求并生成与所述第一查询请求对应的第一查询语句,所述第一查询语句标识至少一个第一数据源、至少一个第一目标字段、第一查询参数以及具有相关属性的多个嵌套操作。所述程序还可执行以通过使用所述第一查询参数访问所述至少一个第一数据源来执行所述第一查询语句;使用所述嵌套操作中的至少一个从所述至少一个第一数据源中的给定字段检索数据;以及使用剩余的嵌套操作将检索的数据转换成至少一个目标结果。程序代码还可执行以通过用至少一个目标结果填充至少一个目标字段来生成第一查询结果。

根据又一个广泛的方面,提供了一种非暂时性计算机可读介质,其上存储有可由处理单元执行的用于从数据源查询数据的程序指令。程序指令可执行用于接收第一查询请求并生成与第一查询请求对应的第一查询语句,第一查询语句标识至少一个第一数据源、至少一个第一目标字段、第一查询参数以及具有相关属性的多个嵌套操作。所述指令还用于通过使用所述第一查询参数访问所述至少一个第一数据源来执行所述第一查询语句;使用所述嵌套操作中的至少一个从所述至少一个第一数据源中的给定字段检索数据;以及使用剩余的嵌套操作将检索的数据转换成至少一个目标结果。所述指令还用于通过用所述至少一个目标结果填充所述至少一个目标字段来生成第一查询结果。

附图说明

从以下结合附图的详细描述中,本发明的其它特征和优点将变得显而易见,其中:

图1示出了用于数据查询方法的一些组件;

图2示出了用于创建和执行查询语句的一些元素;

图3是用于创建查询语句的元件的通用示例;

图4a至4f是图形用户界面的屏幕截图,示出了数据的递归转换的示例性创建以定义目标字段;

图5a至5d是图形用户界面的屏幕截图,示出了数据的递归转换的示例性创建以定义连接的目标,其中至少两个数据源被连接在一起,并且目标字段的初始节点是连接函数;

图6示出了用作其他查询语句的数据源的查询语句的示例性实施例;

图7示出了从图6的查询语句生成的查询结果的示例性实施例;

图8示出了由于数据源的变化而需要重新生成图6的一些查询结果的示例性实施例;

图9示出了如何将自组织参数(adhocparameters)传递到查询结果的示例性实施例;

图10示出了由于参数的改变而需要重新生成图9的一些查询结果的示例性实施例;

图11示出了用于查询数据的示例性系统;

图12示出了图11的数据查询系统的示例性实施例;和

图13示出了在图12的处理器上运行的应用的示例性实施例。

应当注意,在整个附图中,相同的特征由相同的附图标记标识。

具体实施方式

参考图1,示出了数据查询方法的基本组件。查询语句100包括定义查询请求的一个或多个操作。查询语句100标识了来自一组数据源101中的至少一个数据源。数据源101例如是数据文件101a、先前查询结果101b、数据库101c、先前查询语句101d或其他类型的数据源101e,诸如网站上的表中的数据。查询语句100还定义了来自从其提取数据的至少一个数据源中的至少一个目标字段。查询语句100使用可被即时(onthefly)定义和传递的查询参数102,以创建查询结果103。查询参数102也可以是对所有查询语句100是全局的默认参数。

根据图2,可使用图形用户界面(gui)201来创建查询请求200。gui201用于查看和/或建立查询请求200,根据查询请求200会生成查询语句100。gui201允许向用户显示源101、参数102和结果103之间的关系。查询语句100可被保存为标记语言文件,诸如xml文件202或其它这样的文件。如果需要改变,gui201可加载先前创建的xml文件202。可执行的查询语句203可使用先前创建的xml文件202,以通过单独和独立的过程来生成查询结果103。可执行的查询语句203可以是例如exe、com或dll类型,或者其可被附着到服务器或web服务。

构建查询语句100以从递归地应用的一系列操作中定义结果目标字段,以将来自数据源101的数据转换(并且有时聚合)到查询结果103中。用于转换数据的一些示例性操作是映射、计算、查找、格式、左截取(left)、取长度、替换、右截取(right)、部分(part)、tosplit、修剪、切换和excelfx。它们的定义如下:

映射:组合多个节点的值;

计算:将数学公式应用于节点;

左/右截取:返回节点左/右侧保留的字符数;

部分:返回从第二节点开始第一节点保留的第三节点长度的多个字符;

修剪:从节点的开头、节点的结尾或两者中移除字符;

长度:计数字符的节点值数;

格式:将第一节点值格式转换为第二节点格式;可选择使用第三节点定义原始格式。这可被用作将数据从一种格式转换为另一种格式的方法。

查找:查找第一节点的文本中的值位置或计数第一节点中第二个节点的出现次数;

tosplit:将第一节点划分为第二节点的区段并返回第三节点的区段数;和

切换:通过使用第二个节点运算符比较第一节点与第三节点,来应用基本的“if”条件应用。返回值有两个选项——真(true)返回第四节点,或假(false)返回第五节点。

每个操作具有定义操作参数的一个或多个属性。例如,操作“左截取”具有两个属性(节点)。它们是初始值和保留的长度。这些操作可用于定义目标字段,过滤器(过滤进或过滤出),或数据按所选目标字段进行聚合/分组的方法。如下所示,将属性设置为树状转换中的节点。

图3是如何创建查询语句100的通用示例。使用具有关联属性的一系列嵌套操作302利用查询结果103来定义并填充一个或多个目标字段300。在一些实施例中,来自一个或多个数据源101的数据可被传递通过初始过滤器301以减少将在该过程的后续步骤中使用的原始数据的大小。该过滤步骤可涉及对目标字段、全局参数或硬编码值使用递归或嵌套操作。目标字段300可包括标准结果或连接结果。连接结果将来自两个或更多数据源的两个目标字段结果组合到单个目标字段中,而标准目标字段具有单个根并从任何来源获取数据。连接的目标字段可在目标结果的定义中使用递归转换。操作302被应用于原始数据或先前操作的结果。操作的结果可进一步被处理303,例如通过过滤、分组或分类结果。分组的一些实例是通过选择、求和、平均、计数、计数区分、最大值、最小值、平均值、第一、最后、百分比、总数、乘积等进行分组。

在一些实施例中,所选的数据源字段可以对来自一个或多个数据源101的数据进行分组以修改内容而不必创建新的查询语句。在其他实施例中,可创建仅具有一个源的简化查询语句以对数据源101应用以便使用修改的源而不必创建新的查询语句。这被称为“语句样式”查询,其在查询语句中仅仅是临时的,并且仅应用于重新定义源。这样的查询具有单个源,原始的源。

参考图4a至4f,示出了使用示例性gui201创建查询语句100的具体示例。该示例示出了可查询具有全名列表的数据源以返回每行的第一名称的一种方法。

图4a示出了包括数据源区域402、查询结果区域404和操作区域406的gui201。数据源区域402显示数据源101的内容。下拉菜单或其他选择装置可提供用于选择要在数据源区域402中显示哪个数据源。查询结果区域404在生成查询结果时显示查询结果103,并且操作区域406显示应用于数据及其对应的属性的每个操作。还设置了结果定义区域408以显示用于定义结果区域404中的目标结果如何在最终查询结果中显示的参数。在图4a中,操作区域406和查询结果区域404是空白的,因为尚未定义任何操作。数据源区域402显示来自称为“source”的数据源的三行称为“fullname”的源字段。请注意,本文中使用的目标字段和数据源的名称和内容仅供说明之用。

图4b示出了已经输入到操作区域406中的第一操作。该操作用于使用初始字符串来填充结果区域404中的目标字段403。此实例中的操作只是返回给定源中给定字段的值。操作属性412被显示为“[source].[fullname]”,指的是在称为“source”的源中被称为“fullname”的字段。返回结果414是在属性412旁边显示的“jeantremblay”。在gui201中设置属性区域410以显示所选择的操作的属性。当使用多个嵌套操作(如下所示,每个嵌套操作具有其自己的属性)获得查询结果103时,该特征是有用的。

在图4c中,另一操作已被添加到操作区域406。该操作被称为“tosplit”,并且包括属性区域410中显示的三个属性。应当注意,操作的名称是只是说明性的,可能有所不同。可预定义操作,操作具有与其相关联的预定数量的属性,并且每个属性在操作中具有预定的目的或作用。例如,对于“tosplit”操作,第一属性指在其上执行操作的一串字符。在这种情况下,字符串是先前操作的结果,即“jeantremblay”。第二属性指在字符串中查找的内容,在这种情况下,这是一个空格。第三属性指在字符串中一旦遇到“空格”时,应该返回哪个文本块(即由“1”标识的第一文本块)。结果是“jean”,它显示在操作名称“tosplit”旁边。因此,此操作已设置为返回由空格分隔的字符串中的第一文本块。如果值“2”而不是“1”被输入作为第三属性,则返回的结果将是“tremblay”而不是“jean”。在结果区域404中,字段403a显示为“jean”,字段403b显示为“samuel”,字段403c被显示为“gates,will”,因为字符串“gates,will”中没有空格。如本实例所示,当没有其他选项可能时,可将操作设置为返回原始值。

图4d示出了通过添加另一操作来进一步扩展查询,以改变在字段403c中返回的结果。新添加的操作被命名为“switch”,它有五个属性。如在属性区域410中列出的,属性是初始值、比较运算符、要比较的值、如果结果为真要使用的值以及如果结果为假要使用的值。初始值设置为“find”,它本身是一个具有三个属性的操作。它的三个属性是源“source”中的字段“fullname”定义的字符串、要查找的文本分隔符(在本例中为逗号)以及文本分隔符的出现次数的计数。对于源“source”的字段“fullname”的第一行操作“find”的返回结果为“0”。实际上,在第一行的字段中没有逗号。因此,“switch”操作被设置为确定“0”是否“=”“0”。如果比较的结果为真,则返回的值是第四属性(即执行操作“tosplit”)。换句话说,如果字段中没有逗号,则返回由空格分隔的字符串中的第一文本块。

图4e示出了针对“switch”操作的假(false)结果(作为来自第五属性的结果)返回的值。添加了另一个“tosplit”操作作为第五属性。在这种情况下,文本分隔符是逗号而不是空格,要返回的文本的位置是第二文本块而不是第一个。因此,如果字段中有逗号,则返回逗号后的文本而不是空格之前的文本。图4f说明了数据源的目标字段“fullname”的第三行的操作结果。示出了字段403c中的结果以正确显示,因为它包含名称“will”。另外,显示转换的每个中间步骤及伴随的结果。用户可选择结果字段403a,403b,403c中的任何一个,并且在操作区域406中显示针对该字段返回的结果。

如图4a至4f所示,该方法允许在整个过程中向用户显示属性或最终结果的部分值。这是与使用编程脚本而不是本文所述的递归转换的方法的区别。编程脚本只输出最终结果。利用本方法,可针对操作的每一行系统地显示部分结果。因此,更容易找到问题/错误并修改所选节点来修复或增强怎样设置每个节点并返回结果。如图所示,可通过查看部分值来扩展目标字段的转换,诸如图4c中的转换,并知道转换需要被校正以适应第三行“gates,will”(根据图4d,4e和4f)。使用没有部分值的程序代码不能轻易完成这一点。

图5a至5d示出了使用递归转换来创建具有连接的目标字段的两个或更多个数据源的自动连接的示例性实施例。图5a和5b示出了具有两个源的gui201,即在数据源区域402中显示的“notes”502a和“average”502b。在图5a中,源“notes”502a被显示,而在图5b中,源“average”502b被显示。在查询结果区域404中,所示的目标字段403是“students”,“group”,“class”,“grade”和“average”。目标字段“students”和“grade”有单个源,即“notes”502a。目标字段“average”具有单个源,即“average”502b。目标字段“group”和“class”是来自源“notes”502a和“average”502b中的连接的目标字段。如图5b所示,在源“average”502b中的字段“grade”上应用操作“format”,以返回四位数值而不是字段的整个值。

图5c示出了从数据源“notes”502a和“average”502b创建连接的目标字段“class”的过程。如操作区域406所示,操作“join”具有多个属性,每个属性分别指相应数据源“notes”502a和“average”502b中的相同字段“group”。两个字段“group”的内容为1b,因此可直接执行“join”操作。相反,图5d示出了从数据源“notes”502a和“average”502b创建连接的目标字段“class”的过程。由于两个源中的“class”字段的内容不同,所以首先使用“left”操作对来自数据源“notes”502a中的字段“class”进行转换,以仅返回该字符串的前三个字符,即“che”。进行此转换后,然后可正确执行“join”操作,以获得目标字段“class”中的结果。没有“left”节点的应用,对两个不同的数据值执行连接,将因此返回等于来自两个数据源的行数之和的行数,因为没有连接匹配。

因此,可使用具有标识要连接的源和字段的属性的“join”操作,与标准目标字段类似地创建连接的目标字段。附加操作可嵌套在“join”操作中,以转换来自“join”操作的源中的一个或多个字段。可根据要连接到给定目标字段中的源的数量为“join”操作设置两个或更多个属性。

连接的目标字段用于绑定查询结果中的两个或更多个数据源。多个列可以是连接的目标字段。创建来自每个源的所有匹配行的索引。可使用索引来执行用于确定每个目标字段的值的转换。

本文所示的实例演示了查询具有多个行(其字段包含全名)的源的一种方式,以返回每个字段中的名称。也可基于本文给出的方法和系统来使用其他方式。例如,可选择不同的操作,可以以不同的顺序呈现操作,并且可使用不同的属性。操作的嵌套性质允许用户容易地访问转换的中间步骤,使得可容易地校正可能返回一个或多个字段的不正确结果的第一尝试,如上面的实例所示。

对来自数据源的数据执行操作,而不影响原始数据本身。因此,可使用相同的原始原数据并行地执行多个操作。只要查询过程中的步骤不是循环的,可使用无限制数量的操作来获取查询的结果。

在一些实施例中,查询语句100可用作其他查询语句100的数据源。图6中示出了一个这样的实例。当执行查询语句100a时,它调用其源查询语句100b,100c和100d。当查询语句被调用作为源时,可从相应查询结果的目标字段中提取数据。以相同的方式呈现操作,无论数据源是数据文件还是其他查询语句。例如,查询语句100a中的“tosplit”操作可具有作为属性“[query_statement_100b].[firstname]”来标识从其提取数据的源和字段。查询语句100b调用其源数据文件101w,而查询语句100c调用其源查询语句100e和100f。当执行查询语句100a时,这可使得连续执行查询语句100b,100c,100d,100e,100f,100g,100h,100i,100k,100l,100m,100n,100o,100p,100q,100r。查询语句100b将从数据文件101w提取数据,查询语句100o将从数据文件101m和101n提取数据,查询语句100p将从数据文件101o和101r提取数据,查询语句100g将从数据文件101u和101v中提取数据,查询语句100h将从数据文件101v中提取数据,查询语句100r将从数据文件101p和101q中提取数据,查询语句100q将从数据文件101s中提取数据,查询语句100n将从数据文件101t中提取数据。从数据源101m,101n,101o,101p,101q,101r,101s,101t,101u,101v,101w提取的数据从语句传递到语句直到到达初始调用的查询语句100a。

图7示出了与图6中的每个查询语句100相关联的查询结果103。每个执行的查询语句100a-100r将生成查询结果103a-103r。更具体地说,查询语句100a的执行将导致查询语句100b-100r的执行,这将生成查询结果103b-103r,这又将被用于生成查询结果103a。注意,在查询语句100a中没有指示使用除100b,100c,100d之外的任何查询语句来生成查询结果103a。每个查询语句仅标识其直接源。如果这些直接源中的任何一个是引用另一个源的另一个查询语句,则这独立于初始查询语句。

在一些实施例中,生成的查询结果可被保存以供重复使用。由于查询结果文件可能相当大,可创建包含信息的简化文件来存储例如查询语句名称、使用的参数值、源名称和最后写入日期。还可存储其他信息以确定查询语句是否可被重复使用。例如,如果在生成查询结果103a-103r之后保存该查询结果103a-103r,并且再次调用这些结果中的任何一个,则可使用保存的查询结果文件而不是重新生成查询结果。类似地,查询语句100也可被保存并在稍后的时间被重新使用。注意,可例如通过添加、删除或修改内容,改变数据时间戳,修改数据的格式,或对数据源进行任何其它类型的改变来修改数据源101。在这种情况下,可能需要重新生成查询结果103,这取决于其来源(直接或间接)是否经历了任何类型的改变。

图8示出了两个数据源101o和101s已经改变的实例。当调用查询结果103a时,确定查询结果103的各个链至的每个数据源101m-101n是否发生变化。重新生成在以发生变化的数据源结尾的链中找到的任何查询结果103以解释变化。对简化的文件使用的理论源的递归比较可确定是否可使用查询结果文件。以前保存在这些链中的查询结果可能会被删除并替换为新生成的查询结果。在该实例中,重新生成查询结果103a,103c,103d,103f,103h,103i,103l,103m,103p和103q。这样做,重新执行查询语句100a,100c,100d,100f,100h,100i,100l,100m,100p和100q。可检索并重新执行保存的查询语句100,而不必重新创建查询语句100a,100c,100d,100f,100h,100i,100l,100m,100p和100q。

注意,可在一些但不是全部的查询语句100中使用参数102。不是所有语句102都需要使用参数,并且它们不需要从一个语句传递到另一个语句。在一些实施例中,可将参数102设置为在同一会话期间在所有查询语句100中使用的全局参数。如果在调用诸如查询结果103a的查询结果时未设置参数102,则可使用默认值。还可为某些查询语句100提供自组织参数。使用自组织参数生成的查询结果可与其中的源和参数信息一起被保存。

图9是其中自组织参数[a],[b],[c]用于生成查询结果103的子集,即103a,103b,103e,103f,103q,103m和103n的实例。图10是使用与图9中用于生成查询结果103a相同的未变化的数据源和相同的目标字段(但参数[b]已经改变为[b])来执行查询语句100a的实例。因此,可再次使用不受参数变化影响的查询结果而无需重新生成。重新生成受参数变化影响的查询结果,即,使用参数[b]以及来自使用参数[b]的查询结果的那些查询结果。在该实例中,查询结果103b,103q,103e和103m使用参数[b],并且查询结果103a,103c,103d,103f和103i来自使用参数[b]的一个或多个查询结果。因此它们被重新生成。可保存新的查询请求103bb,103gg,103ee,103mm,103aa,103cc,103dd,103ff和103ii。实际上,以前保存的查询结果103bb,103g,103e,103m,103a,103c,103d,103f和103i不需要被删除,因为源没有改变。如果进行了具有相同数据源、目标字段和参数[a],[b],[c]的查询请求,则可使用先前保存的查询请求103a。

在一些实施例中,可能遇到混合场景,因此,改变一些而不是全部参数,并且改变一些而不是所有的源。重新生成以改变的数据源结尾的链中查找到的查询结果,以解释改变,并且还会重新生成受参数改变影响的查询结果。因改变的源而重新生成的查询结果将替代以前保存的查询结果,而因改变的参数而重新生成的查询结果将被添加到保存的查询结果集中。

参考图11至图13,现在将描述用于查询数据源的系统。在图11中,示出了数据查询系统1002。多个设备1010中的任何一个可通过连接1008远程访问数据查询系统1002。设备1010可包括任何设备,诸如个人计算机、平板电脑、智能手机等,其被配置为通过连接1008进行通信。在一些实施例中,数据查询系统1002本身可直接设置在设备1010之一上,作为下载的软件应用程序、固件应用或其组合。

一个或多个数据源101可直接集成到数据查询系统1002或设备1010中的任一个中,或者可与其分开设置(如图所示)。在远程访问数据源101的情况下,可经由连接1008进行访问。连接1008可采取各种形式,例如基于线的技术,诸如电线或电缆,和/或光纤。连接1008也可以是无线的,诸如rf、红外线、wi-fi、蓝牙等。因此,连接1008可包括诸如互联网、公共交换电话网(pstn)、蜂窝网络或本领域技术人员已知的其他网络。可使用使计算机网络内的设备交换信息的任何已知的通信协议来发生网络上的通信。协议的实例如下:ip(互联网协议)、udp(用户数据报协议)、tcp(传输控制协议)、dhcp(动态主机配置协议)、http(超文本传输协议)、ftp(文件传输协议)、telnet(telnet远程协议)、ssh(安全外壳远程协议)。

本文描述的各种数据源101可被设置为由计算机快速搜索和检索而组织的数据或信息的集合。数据源101可被构造成便于结合各种数据处理操作来存储、检索、修改和删除数据。数据源101可以是诸如一个或多个服务器的数据存储介质上的任何数据组织。

如图12所示,数据查询系统1002示例性地包括一个或多个服务器1100。例如,可使用与web服务器、应用服务器和数据库服务器对应的一系列服务器。这些服务器全部由图12中的服务器1100表示。用户使用设备1010中的一个访问或经由图形用户界面201直接在系统1002上访问服务器1100。除了其他事物外,服务器1100可包括在与存储器1102耦合的处理器1104上运行的多个应用程序1106a...1106n。应当理解,尽管本文呈现的应用程序1106a...1106n被示出和描述为单独的实体,但是它们可以以各种方式组合或分离。

由处理器1104可访问的存储器1102可接收和存储数据。存储器1102可以是主存储器,诸如高速随机存取存储器(ram)或诸如硬盘、软盘或磁带驱动器的辅助存储单元。存储器1102可以是任何其他类型的存储器,诸如只读存储器(rom)或诸如视频盘和光盘之类的光学存储介质。处理器1104可访问存储器1102以检索数据。处理器1104可以是可对数据执行操作的任何设备。实例是中央处理单元(cpu)、前端处理器、微处理器和网络处理器。应用1106a...1106n耦接到处理器1104并且被配置为执行各种任务。输出可被发送到设备1010或直接在gui201上显示。存储器1102示例性地包括预定义的操作和相关联的属性。存储器还可包括保存的查询语句和/或保存的查询结果。

图13是在处理器1104上运行的应用1106a的示例性实施例。应用1106a示例性地包括查询语句模块1202和查询结果模块1204。查询语句模块1202可被配置为接收查询请求。查询请求的参数可设置在查询请求内,也可单独提供,如上所述。查询语句模块被配置为生成包括至少一个数据源、至少一个目标字段、查询参数以及具有关联属性的多个嵌套操作的查询语句。查询语句模块1202还被配置为通过访问数据源、从数据源中的一个或多个字段检索数据并使用嵌套操作将检索到的数据转换成目标结果来执行查询语句。经转换的数据被提供给查询结果模块1204,查询结果模块1204被配置为通过用目标结果填充目标字段来生成查询结果。

应用1106a或诸如应用1106b的其他应用可被配置为在接收到另一查询请求时确定是否可使用先前存储的查询结果。应用1106a,1106b或另一应用可被配置为确定数据源链中的一个或多个源是否发生了改变,以重新生成受源改变影响的查询结果,并且删除先前存储的查询结果,该查询结果对应于重新生成的查询结果。应用程序1106a,1106b或另一应用可被配置为确定先前的查询语句和新接收的查询语句之间的一些参数的改变是否可允许重新使用查询结果链中的某些查询结果,而其他查询结果需要重新生成。除了初始查询结果之外,还可存储已改变参数的重新生成的查询结果。

注意,可以各种方式来标识数据源,诸如通过按名称识别位置或另一个查询语句,识别类型或格式,提供用于定义源字段的文件格式类型的头部或其他方式。目标字段也可以以各种方式定义,诸如使用文本值来确定输出层。可提供诸如字段的名称、字段的顺序、字段在最终结果中是否可见、以及如果该字段用于对最终结果进行排序的信息。关于所有查询语句使用的全局参数,它们可标识在调用最终查询语句的同时传递的值。它们可能在设置过程中设置为默认值。它们也可用作源路径、用于目标字段设置或过滤数据。

上述描述仅仅是示例性的,并且相关领域的技术人员将认识到可对所描述的实施例进行改变,而不脱离所公开的本发明的范围。尽管在框图中将其作为经由不同的数据信号连接彼此通信的分立组件的组来说明,但是本领域的技术人员将会理解,本实施例由硬件和软件组件的组合提供,其中一些组件是由硬件或软件系统的给定功能或操作实现,并且所示出的许多数据路径通过计算机应用或操作系统内的数据通信来实现。因此,为了说明本实施例的教导效率,提供了所示的结构。在不脱离权利要求的主题的情况下,本公开可以以其他具体形式实施。此外,相关领域的技术人员将理解,虽然本文公开和示出的系统、方法和非暂时性计算机可读介质可包括特定数量的元件/组件,但是系统、方法和非暂时性计算机可读介质可被修改为包括另外的或更少的这样的元件/组件。本公开也旨在涵盖和包含所有合适的技术变化。鉴于本公开内容的审查,属于本发明范围的修改对于本领域的技术人员将是显而易见的,并且这些修改旨在落入所附权利要求书内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1