用于針對存儲器內的多個存儲區域掃描指定量的結果的方法、系統和計算機程序的制作方法
【專利摘要】根據本發明的實施例,提供用于針對存儲器內的多個存儲區域掃描指定量的結果的方法、系統和計算機可讀介質,其中每個存儲區域與一區間關聯,所述區間包括指示該存儲區域內的值的值范圍的第一和第二區間值。所述技術包括:將第一區間值按次序排序,其中第一區間值的次序確定所述多個存儲區域的掃描次序;確定結果值,其中所述結果值是上界、下界或在所述指定量的結果之外;以及檢查已排序的第一區間值,并且響應于確定的結果值與該存儲區域的第一區間值的比較而掃描對應個體存儲區域。在一些實施例中,在確立已實現所述指定量的結果并且已排序的第一區間值的列表中的第一區間值大于確定的結果值時退出掃描。
【專利說明】
用于針對存儲器內的多個存儲區域掃描指定量的結果的方法、系統和計算機程序
技術領域
[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·萊婷
【申請人】國際商業機器公司