查询一个或多个数据库的制作方法_4

文档序号:9529256阅读:来源:国知局
传送到服务 器。
[0124] 在步骤1804处,服务器生成五(5)个数据集来存储S化片段。运些数据集可W对 应如下五个S化命令:沈LECT、JOIN、W肥RE、GROUPBY和HAVING。
[01巧]在步骤1806处,服务器从模型输入选择叶1806。在步骤1808处,服务器基于该叶 数据将S化片段添加到一个或多个数据集。如上所述,叶数据可W包括有关叶的多种信息, 如叶标识符、该叶是类型I叶还是类型II叶的指示、该叶的细节集合和/或可访问该叶的 节点的指示。
[0126] 在一个示例实现中,如果该叶不可从模型输入的起始节点达到,则忽略该叶,并且 方法1800接续到步骤1810。如果该叶可从起始节点达到,则服务器将S化片段"{叶S化片 段}AS{:叶标识符}"添加到SELECT数据集。如果该叶是类型I叶,则服务器还将"{叶标识 符}"添加到GROUPBY数据集。如果该叶未连接到起始节点,而是连接到另一个节点,则月良 务器利用如下语法将与相关节点连接关联的S化片段添加到JOIN数据集:"LEFTJOIN{:节 点标识符} 〇N{节点连接S化片段}巧1]JOIN数据集。如果该叶具有required_nodes属性, 则对于每个requirecLnode节点,服务器利用如下语法将与该节点关联的S化片段:"LEFT JOIN{节点标识符}ON{节点连接S化片段}"添加到JOIN数据集。在一些实施方案中,节 点相关性意味着叶可W包括新属性(即,节点的集合),称为"required_nodes"。当作为叶 属性被包括时,此属性指定所生成的S化应该包括S化片段正确地工作所需的节点的连接。
[0127] 在步骤1810处,服务器确定模型输入中是否包含任何过滤器。如果不应用过滤 器,则方法1800接续到步骤1818。如果应用过滤器,则方法1800接续到步骤1812。
[012引在步骤1812处,服务器确定该叶是类型I还是类型II。如果该叶是类型I,则方 法1800接续到步骤1814。如果该叶是类型II,则方法1800接续到步骤1816。
[0129] 在步骤1814处,对于类型I叶,服务器通过将S化片段"{叶标识符} = {过滤器 值}"添加到WHERE数据集W将叶标识符添加到WHERE数据集。在步骤1816处,对于类型II叶,服务器通过将SQL片段"{叶标识符} = {过滤器值}"添加到HAVING数据集W将叶 标识符添加到HAVING数据集。
[0130] 在步骤1818处,服务器确定模型输入中是否还有叶要处理。如果没有,则方法 1800接续到步骤1820。如果还有叶要处理,则方法1800返回到步骤1806,如上文描述。
[0131] 在步骤1820处,服务器利用来自运五个数据集的片段构造S化查询。在一个实施 方案中,服务器通过从空白语句开始并执行如下步骤来构造S化查询:
[0132] ?追加"SELECT"+SELET数据集中的每个值,逗号分隔,
[013引?追加"FROM" + {节点标识符},
[0134] ?追加JOIN数据集中的每个值,
[0135] ?追加"WHERE"+WHERE数据集中的每个值,逗号分隔,
[0136] ?追加"GROUPBY"+GR0UPBY数据集中的每个值,逗号分隔,
[0137] ?追加"HAVING"+HAVING数据集中的每个值,W及
[013引?追加分号。
[0139] 服务器然后对一个或多个数据库执行所生成的S化查询。将结果作为结果输出返 回,如上文描述。 阳140] 杳询撤销
[0141] 数据库查询常常遇到的一个问题是,复杂的查询可能耗费非常长的时间才返回结 果。用户有时可能因长时间等待而不耐烦,并且可能在客户端设备上关闭查询输入窗口。用 户然后可能输入新查询,并向数据库发送第二个数据库查询。
[0142] 但是,在一些情况中,为用户所不知的,第一个查询可能仍在对该数据库执行中。 运可能导致第二个查询耗费长时间才返回结果,即使第二个查询是简单的。可能从一个或 多个用户发送一个或多个额外查询,进一步阻塞数据库。
[0143] 本发明公开的实施方案提供一种自动取消某些查询或"查询取消"的技术。图20 是根据示例实施方案的用于撤销查询的技术的概念示意图。如所示,系统2000包含客户端 2002、服务器2004和数据库2006。客户端2002是用于从服务器2004检索并显示信息的软 件应用。服务器执行还执行配置来构造数据库查询的软件应用。数据库2006是执行查询 的地方。
[0144] 在一个实施方案中,由客户端2002通过网络连接将执行模型查询的请求传送到 服务器2004。在一些实现中,浏览器应用中的用户选择节点和一个或多个叶作为模型输入, 为要执行的查询进行选择,然后在浏览器应用的Web页面上等待结果输出从数据库2006返 回。正如所描述的,一些数据库查询,因为数据的特性或查询的构造,需要过大的处理能力 和/或存储器来执行。运些相同查询往往导致其他同时进行的查询的性能下降。
[0145] 在一个实现中,一种用于撤销查询的方法包含图20中所示的步骤。在步骤S1处, 服务器2004通过网络接收模型查询的客户端请求。在客户端2002等待结果时,此连接保 持打开。服务器2004生成数据库查询并对数据库2006执行查询(步骤S2a),并响应该查 询所对应的查询标识符进行检索(步骤S2b)。
[0146] 当正在对数据库2006执行查询时,服务器2004W某个时间间隔检查至客户端 2002的网络连接是否存在(步骤S3)。在一个实现中,可W使用非阻塞套接字。例如,服务 器2004对客户端服务器连接执行非阻塞读取。如果非阻塞读取失败,则运指示客户端2002 不再监听来自数据库2006的响应。如果客户端连接检查失败,则运指示客户端2002不再 等待模型查询的响应(步骤S4)。在一个示例中,用户可能已经关闭浏览器应用中的浏览器 页面。服务器2004向数据库2006传送新的命令,使得服务器2006使用步骤S2中返回的 查询标识符停止该查询。或者,如果查询完成且客户端连接仍可用,则服务器2004在正常 过程中将结果返回到客户端2002。
[0147] 相应地,本发明公开的实施方案创建网络连接与执行查询之间的1对1映射。一 些实施方案依赖于此连接性来确定是否应该撤销查询。关闭的套接字意味着查询不应继续 执行,其促成查询的撤销。
[0148] 根据多种实施方案,套接字包含具有应用编程接口(API)的计算库,该应用编程 接口(API)允许一个计算设备(如客户端2002)与另一个计算设备(如服务器2004)通信。
[0149] 根据多种实施方案,正常套接字视为"阻塞"套接字,运意味着如果套接字连接是 打开的且从该套接字读取的尝试由第一计算设备执行到第二计算设备上,第一计算设备的 操作系统将等待直到从第二计算设备返回某个数据为止。运称为"阻塞",因为如果有应 该在对该套接字执行读取之后执行的指令,则除非作为套接字上的读取结果接收到某个数 据,否则运些指令将不会被触及,即,第一计算设备的操作系统"被卡住"等待来自第二计算 设备的数据。
[0150]另一方面,非阻塞套接字使得第一计算设备的操作系统能够生成错误而非仅是无 限地等待。在非阻塞套接字的某些实现中,某种错误类型意味着套接字没有数据可供它使 用。在一些实施方案中,设置非阻塞套接字包括使用文件或1〇(输入/输出)操作来设置 文件描述符。例如,可W用于对文件描述符执行多种操作的函数fnctio可W将文件描述 符设置为"0_N0NBL0CK"。
[0151] 一旦两个计算设备之间连接套接字且该套接字被设为非阻塞之后,本发明公开的 实施方案会尝试使用命令read(l)从该套接字读取单个字节。readO函数在IE邸标准 1003. 1中有所描述。
[0152] 在一个实施方案中,当没有数据要从连接的套接字读取时,可W使用特定错误代 码。例如,可W产生的错误消息包括"EAGAIN"或"EW0ULDBL0CK"。在一些实施方案中,对于 Web请求,在浏览器完成初始请求之后,来自服务器端不再有要从套接字读取的数据,即, Web浏览器发送完整的请求,然后不再发送任何数据,只是等待获取来自服务器的响应。
[0153] 图21是根据一个实施方案的用于撤销查询的方法步骤的流程图。如所示,方法 2100开始于步骤2102,其中服务器计算设备,如Web服务器2004在从另一个计算设备上的 Web浏览器接收到请求时接受套接字。该请求可W是请求服务器计算设备对数据库执行查 询。在一个实施方案中,接受套接字包括取得至套接字的引用W及调用函数,如"accept0" 来接受套接字上的连接。在步骤2104处,服务器计算设备读取Web浏览器发送的请求中包 含的所有数据。
[0154] 在步骤2106处,计算设备确定该请求需要对数据库执行查询(如,S化查询或其 他类型的查询),对数据库执行该查询,并将该查询的查询标识符映射到该套接字。在步骤 2108处,服务器计算设备将该套接字添加到S化请求套接字的列表中。该列表存储在服务 器计算设备的存储器中,并由该服务器计算设备来维护。
[0155] 在步骤2109处,服务器计算设备确定对数据库的查询是否完成。如果服务器计算 设备确定该查询已完成,则方法2100接续到步骤2118,如下文描述。如果服务器计算设备 确定该查询尚未完成,则方法接续到步骤2110。
[0156] 在步骤2110处,服务器计算设备调用对套接字的读取请求(如read(l))。在一些 实施方案中,服务器计算设备配置来调用对S化请求套接字的列表中包括的每个套接字的 读取请求。在步骤2112处,服务器计算设备确定来自该读取请求的响应是否包含指示套接 字另一端的另一个计算设备已连接的错误代码,或来自该读取请求的响应是否是任何其他 错误代码。指示套接字另一端的另一个计算设备已连接的错误代码的示例是"EAGAIN"或 "EW0UL孤LOCK"。
[0157] 如果错误代码指示套接字另一端的另一个计算设备已连接,则方法接续到步骤 2114,其中服务器计算设备等待预定的时间期间。例如,服务器计算设备可W等待5秒,然 后才再次尝试检查套接字连接性。方法2100然后返回到步骤2109,如上文描述。因此,读 取请求是按周期性间隔时间对套接字执行的。该间隔时间可W是可变的和/或可配置的。
[0158] 如果在步骤2112处,来自读取请求的响应是任何其他错误代码(运意味着套接字 另一端的计算设备未连接),则方法2100接续到步骤2116,其中该服务器计算设备确定套 接字另一端的计算设备已断开连接,并使用启动该查询时生成的查询标识符对数据库执行 数据库指令来停止该查询,其中该数据库配置来响应此类停止查询指令停止查询。在一些 实施方案中,该数据指令包含对数据库的第二数据库查询。
[0159] 在步骤2118处,服务器计算设备从S化请求套接字的列表中移除该套接字。方法 2100然后终止。
[0160] 除非此处另行指示或上下文明显地抵触,否则描述公开的主题的上下文中(尤其 是所附权利要求的上下文中)使用术语"一个"和"该"和"至少一个"W及类似引述应视为 涵盖单数和复数。除非此处另行指示或上下文明显地抵触,否则在一个或多个项目列表之 前使用术语"至少一个"(例如,"至少一个"A和B)应视为表示选自所列出的项目中的一个 项目(A或B)或所列出的项目中的两个或更多个的任何组合(A和B)。除非另行注释,否 则术语"包括"、"具有"、"包含"和"含有"应视为开放性术语(即,表示"包括但不限于")。 除非本文中另行指示,否则本文中引述多个值的范围仅是旨在用作简述方法来个别地指代 落在该范围内的每个离散的值,并且每个离散的值均如同它在本文中被个别地引述一样来 并入本说明书中。除非本文中另行指示或上下文明显地抵触,否则本文描述的所有方法可 W按任何适合的顺序执行。除非另行要求保护,否则本文中提供的所有和全部示例或示例 语言(例如,"如")仅是旨在更好地说明公开的主题而不构成对本发明范围的限定。本发 明说明书中的语言均不应视为将任何非要求保护的元素指示为对于实施本发明是必需的。
[0161] 本领域技术人员在阅读前文描述后将明了本文公开的实施方案的变化。本发明人 预期到技术人员视情况利用此类变化,并且本发明人预想到本发明W本文具体描述的W外 的方式实施。因此,本发明依据适用法律所允许的包括所附权利要求中引述的主题的所有 修改和等效物。而且,除非本文另行说明或上下文明显地抵触,否则其所有可能变化中的上 述元素的任何组合均为本发明所涵盖。
[0162] 上文描述的本发明主题的方面,包括实施方案,可W单独地或与一个或多个其他 方面或实施方案组合时均是有利的。在不限制前文描述的情况下,下文提供本发明编号 1-55的某些非限制性方面。正如本领域技术人员在阅读本发明后所明了的,单独编号的方 面的每一个可W与前面或后面的单独编号的方面中的任一个一起使用或进行组合。运旨在 支持对方面的所有此类组合,且不限于下文明确提供的方面的组合。
[0163] 1. 一种用于查询一个或多个数据库的方法,其包括:
[0164] 在计算设备处接收起始节点的选择,其中所述起始节点包括在与一个或多个数据 库表对应的模型中;
[0165] 在所述计算设备处接收第一集合的一个或多个叶的选择,其中每个叶连接到所述 模型中的节点;
[0166] 基于所述起始节点和所述第一集合的叶生成第一数据库查询;
[0167]基于对所述一个或多个数据库执行的所述第一数据库查询,提供第一结果输出; [016引接收在所述第一结果输出中结果的选择;
[0169] 基于所述第一结果输出中所述结果的选择,生成第二数据库查询,其中所述第二 数据库查询与所述结果所关联的细节集合关联;W及
[0170]基于对所述一个或多个数据库执行的所述第二数据库查询,提供第二结果输出。
[0171] 2.根据1所述的方法,其中所述一个或多个数据库是关系数据库,W及所述第一 和第二数据库查询是SQL(结构化查询语言)查询。
[0172] 3.根据1或2所述的方法,其中所述第一集合的叶中的每个叶与第一叶类型或第 二叶类型中的一个关联。
[0173] 4.根据3所述的方法,其中所述第一结果输出包括所述第一集合中每个叶构成的 列W及与所述第一集合中所述第一叶类型关联的叶的每个唯一元组的值构成的单独行。
[0174] 5.根据4所述的方法,其中对于所述第一结果输出中与所述第二叶类型关联的叶 对应的每个列,基于所述行中的数据在所述列的每个行中提供汇总值。
[0Π5] 6.根据5所述的方法,其中所
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1