用于针对存储器内的多个存储区域扫描指定量的结果的方法、系统和计算机程序的制作方法

文档序号:10663603阅读:532来源:国知局
用于针对存储器内的多个存储区域扫描指定量的结果的方法、系统和计算机程序的制作方法
【专利摘要】根据本发明的实施例,提供用于针对存储器内的多个存储区域扫描指定量的结果的方法、系统和计算机可读介质,其中每个存储区域与一区间关联,所述区间包括指示该存储区域内的值的值范围的第一和第二区间值。所述技术包括:将第一区间值按次序排序,其中第一区间值的次序确定所述多个存储区域的扫描次序;确定结果值,其中所述结果值是上界、下界或在所述指定量的结果之外;以及检查已排序的第一区间值,并且响应于确定的结果值与该存储区域的第一区间值的比较而扫描对应个体存储区域。在一些实施例中,在确立已实现所述指定量的结果并且已排序的第一区间值的列表中的第一区间值大于确定的结果值时退出扫描。
【专利说明】
用于针对存储器内的多个存储区域扫描指定量的结果的方法、系统和计算机程序
技术领域
[0001]本发明实施例涉及减少用于查询评估的计算工作负荷,并且更具体地讲,涉及通过使用区域图中的信息控制从表扫描的条件退出来减少计算工作负荷。
【背景技术】
[0002]使用查询搜索信息可导致搜索大数据库表。由于与排序和重新组织关联的较大的计算成本,通常不按照已排序形式保持存储在大数据库表中的信息。将一组数据值映射到与那些数据值相关的一组记录的索引可被用于提供按照已排序次序存储数据的效果。然而,存储大数据库表的分布式数据仓库可在多个存储盘上分割一组记录,并且把将给定数据值与和该数据值相关的记录进行映射的索引的一部分布置在同一位置可能需要另外的网络开销,导致较差的延时和增加的计算工作负荷。
[0003]当查询评估需要扫描大表时,一些数据仓库管理系统可保持关于表存储的每个区域的元数据。
[0004]US 8572091公开了:一种实现可缩放数据存储服务的系统可代表服务客户机在非关系数据仓库中保持表。请参见摘要、附图1-25、第I栏第5-26行、第45栏第1-67行和权利要求1-35。
[0005]US 8296306涉及一种在与数据集的大小成线性比例的时间中仅从数据集检索具有最大(或最小)键值的k个数据元素(S卩,前k个结果)的算法。请参见摘要、附图1-2、第2栏第5_67彳丁、第3栏第1-67彳丁和权利要求1-14。
[0006]US 8239404描述了一种图遍历,所述图遍历高效地识别同时具有入口、出口和对应的边的强连通分量。通过在强连通分量已被识别之后扫描每个节点能够识别入口节点和出口节点,但重新访问这些节点导致不想要的开销。请参见摘要、附图1-4、第I栏第5-67行、第2栏第1-5行和权利要求1_11。
[0007]US 8204873公开了一种用于在数据库服务器的数据库引擎上优化查询表达式的方法。请参见摘要、附图1 -20、第I栏第5-43行、第12栏第1-67行和权利要求1 -15。
[0008]US 8010766公开了一种用于管理表扫描处理的方法、信息处理系统和计算机可读介质。请参见摘要、附图1-10、第2栏第65-67行、第8栏第1-67行和权利要求1-20。
[0009]US 6154740公开了一种用于在显示装置上显示已排序列表的系统和方法以及一种包括所述系统或所述方法的计算机。请参见摘要、附图1-3、第I栏第5-67行、第2栏第1-47行和权利要求1-20。
[0010]US 6973452公开了:大信息空间被划分成许多较小的信息盘区(extent)。利用关于这些盘区包含的信息的统计对这些盘区做注解。当对信息的搜索包括基于值的限制时,能够将想要的值范围与每个盘区的值范围进行比较。如果想要的值范围位于所述盘区的范围外部,则所述盘区不会持有所述想要的值并且不需要被包括在所述搜索中。
[0011]US 20130251235公开了一种用于自动地对与游戏相关的文档进行处理和排序的系统。请参见摘要、附图1-5、第
[0018]-
[0052]、
[0055]-
[0062]行和权利要求1-38。
[0012]US 20130046784公开了一种将符号串与规则集进行匹配的方法和系统。请参见摘要、附图 1-4、第
[0005]-
[0007]、
[0044]-
[0050]行和权利要求 1-10。
[0013]在US20120330954中,一种实现可缩放数据存储服务的系统可代表客户机在非关系数据仓库中保持表。请参见摘要、附图1-25、第[0001 ] - [ 0003 ]、[ 0170 ] -[ 0178 ]行和权利要求1-35。
[0014]US 20120317128公开了用于最佳地处理多范围扫描中的N个排序查询的方法和设备,包括:基于查询中所包括的第一数量的提取的记录分配缓冲器;在查询中所包括的第一列表中提取与第一属性相关的第一数据并且将提取的第一数据存储在所述缓冲器中;在查询中所包括的第一列表中提取未提取的与第一属性相关的第二数据;以及通过将存储在所述缓冲器中的数据与第二数据进行比较来更新所述缓冲器以满足所述查询,其中所述查询是用于基于第一属性和第二属性排序的至少一个记录的多范围扫描中的N个排序查询。请参见摘要、附图1-7、第
[0003]-
[0018]、
[0029]-
[0092]行和权利要求1-20。
[0015]US 20110082854公开了用于多租户数据库系统的查询优化的方法和系统。请参见摘要、附图 1-9、第
[0002]-
[0010]、
[0106]-
[0125]行和权利要求 1-45。
[0016]以下列出其它感兴趣的文档:
[0017]HER0D0T0U等,“A SQL-Tuning-Aware Query Optimizer”,Proceedings of theVLDB Endowment,Vol 3,N0.1,2010年9月13-17,第1-12页。
[0018]IP.COM等,“Method And System of Restructuring Imperfect Loop Nest WithEarly Exits to Facilitate Locality Transformat1ns”,IPC0M000232309D,2013年10月,第卜7页。
[0019]IP.COM等,“System And Method For GROUP BY With IN-LIST SubqueryOptimizat1n”,IPC0M000229573D,2013年8月6日,第 1-6页。
[0020]GRAEFE , uFast Loads and Fast Queries,,,Springer-Verlag,Berl in,Heidelberg,DaWaK 2009,LNCS 5691,第111-124页。

【发明内容】

[0021]根据第一方面,提供一种用于针对存储器内的多个存储区域扫描指定量的结果的计算机实现的方法,其中每个存储区域与一区间关联,该区间包括指示该存储区域内的值的值范围的第一和第二区间值,所述计算机实现的方法包括:将第一区间值按一次序排序,其中第一区间值的次序确定所述多个存储区域的扫描次序;确定结果值,其中所述结果值是上界、下界或在所述指定量的结果之外;以及检查已排序的第一区间值,并且根据需要响应于该存储区域的第一区间值与确定的结果值的比较而扫描对应的个体存储区域。
[0022]根据第二方面,提供一种系统,所述系统包括:存储器,包括多个存储区域,其中每个存储区域与一区间关联,所述区间包括指示该存储区域内的值的值范围的第一和第二区间值;网络接口;和处理器,被配置为:将第一区间值按一定次序排序,其中第一区间值的次序确定所述多个存储区域的扫描次序;确定结果值,其中所述结果值是上界、下界或在指定量的结果之外;以及检查已排序的第一区间值,并且根据需要响应于该存储区域的第一区间值与确定的结果值的比较而针对存储器内的对应的个体存储区域扫描所述指定量的结果O
[0023]根据第三方面,提供一种用于向用户提供信息的计算机程序产品,包括包含计算机可读程序代码的计算机可读存储介质,所述计算机可读程序代码当由处理器执行时使处理器:对于存储器内的多个存储区域,将第一区间值按一定次序排序,其中第一区间值的次序确定存储区域的扫描次序,每个存储区域与一区间关联,所述区间包括指示该存储区域内的值的值范围的第一和第二区间值;确定结果值,其中所述结果值是上界、下界或在指定量的结果之外;以及检查已排序的第一区间值,并且根据需要响应于该存储区域的第一区间值与确定的结果值的比较而针对存储器中的对应的个体存储区域扫描所述指定量的结果O
[0024]在其它实施例中,这里公开的技术可包括对第二区间值进行排序。
[0025]根据实施例,提供一种用于使用几乎已排序的映射图较早退出松散地排序和/或分组的关系的表扫描的解决方案。
【附图说明】
[0026]通常,各种附图中的相同的标号被用于指定相同的部件。
[0027]现在将仅作为例子并且参照下面的附图描述本发明的实施例:
[0028]图1是用于与本发明的实施例一起使用的示例性计算环境的示图;
[0029]图2A是根据本发明的实施例的表存储的区域(盘区)的例子的示图;
[0030]图2B是根据本发明的实施例的与表存储的区域对应的元数据的例子的示图;
[0031]图3是一般地示出根据本发明的实施例的使用与存储区域关联的元数据确定是否扫描该存储区域的过程流程图;
[0032]图4A-4B是根据本发明的实施例的基于图3的流程图的更具体的过程流程图并且示出元数据可被用于控制从表扫描的条件退出的方式;
[0033]图5是示出根据本发明的实施例的与存储区域关联的元数据可在存储区域中的记录被添加或删除时被更新的方式的另一过程流程图;
[0034]图6是根据本发明的实施例的系统/设备的例子。
【具体实施方式】
[0035]数据仓库查询可频繁地对一组结果值进行排序并且将所述一组结果值限制为结果值的子集。典型方法包括:响应于查询而扫描大数据表以发现结果,对结果进行排序和/或聚合,并且丢弃除例如一组前N个结果(其中N是任何整数(例如50))之外的所有结果。
[0036]当大表被存储在盘上时,它可足够大或足够碎片化,从而将盘磁头移动到许多不同盘区域以搜索所述大表变得耗时。与存储区域对应的元数据可被用于描绘所述存储区域内所包含的表数据。例如,第一区间值可代表针对行的每个范围的每个列的最小数据值,并且第二区间值可代表针对行的每个范围的每个列的最大数据值。第一和第二区间值都代表可针对各种存储区域确定的元数据的类型,并且(结合另外的信息的类型)也可被称为“区域图(zone map)”。根据本发明实施例,使用区域图识别存储区域内的特定数据范围减少盘扫描时间和计算负荷。应该注意的是,区域图的最小值和最大值可以是保守的。换句话说,区域图条目的最小值可小于数据的对应存储区域的实际最小值(例如,由于记录删除等),并且类似地,区域图条目的最大值可大于数据的对应存储区域的实际最大值。
[0037]本发明的实施例提供用于使用区域图在满足指定条件时较早退出查询评估的技术。通过对区域图的最小数据值(也被称为第一区间值)的列表(或者替代地,最大数据值(也被称为第二区间值)的列表)进行排序,表扫描可在确定可能是前N排序的一部分的所有结果已被识别之后退出,例如停止读取表。因此,这里公开的技术可从I/O操作(诸如,读/写操作)减少计算需求。在优选实施例中,这里提供的技术适用于包括前N排序的查询,即后面跟随有“L頂IT”子句的“ORDER BY”子句。
[0038]现在参照图1,示出用于与本发明实施例一起使用的示例性计算环境。具体地讲,该环境包括一个或多个客户机或终端用户系统100和一个或多个服务器系统110和120。主机服务器系统110和信息服务器120可彼此远离,并且通过网络130通信。源于客户机系统100的查询请求可被发送给信息服务器120以搜索数据库存储单元140上的存储的数据。网络130可由任何数量的任何合适的通信介质(例如,广域网(WAN)、局域网(LAN)、互联网、内联网等)实现。替代地,服务器系统110和120可相对于彼此位于本地,并且经任何合适的本地通信介质(例如,局域网(LAN)、硬连线、无线链路、内联网等)通信。在112和122示出网络接口单元。
[0039]客户机系统100使用户能够向信息服务器系统120提交文档(例如,用于文档收集的文档、用于分析的文档等)以便存储在数据库存储单元中。如这里所讨论,文档(或其它信息)可被添加到作为存储区域(也被称为盘区)的已有数据库存储。
[0040]数据库存储单元140可存储用于分析的信息(例如,前N搜索的结果等),并且可由任何传统或其它数据库或存储单元实现。数据库存储单元140可相对于信息服务器120位于本地或位于远处,并且可经任何合适的通信介质(例如,局域网(LAN)、广域网(WAN)、互联网、硬连线、无线链路、内联网等)通信。客户机系统100可提供图形用户(例如,GUI等)或其它接口(例如,命令行提示、菜单屏幕等)以从用户请求关于想要的文档和分析的信息,并且可提供包括结果的分析的报告(例如,文本分析、搜索结果、概况得分等)。
[0041]多个数据库存储单元140可存在于数据仓库中。信息服务器120可按照主机服务器110的指示存储信息并且从数据库存储单元140检索信息。主机服务器110从客户机系统100接收请求并且答复客户机系统100。在一个实施例中,数据库存储单元140内的存储空间可被划分为几个分区,包括:主分区,用于存储用户信息;镜像分区,用于存储主信息的备份拷贝;临时分区,用于按照信息服务器120的指示保存中间结果;和核心分区,用于保存关于数据库存储单元140内的信息的物理布局的信息。
[0042 ]参照图2A,本发明的实施例通过将大信息空间160划分成多个较小的信息区域170和180(也被称为“盘区”或“存储区域”)来操作。每个盘区可被进一步细分为许多连续的固定大小或可变大小子盘区块。使用固定大小的优点在于:某些计算变得更快并且不那么复杂。在本发明的替代实施例中,基于总体数据库的大小或其它特性,固定大小也可被动态地改变。基于例如属性的类型,可变块大小可被动态地修改。例如,如果最小数据值(也被称为第一区间值)和最大数据值(也被称为第二区间值)表示时间戳数据,则盘区的大小可被改变,以使得特定时间段期间的所有数据被存储在一个数据块中。块是保存整个信息空间的数据库存储单元140和能够检查并且操纵信息的信息服务器120之间传送的最小单位。在一个实施例中,块可以是128K字节,但其它大小也能够工作。
[0043]盘区170、180是方便的存储分配的单位,从而当信息空间增长时,它的增长被量化为盘区单位。尽管盘区内的地址空间是连续的(即,没有孔),但信息空间160可包括不连续的盘区,因为不存在较晚的盘区的分配应该产生与任何较早的分配的地址范围具有任何固定关系的地址范围的要求。
[0044]参照图2B,本发明的实施例利用关于盘区包含的信息的统计(例如,元数据)对盘区做注解,并且这种信息可被作为条目存储在几乎已排序的映射表或列表200中。如图2B中所示,几乎已排序的映射表200显示包括表标识符210、列索引220、最小数据值230、最大数据值240和盘区标识符250的结构。在260(1)-260(N)显示元数据的多个条目。表标识符210唯一地指定可与例如关系数据库表对应的信息空间。在一个实施例中,它是唯一地识别关系数据库表的4字节数值。列索引220唯一地识别由表标识符210识别的信息空间内的特定类的信息。在一个实施例中,列索引220是表示由表标识符210识别的关系表中的列的2字节数值。在另一实施例中,列索引值220可对应于在关系表内定义列的次序。
[0045]在本发明的一个实施例中,最小数据值230和最大数据值240可以是能够保存不同类型的数据值(包括日期、时间、日期-时间、整数值等)的8字节量。在由列索引220表示的列的定义中指定由最小数据值和最大数据值保存的数据的实际类型。在一个实施例中,盘区标识符250可以是指定由表标识符210指定的信息空间内的特定盘区的2字节数值。较大存储分区将会使用4字节盘区标识符或较大盘区。
[0046]最小数据值230和最大数据值240对应于盘区内的特定种类的信息的最小数据值和最大数据值。当对信息的查询评估包括基于值的限制时,能够将所述值与和每个盘区关联的元数据(例如,每个盘区的最小数据值)进行比较以确定该盘区是否应该被搜索。以下结合图3和4描述这些技术。
[0047]区域图通常使用少量的盘空间,可与它们描述的对应数据位于同一位置,将最小量的计算延时引入到所述系统中,并且可在没有复杂的数据库管理经验的情况下被保持。要注意的是,区域图的概念不限于图2中示出的特定类型的元数据信息。用于描绘存储区域(盘区)的另外的类型的元数据信息被理解为落在这里公开的实施例的范围内。
[0048]图3提供本发明的实施例的一般概述。操作310针对存储器内的多个存储区域扫描指定量的结果,其中每个存储区域与一区间关联,所述区间包括指示该存储区域内的值的值范围的第一和第二区间值。在操作320,第一区间值按次序排序,其中第一区间值的次序确定所述多个存储区域的扫描次序,例如按照升序或降序。在操作330,确定结果值,其中所述结果值是上界、下界或在所述指定量的结果之外。在操作340,检查已排序的第一区间值,并且对于对应的各个存储区域,响应于确定的结果值与该存储区域的第一区间值的比较来进行扫描。
[0049]参照图4A-4B,示出在图3的流程图中提供的更详细的一系列操作的示例性流程图。应该理解,这里提供的技术可包括图4A-4B中示出的操作中的一个或多个操作的替代排序。例如,可发生操作的不同排序以实现相同结果,并且这里公开的技术包括所述操作的不同排序。
[0050]本发明实施例可被应用于包括前N排序的查询(例如,经与“LIMITN”子句组合的“ORDER BY”)。前N排序通常使用部分排序算法对m个元素的阵列进行排序,从而前N个结果包含例如按照升序(如果已排序)的元素m的最小值。通常,如果元素m的数量大于前N个元素的数量,则前N排序包含m个元素的阵列的元素的子集。尽管当仅想要靠前的结果时部分排序算法节省与排序关联的许多工作,但这种算法不减少关于I/O操作(诸如,读/写)的工作负荷。
[0051]如果像前N排序中一样保持聚合数据结构,则本发明实施例也可被应用于包括后面跟随有前N排序的分组操作的查询(例如,经“GROUP BY”、“ORDER BY”和/或“UMIT N”子句,其中由分组列的任何子集确定次序)。
[0052]本发明实施例还可包括使用保留最好的N组的前N排序数据结构执行分组。例如,查询可对一个或多个列执行分组操作,例如“SELECT...GROUP BY A,B”。分组操作的结果可被排序,从而排序键是分组键的子集-例如“ORDER BY A”、“ORDER BY B”或“ORDER BY A,B”。最后,像“LIMIT 10”中一样,可限制结果。(通过找到新的记录所属于的已有组,或通过创建新组,新的记录可被分组)。可基于一个或多个排序键(例如,诸如等于一个或多个排序键)识别组,并且指定量的结果包括不同的组(例如,通常指定量的结果将是指定量的不同的组)。类似于没有“GROUP BY”操作的前N排序,在升序排序的存储区域的最小值超过前N数据结构中的当前最差分组键的情况下,或者在存储区域的最大值小于前N排序数据结构中的当前最差分组键的降序排序中,能够避免扫描存储区域。
[0053]还应该理解,区域图不是意图局限于单个第一区间值或单个第二区间值,而是可包含多个区间,每个区间对应于特定类型的数据的最小值和最大值。
[0054]再次参照图4A,在操作410,接收查询请求。在操作420,确定是否已针对每个存储区域创建元数据(例如,区域图)并且确定元数据(例如,区域图)是否是最新的。在操作425,如果不存在区域图,则创建/更新区域图。在操作430,确定与查询相关的存储区域/盘区(待扫描),并且建立/创建包含描绘这些相关存储区域的元数据的列表。在操作440,在执行1/0操作之前,可按照升序或降序使用作为前N排序的主排序键的列对区域的这个列表进行排序。作为产生待处理的存储区域的列表的例子,如果已知存储区域包含具有100和200之间的列值的记录(例如,如区域图元数据中所指示),则当评估具有已知范围之外的范围值的查询(例如,具有值500的查询)时,该评估能够排除从而不扫描该整个存储区域。如这里所讨论,区域图存储例如针对每个范围的行的、每个列的最小数据值和最大数据值。因此,正是已排序列表中的区域图数据的次序确定表扫描的次序。信息空间内所包含的数据不需要相对于排序列被排序、部分排序或整理。
[0055]如果前N排序优选小值(例如,升序排序),则存储区域的列表可被按照最小数据值(即,第一区间值)排序,并且没有小值的区域将会被移动到列表的末尾。如果前N排序优选大值(例如,降序排序),则存储区域的列表可被按照最大数据值(即,第二区间值)排序,并且没有大值的区域将会被移动到列表的末尾。
[0056]在图4B的操作450(从图4A的操作440继续),选择与已排序列表中的第一条目对应的存储区域。在操作455,基于查询处理选择的存储区域。在操作460,确定前N排序中的值中的结果值X或最差值x(假设存在至少N个结果)。要注意的是,为了简单,这个步骤假设处理单个存储区域将利用至少N个值填充前N个结果。如果情况并非如此,则另外的存储区域将会被处理,直至满足这个条件。在操作462,确定已排序列表的第一条目的区域的最小数据值min(Rl)。操作462提供用于将结果值X与存储区域的最小数据值进行比较的条件表达式。当处理前N排序时,如果第N个值是x(当前“最差”值),则包含大于X的最小数据值的区域不需要被扫描(针对升序排序)。如果不满足这个条件,则在操作470选择已排序列表的下一个条目。在操作475,基于查询处理该存储区域。在操作480,最差值X被更新。重复这一系列的操作,直至满足指定的条件。一旦满足这个条件,不存在与前N个结果交叠的另外的值。如果前N搜索的第N个值是X并且区域的最小数据值min(Rl)大于X的值,则该整个存储区域可被丢弃。
[0057]此外,通过按照最小数据值对选择的存储区域的列表进行排序,一旦找到存储区域Rl从而Rl的最小数据值大于前N排序的最差值X,则所有随后的区域R2、R3等也会具有大于X的最小数据值。作为结果,扫描可较早退出并且停止读取数据,如以下参照式I以及在操作465所示。
[0058]如果min(Rl)>x,(式I)
[0059]则min(R2)>=min(Rl)>x
[0060]具有超过X的最小数据值的存储区域在前N个结果内没有结果,因此,整个存储区域能够被丢弃,因为它不需要被包括在该搜索中。此外,一旦列表中的一个存储区域已被丢弃,列表中的所有随后的存储区域可被丢弃(假设存储区域的列表已被排序)。在许多情况下,当达到剩余区域都不可能持有将会在前N排序之后留下的值的点时,这将会允许较早退出表扫描。对于小的N,这里提供的技术有效地将答复查询所需的I/O减少到绝对最小值,导致显著性能影响。
[0061]应该注意的是,在具有多个排序键的情况下,以上比较(例如,式I)适用-具有等于X的值的区域图条目不能自动地被丢弃,因为较低优先级排序键(例如,第二排序键)可确定应该包括该条目。然而,在使用单个排序键的情况下,则可如式2所示改进以上比较。
[0062]如果min(Rl)>= x,(式2)
[0063]则min(R2)>=min(Rl)> = x
[0064]当前最差结果也可被称为“结果值”。尽管图4将结果值表示为前N排序的当前最差值(即,升序排序的上界和降序排序的下界),但要注意,本发明实施例也可包括所述指定量的结果之外的值。所述指定量的结果之外的值包括大于实际上界的值以及小于实际下界的值。上界是前N排序的值中的最大值。下界是前N排序的值中的最小值。
[0065]还应该注意的是,当扫描继续进行时,结果值通常随着时间过去而改进(例如,如果结果值是最小值,则结果值可随着扫描继续进行而进一步减小并且识别新的最小值)。改进结果值允许在扫描继续进行时跳过甚至更多的数据,并且因此,进一步减少来自I/O操作的计算工作负荷。
[0066]从前N排序算法,本发明实施例向I/O层提供反馈,以便减少计算工作负荷。如上所述的较早退出的决定允许停止关联的I/O操作,并且因此,向I/O层提供一种形式的反馈。对区域图条目的列表进行排序提供优化-一确定较早退出前N排序,就可避免来自I/O操作的关联的计算工作负荷。
[0067]因此,当查询针对大信息空间扫描指定范围中的值时,根据本发明实施例,与每个存储区域关联的区域图数据的列表被创建、排序和检查以确定存储区域是否可能包含前N排序的所述指定范围中的值。仅能够包含所述指定范围内的值的区域被扫描;不需要考虑其它区域。这里描述的技术允许显著减少扫描大信息空间所需的时间的量。
[0068]这里提供的技术也允许预测前N个结果的最好的可能的早期估计。例如,如果第一存储区域具有指示1-5的值的范围的对应区域图条目,并且第二存储区域具有指示3-20的值的范围的对应区域图条目,则相关数据将会更可能落在第一区域内(假设使用升序排序),并且这个区域将会被首先读取。因此,已排序元数据的使用允许以最佳方式识别相关结果。
[0069]在其它实施例中,这里提供的技术可被用于在下游操作是总聚合min(column)或max(C0lumn)操作时获得最佳地较早退出表扫描;这是限制是I并且选择的列是排序键的前N排序的退化情况。
[0070]在这种情况下,部分排序操作可退化至仅保存一个记录(例如,具有排序键的最小值的记录或具有排序键的最大值的记录)的操作或由该操作替换。对于保存具有排序键的最小值的记录的操作,由对应区域图条目指示的其最小值高于排序键的任何存储区域可被跳过。(替代地,如果操作保存具有排序键的最大值的记录,则其最大值小于排序键的任何存储区域可被跳过)。即使当数据部分地或完全地无序时,这种优化也可以是有效的,并且在评估区域图的初始处理中排除非常少的存储区域。如果存在单个排序键,则一找到小于或等于每个剩余区域图条目的最小值的值,操作就可退出。如果存在多个排序键,则一找到小于每个剩余区域图条目的最小值的值,操作就可退出。
[0071 ] 在其它实施例中,对于min(reg1n)_max(reg1n)几乎是每个区域的列的整个范围的较差地组织的列,仍然将会存在端点的某种变化。因此,最小的几个值可能仅出现在几个存储区域中。这些存储区域将被首先扫描以选择将排除剩余存储区域的足够小的“结果值”。因此,对于前N排序中的足够小的N,这里提供的技术通常产生良好的结果。
[0072]本发明实施例不限于特定类型的计算环境。例如,本发明实施例可适用于包括几个计算机或处理的系统,每个计算机或处理可独立地执行前N排序以产生前N个结果的局部列表。每个独立列表可被合并,从而保存合并之后的前N个结果。因此,在这种情况下,每个计算机或处理可独立地产生前N个结果的列表,并且可彼此独立地较早退出前N排序。
[0073]替代地,本发明实施例也适用于多个计算机可协作保持全局结果值的系统,其中全局结果值对应于由多个计算机执行的多个前N排序的当前全局最差结果值(例如,全局最小值或全局最大值)。因此,每个计算机可基于这个全局结果值修剪它的对应扫描列表和/或确定较早退出前N排序。还应该注意的是,不存在扫描少量的另外的存储区域的显著性能损失。因此,全局结果值可被异步地计算,或者可很少被更新,从而这种优化不引入或需要该系统内的同步的点。
[0074]图5是用于由于存储区域内的记录的添加或删除而更新先前的区域图条目的过程的概括流程图。当记录被从信息空间删除时,如果该记录包含作为该记录的盘区中的所有列的最小值的列值,则该盘区中的该列的新的最小值可实际上大于区域图条目中的记录的最小值。类似地,如果该记录包含作为该记录的盘区中的所有列的最大值的列值,则该盘区中的该列的新的最大值可实际上小于区域图条目中的记录的最大值。换句话说,删除记录能够具有缩窄盘区内的列的值的范围的效果。同样地,创建记录能够具有扩大盘区内的列的值的范围的效果。
[0075]在图5的操作510,添加或删除记录。在操作520,确定添加或删除的记录是否包含作为该记录的盘区中的所有列的最小值的列值和/或添加或删除的记录是否包含作为该记录的盘区中的所有列的最大值的列值。在操作530,区域图被更新以反映新的最小值(例如,至少下降至在添加的记录中指定的值或上升以反映存储区域中的最低值)和/或被更新以反映新的最大值(例如,至少上升至在添加的记录中指定的值或下降以反映存储区域中的最高值)。在其它实施例中,区域图可能不需要被更新以反映记录删除,因为通常以保守方式使用区域图。
[0076]参照图6,信息服务器120的示例性实施例可包括网络接口 112、处理器620和存储器630。网络接口单元112被配置为能够实现经网络130的网络通信以便例如方便关于来自客户机系统100的查询请求的信息服务器120和主机服务器110之间的通信,如图1中所示。
[0077]处理器620可由一个或多个微处理器或微控制器实现,并且执行存储在存储器630中的计算机可读程序指令以执行以上结合图1-5描述的操作。
[0078]存储器630可包括用包括计算机可读程序指令的软件编码的计算机可读存储介质,并且当由处理器620执行所述软件时,处理器620可操作以执行这里结合区域图创建、排序和评估逻辑635描述的操作。
[0079]服务器系统110和120以及客户机系统100可由任何传统或其它计算机系统实现,所述传统或其它计算机系统优选地装备有:显示器或监视器、基体(例如,包括至少一个处理器、一个或多个存储器和/或内部或外部网络接口或通信装置(例如,调制解调器、网卡等))、可选的输入装置(例如,键盘、鼠标或其它输入装置)和任何可商购获得和定制的软件(例如,服务器/通信软件、模块、浏览器/接口软件等)。
[0080]替代地,当作为独立单元操作时,一个或多个客户机系统100可分析文档。在独立操作模式下,客户机系统存储或访问数据(例如,数据库存储单元140),并且包括用于形成查询请求和/或向主机服务器110发送查询请求的模块。图形用户(例如,GUI等)或其它接口(例如,命令行提示、菜单屏幕等)从对应用户请求关于想要的文档和分析的信息,并且可提供包括分析结果的报告。
[0081]模块可包括用于执行这里描述的本发明实施例的各种功能的一个或多个模块或单元。所述各种模块(例如,逻辑模块635等)可由任何量的软件和/或硬件模块或单元的任何组合实现,并且可位于信息服务器120的存储器630内以由处理器620执行。
[0082]将会理解,以上描述并且在附图中示出的实施例仅代表实现实施例的许多方式中的几种方式。
[0083]本发明实施例的环境可包括以任何想要的方式布置的任何数量的计算机或其它处理系统(例如,客户机或终端用户系统、服务器系统等)和数据库或其它存储库,其中本发明实施例可被应用于任何想要的类型的计算环境(例如,云计算、客户机-服务器、网络计算、大型计算机、独立系统等)。由本发明实施例采用的计算机或其它处理系统可由任何数量的任何个人或其它类型的计算机或处理系统(例如,桌上型计算机、膝上型计算机、PDA、移动装置等)实现,并且可包括任何可商购获得的操作系统以及可商购获得和定制的软件(例如,浏览器软件、通信软件、服务器软件、概况产生模块、概况比较模块等)的任何组合。这些系统可包括任何类型的监视器和输入装置(例如,键盘、鼠标、语音识别等)以输入和/或观看信息。
[0084]应该理解,可按照任何想要的计算机语言实现本发明实施例的软件(例如,逻辑635),并且能够由计算机领域的普通技术人员基于说明书中所包含的功能描述和附图中示出的流程图开发本发明实施例的软件(例如,逻辑635)。另外,这里对执行各种功能的软件的任何提及通常表示在软件控制下执行那些功能的计算机系统或处理器。本发明实施例的计算机系统可替代地由任何类型的硬件和/或其它处理电路实现。
[0085]计算机或其它处理系统的各种功能可按照任何方式分布在任何数量的软件和/或硬件模块或单元、处理或计算机系统和/或电路之中,其中计算机或处理系统可相对于彼此被布置在本地或相对于彼此被远程地布置,并且经任何合适的通信介质(例如,LAN、WAN、内联网、互联网、硬连线、调制解调器连接、无线等)通信。例如,本发明实施例的功能可按照任何方式分布在各种最终用户/客户机和服务器系统和/或任何其它中间处理装置之中。以上描述并且在流程图中示出的软件和/或算法可被按照完成这里描述的功能的任何方式修改。另外,可按照完成想要的操作的任何次序执行流程图或描述中的功能。
[0086]本发明实施例的软件(例如,与逻辑635对应的软件等)可存在于用于与独立系统或由网络或其它通信介质连接的系统一起使用的静止或便携式程序产品设备或装置的非暂态计算机可用介质(例如,磁或光学介质、磁光介质、软盘、⑶_R0M、DVD、存储装置等)上。
[0087]通信网络可由任何数量的任何类型的通信网络(例如,LAN、WAN、互联网、内联网、VPN等)实现。本发明实施例的计算机或其它处理系统可包括任何传统或其它通信装置以便经任何传统或其它协议在网络上通信。计算机或其它处理系统可使用用于接入网络的任何类型的连接(例如,有线、无线等)。局部通信介质可由任何合适的通信介质(例如,局域网(LAN)、硬连线、无线链路、内联网等)实现。
[0088]该系统可采用任何数量的任何传统或其它数据库、数据仓库或存储结构(例如,文件、数据库、数据结构、数据或其它存储库等)以存储信息(例如,数据库存储单元140、区域图、前N个结果等)。该数据库系统可由任何数量的任何传统或其它数据库、数据仓库或存储结构(例如,文件、数据库、数据结构、数据或其它存储库等)实现以存储信息(例如,数据库存储单元140、区域图、前N个结果等)。数据库系统可被包括在服务器和/或客户机系统内或耦接到服务器和/或客户机系统。数据库系统和/或存储结构可相对于计算机或其它处理系统位于远处或者位于本地,并且可存储任何想要的数据。
[0089]本发明实施例可采用任何数量的任何类型的用户接口(例如,图形用户接口(GUI)、命令行、提示等)以获得或提供信息(例如,来自客户机100的查询请求、前N个结果等),其中所述接口可包括以任何方式布置的任何信息。所述接口可包括布置在任何位置的任何数量的任何类型的输入或致动机构(例如,按钮、图标、栏、框、链接等)以便经任何合适的输入装置(例如,鼠标、键盘等)输入/显示信息以及发起想要的动作。所述接口屏幕可包括任何合适的致动器(例如,链接、标签等)以按照任何方式在屏幕之间导航。
[0090]所述报告可包括以任何方式布置的任何信息,并且可基于规则或其它准则而被配置以向用户提供想要的信息(例如,文本分析、概况得分、关于文档作者的人口统计信息等)O
[0091]本发明实施例不限于上述特定任务或算法。
[0092]这里使用的术语仅用于描述特定实施例的目的,并且不是意图限制本发明。如这里所使用,单数形式“a”、“an”和“the”旨在也包括复数形式,除非上下文清楚地指示不是这样。还将会理解,当在本说明书中使用时,术语“包括”、“包含”、“具有”等指定存在所陈述的特征、整数、步骤、操作、元件和/或部件,但不排除存在或添加一个或多个其它特征、整数、步骤、操作、元件、部件和/或它们的组合。
[0093]以下权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于结合具体要求保护的其它权利要求要素执行功能的任何结构、材料或动作。本发明的描述用于说明和描述的目的,而不是意图穷尽的或者局限于公开的形式的本发明。在不脱离本发明的范围和精神的情况下,对于本领域普通技术人员而言,许多修改和变化将会是清楚的。选择并描述实施例以便最好地解释本发明的原理和实际应用,并且使其他本领域普通技术人员能够理解本发明的具有适合设想的特定用途的各种修改的各种实施例。
[0094]本发明的各种实施例的描述用于说明的目的,而不是意图穷尽的或者局限于公开的实施例。在不脱离描述的实施例的范围和精神的情况下,对于本领域普通技术人员而言,许多修改和变化将会是清楚的。选择这里使用的术语以便最好地解释实施例的原理、实际应用或相对于在市场中找到的技术的技术改进,或者能够使其他本领域普通技术人员理解这里公开的实施例。
[0095]本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0096]计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是一一但不限于一一电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0097]这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0098]用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如Smalltalk、C++等,以及常规的过程式编程语言一诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0099]这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0100]这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0101]也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0102]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
【主权项】
1.一种用于针对存储器内的多个存储区域扫描指定量的结果的计算机实现的方法,其中每个存储区域与一区间关联,所述区间包括指示该存储区域内的值的值范围的第一区间值和第二区间值,所述计算机实现的方法包括: 将第一区间值按次序排序,其中第一区间值的次序确定所述多个存储区域的扫描次序; 确定结果值,其中所述结果值是上界、下界或在所述指定量的结果之外;以及检查已排序的第一区间值,并且根据需要响应于确定的结果值与该存储区域的第一区间值的比较而扫描对应个体存储区域。2.如权利要求1所述的计算机实现的方法,其中所述扫描对应个体存储区域包括: 确定不满足所述比较的初始第一区间值,并且从所述扫描省略与所述初始第一区间值和已排序的第一区间值内的后续第一区间值对应的对应个体存储区域。3.如权利要求1所述的计算机实现的方法,其中所述指定量的结果与升序排序关联,并且每个存储区域的所述第一区间值包括该存储区域的最小值,并且所述扫描对应个体存储区域包括: 响应于确定的结果值大于个体存储区域的第一区间值而扫描该存储区域。4.如权利要求1所述的计算机实现的方法,其中所述指定量的结果与降序排序关联,并且每个存储区域的所述第二区间值包括该存储区域的最大值,并且所述扫描对应个体存储区域包括: 响应于确定的结果值小于个体存储区域的第二区间值而扫描该存储区域。5.如权利要求1所述的计算机实现的方法,还包括:在确立按照升序排序的已排序的第一区间值的列表中的存储区域的第一区间值大于所确定的值时,退出扫描。6.如权利要求1所述的计算机实现的方法,还包括: 将记录添加到存储区域或删除记录; 确定添加或删除的记录是否包含作为最小值的第一区间值或作为存储区域的最大值的第二区间值;以及 更新第一区间值或第二区间值以反映新的最小值或新的最大值。7.如权利要求1所述的计算机实现的方法,还包括:在基于一个或多个排序键识别组的情况下执行分组操作,并且其中所述指定量的结果是指定量的不同的组。8.如权利要求1所述的计算机实现的方法,还包括: 确定全局结果值,其中所述全局结果值代表由多个计算机确定的多个结果值中的最小值;以及 在确立按照升序排序的已排序的第一区间值的列表中的存储区域的第一区间值大于所确定的全局结果值时,退出扫描。9.一种系统,包括: 存储器,包括多个存储区域,其中每个存储区域与一区间关联,所述区间包括指示该存储区域内的值的值范围的第一区间值和第二区间值; 网络接口;和 处理器,被配置为: 将第一区间值按次序排序,其中第一区间值的次序确定所述多个存储区域的扫描次序; 确定结果值,其中所述结果值是上界、下界或在指定量的结果之外;以及 检查已排序的第一区间值,并且根据需要响应于确定的结果值与该存储区域的第一区间值的比较而针对存储器内的对应个体存储区域扫描所述指定量的结果。10.如权利要求9所述的系统,其中所述处理器被配置为确定不满足所述比较的初始第一区间值,并且从所述扫描省略与所述初始第一区间值和已排序的第一区间值内的后续第一区间值对应的对应个体存储区域。11.如权利要求9所述的系统,其中所述指定量的结果与升序排序关联,并且每个存储区域的所述第一区间值包括该存储区域的最小值,并且其中所述处理器被配置为响应于确定的结果值大于个体存储区域的第一区间值而扫描该存储区域。12.如权利要求9所述的系统,其中所述指定量的结果与降序排序关联,并且每个存储区域的所述第二区间值包括该存储区域的最大值,并且其中所述处理器被配置为响应于确定的结果值小于个体存储区域的第二区间值而扫描该存储区域。13.如权利要求9所述的系统,其中所述处理器被配置为在确立按照升序排序的已排序的第一区间值的列表中的存储区域的第一区间值大于所确定的值时退出扫描。14.如权利要求9所述的系统,其中所述处理器被配置为: 将记录增加到存储区域或删除记录; 确定添加或删除的记录是否包含作为最小值的第一区间值或作为存储区域的最大值的第二区间值;以及 更新第一区间值或第二区间值以反映新的最小值或新的最大值。15.如权利要求9所述的系统,其中所述处理器被配置为在基于一个或多个排序键识别组的情况下执行分组操作,并且其中所述指定量的结果是指定量的不同的组。16.如权利要求9所述的系统,其中所述处理器被配置为: 确定全局结果值,其中所述全局结果值代表由多个计算机确定的多个结果值中的最小值;以及 在确立按照升序排序的已排序的第一区间值的列表中的存储区域的第一区间值大于所确定的全局值时,退出扫描。17.—种用于向用户提供信息的计算机程序产品,包括实施有计算机可读程序代码的计算机可读存储介质,所述计算机可读程序代码当由处理器执行时使处理器: 对于存储器内的多个存储区域,将第一区间值按次序排序,其中第一区间值的次序确定存储区域的扫描次序,每个存储区域与一区间关联,所述区间包括指示该存储区域内的值的值范围的第一区间值和第二区间值; 确定结果值,其中所述结果值是上界、下界或在指定量的结果之外;以及 检查已排序的第一区间值,并且根据需要响应于确定的结果值与该存储区域的第一区间值的比较而针对存储器中的对应个体存储区域扫描所述指定量的结果。18.如权利要求17所述的计算机程序产品,所述计算机可读程序代码还被配置为使处理器确定不满足所述比较的初始第一区间值,并且从所述扫描省略与所述初始第一区间值和已排序的第一区间值内的后续第一区间值对应的对应个体存储区域。19.如权利要求17所述的计算机程序产品,其中所述指定量的结果与升序排序关联,并且每个存储区域的所述第一区间值包括该存储区域的最小值,并且所述计算机可读程序代码还被配置为使处理器响应于确定的结果值大于个体存储区域的第一区间值而扫描该存储区域。20.如权利要求17所述的计算机程序产品,其中所述指定量的结果与降序排序关联,并且每个存储区域的所述第二区间值包括该存储区域的最大值,并且所述计算机可读程序代码还被配置为使处理器响应于确定的结果值小于个体存储区域的第二区间值而扫描该存储区域。21.如权利要求17所述的计算机程序产品,所述计算机可读程序代码还被配置为使处理器在确立按照升序排序的已排序的第一区间值的列表中的存储区域的第一区间值大于所确定的值时退出扫描。22.一种计算机程序,包括程序代码装置,所述程序代码装置适于当在计算机上运行所述程序时执行如权利要求1至8中任一项所述的方法。
【文档编号】G06F17/30GK106030579SQ201580010338
【公开日】2016年10月12日
【申请日】2015年1月30日
【发明人】G·A·迪凯, D·莱婷
【申请人】国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1