專利名稱::查詢數據的系統、方法和數據管理系統的制作方法
技術領域:
:本申請公開的內容涉及查詢數據的系統、方法和數據管理系統。本申請公開的內容還涉及一種為數據庫創建數據索引的方法。
背景技術:
:在數據庫系統中,索引對于改善數據查詢速度有著舉足輕重的作用,充分使用索引可以改善數據庫應用程序的性能。從索引的物理形式上看,數據庫的索引分為集群索引(ClusterIndex)和非集群索引(NonclusterIndex)兩種,區別在于數據按照集群索引有序存放,而非集群索引一般不與數據存儲在一起,數據也不會按照非集群索引排序。一般地,集群索引被稱為數據庫主索引(PrimaryIndex),被索引屬性稱為主鍵(PrimaryKey),非集群索引被稱作次索引Secondaryhdex)。當對數據庫中的數據進行查詢或者按非主鍵的列排序或統計時,需要先掃描次索引以找到與次索引關聯的數據,然后在找到的數據中根據主索引確定要操作的數據。這樣,會不停地讀取磁盤不同位置的文件,磁頭需要多次移動來完成對數據排序、統計等操作,所需要處理時間長。目前解決此類問題的方式是使用物化視圖將用戶的查詢指令生成新表,表中包括查詢指令和數據,對用戶常用的查詢指令,用戶直接調用該物化視圖即可。然而,上述物化視圖的方式更新成本高、查詢性能低。
發明內容本申請的公開了一種數據索引系統,其可包括存儲媒介,存儲有多個數據、以及為所述多個數據創建并與之綁定的次索引;索引元數據管理模塊,用于管理從存儲于數據庫的基表數據中獲取索引元數據,其中,所述索引元數據用于根據預定規則創建所述多個數據;以及索引數據管理模塊,用于根據從用戶端接收的操作指令,通過綁定的所述次索引在所述存儲媒介中查詢到要操作的數據。本申請還公開了一種數據管理系統,其可包括第一數據查詢子系統;以及第二數據查詢子系統,所述第二數據查詢子系統包括上述的數據索引系統;其中,所述數據索引系統中的判定模塊從用戶端接收操作指令,并判定是否要在所述數據索引系統中通過綁定的所述次索引執行所述操作指令,當判定的結果為是時,所述數據索引系統中的索引數據管理模塊通過綁定的所述次索引查詢所述操作指令要執行操作的數據,否則所述判定模塊觸發所述第一數據查詢子系統以通過所述基表數據具有的次索引找到與該次索引關聯的基表數據,然后在找到的基表數據中根據所述基表數據具有的主索引確定要操作的數據。本申請還公開了一種查詢數據的方法,所述方法可包括從用戶端接收數據操作指令;確定是否要通過綁定的次索引執行所述數據操作指令,其中,所述綁定的次索引與多個數據相互綁定,所述多個數據根據預定規則從數據庫的基表數據中創建;以及如果確定的結果為是,則通過所述綁定的次索引在綁定的多個數據中查詢所述數據操作指令要執行操作的數據。此外,本申請還公開了一種為數據庫創建數據索引的方法。該方法可包括根據預定規則從所述數據庫中的基表數據中創建要綁定的多個數據;為所述多個數據創建次索引;將所述多個數據和所述次索引綁定;以及將所述綁定的多個數據和次索引在物理上獨立于所述數據庫中的基表數據相鄰存儲。圖1顯示了根據本申請一個實施方式的查詢數據的方法的流程圖;圖2顯示了根據本申請一個實施方式的用于建立擴展的次索引結構的具體處理流程圖;圖3顯示了根據本申請一個實施方式的更新擴展的次索引結構的具體處理流程圖;圖4顯示了根據本申請一個實施方式的數據索引系統的方框圖;以及圖5顯示了根據本申請一個實施方式的數據管理系統的方框圖。具體實施例方式下面將參照附圖描述本申請的具體實施方式。圖1顯示了根據本申請一個實施方式的查詢數據的方法100。如圖1所示,在步驟SlOl中從用戶端接收數據操作指令,數據操作指令可例如是查詢數據、創建數據、或更新數據等的指令。接著,在步驟S102中確定是否要通過擴展的次索引結構執行數據操作指令。擴展的次索引結構包括與數據庫中的元數據關聯的多個數據以及與所述多個數據綁定的次索引。為了便于理解,在具體描述步驟S102之前,首先參照圖2描述根據本申請的用于建立擴展的次索引結構的具體處理。如圖2所示,在步驟S201中,根據應用的需要和預定規則從數據庫中的基表數據中創建要被綁定的多個數據。根據本發明的一個實施方式,要被綁定的數據例如是通過對用戶經常進行的操作(如對于數據庫的特定表中的特定列的查詢、統計等)而形成的數據。具體地,要被綁定的數據例如包括直方圖(Histogram),即次索引所在的列(以下簡稱為“索引列”)在數據庫中的出現次數;不同于索引列的其它數據列,例如,在WAP訪問日志表中,IP地址是次索引,則其它數據列通常可以是要與該IP地址綁定的用戶號碼和機型;·不同于索引列的其它數據列的函數值,例如,與次索引綁定的用戶號碼的前5位數;·其它數據列和次索引列的函數值。例如,當單價為次索引列時,與該索引綁定的成本與單價的比值。其中,數據庫中用于創建要被綁定的數據的基表數據被稱為“索引元數據”并被單獨保存。關于索引元數據的作用將在后面進行描述。接著,在步驟S202中為要綁定的多個數據創建次索引。關于次索引的定義可參見本申請
背景技術:
部分的描述。可以使用與結構化查詢語言(SQL)規范相近的語句創建次索弓丨。例如可以采用指令CREATEINDEXIdx_NameONTABEL(tablename[預處理方法IAs被綁定數據1數據類型,預處理方法2As被綁定數據2數據類型,...,預處理方法NAs被綁定數據N數據類型])來創建次索引。根據本申請的一個實施方式,還可使用與SQL規范相近的語句對創建的次索引進行刪除或更新。具體地,刪除擴展的次級索引中的次索引的指令為DropIndexIdx_Name,更新擴展的次級索引中次索引的指令可例如為AlterIndexIdx_NameAdd[預處理方法IAs被綁定數據1數據類型,···]AlterIndexIdx_Namedrop[被綁定數據1,···]^AlterIndexIdx_Namemodify[預處理方法IAs被綁定數據1數據類型,...]。接著,在步驟S203中將創建的數據和次索引綁定以形成擴展的次索引結構。擴展的次索引結構中可以將每個記錄表示為元組(Tuple):(索引列,被綁定數據1,被綁定數據2...)。在由擴展的次索引結構確定的一個數據表中可以根據應用包括多個次索引。擴展的次索引結構可例如表1所示。IndexedCol被綁定數據1被綁定數據2...被綁定數據NA預處理結果1預處理結果2··預處理結果NB預處理結果1預處理結果2··預處理結果NC預處理結果1預處理結果2預處理結果N‘·預處理結果1預處理結果2預處理結果N表1如表1所示,擴展的次索引結構中例如記錄如下信息1.索引名稱例如可以命名上表1中次索引“IndexedCol”名稱為“DBI-1”;2.索引列例如在表1中名稱為‘IndexedCol”標志的列“A、B、C.··,,;3.被綁定的數據,即在步驟S201中創建的數據。此外,還可使用索引元數據列表保存上述擴展的次索引的描述信息。擴展的次索引的描述信息可以抽象的表述如下DBI-I索引列,(綁定數據1,綁定數據2.··),(公式1,公式2.··)DBI-2…其中,索引列為擴展的次索引中二級索引的創建列,綁定數據和公式表示數據表上被綁定數據的信息。根據本申請的一個實施方式,為了加快判定某次更新是否涉及到擴展的次索引,還可以將所有綁定數據進一步通過另外一種視圖表示,如下權利要求1.一種數據索引系統,包括存儲媒介,存儲有多個數據、以及為所述多個數據創建并與之綁定的次索引;索引元數據管理模塊,用于管理從存儲于數據庫的基表數據中獲取索引元數據,其中,所述索引元數據用于根據預定規則創建所述多個數據;以及索引數據管理模塊,用于根據從用戶端接收的操作指令,通過綁定的所述次索引在所述存儲媒介中查詢到要操作的數據。2.如權利要求1所述的系統,其中,所述預定規則被設置為使得所創建的多個數據包括以下數據中的至少一個所述次索引所在的數據列在所述數據庫中出現的次數、所述數據庫中與所述次索引不同的其它數據列、所述其它數據列對應的數值、以及所述其它數據列和所述次索引列的函數值。3.如權利要求1所述的系統,還包括判定模塊,用于判定所用操作指令的類型,以選擇性地將所述操作指令發送到所述索引元數據管理模塊或所述索引數據管理模塊。4.如權利要求3所述的系統,所述判定模塊進一步被配置為判定是否要通過綁定的所述次索引在所述存儲媒介中執行所述操作指令。5.如權利要求3所述的系統,其中,當所述操作指令中包括被綁定的次索引,而且未包括在所述數據庫的基表中設置的主索引時,所述判定模塊判定要通過綁定的所述次索引在所述存儲媒介中執行所述數據操作指令。6.如權利要求5所述的系統,其中,當通過綁定的所述次索引執行所述數據操作指令的查詢成本與使用所述數據庫中的主索引和次索引查詢相比成本更低,所述判定模塊則判定要通過綁定的所述次索引在所述存儲媒介中執行所述數據操作指令。7.如權利要求1所述的系統,其中,所述索引數據管理模塊還被配置為將綁定的所述次索引和數據加載到內存或緩沖進行操作。8.如權利要求1所述的系統,其中,當所述索引元數據發生更新時,所述索引元數據管理模塊觸發所述索引數據管理模塊對綁定的所述數據或次索引進行相應的更新。9.如權利要求8所述的系統,所述索引元數據管理模塊從所述索引元數據中確定當前發生的更新是否與綁定的所述次索引和數據有關,如果有關,則觸發所述索引數據管理模塊根據所述當前發生更新的索引元數據的取值,通過所述預定規則計算被綁定的數據的更新結果,并以該更新結果對其進行更新。10.一種數據管理系統,包括第一數據查詢子系統;以及第二數據查詢子系統,所述第二數據查詢子系統包括如權利要求1-9中任意一項所述的數據索引系統;其中,所述數據索引系統中的判定模塊從用戶端接收操作指令,并判定是否要在所述數據索引系統中通過綁定的所述次索引執行所述操作指令,當判定的結果為是時,所述數據索引系統中的索引數據管理模塊通過綁定的所述次索引查詢所述操作指令要執行操作的數據,否則所述判定模塊觸發所述第一數據查詢子系統以通過所述基表數據具有的次索引找到與該次索引關聯的基表數據,然后在找到的基表數據中根據所述基表數據具有的主索引確定要操作的數據。11.一種查詢數據的方法,所述方法包括從用戶端接收數據操作指令;確定是否要通過綁定的次索引執行所述數據操作指令,其中,所述綁定的次索引與多個數據相互綁定,所述多個數據根據預定規則從數據庫的基表數據中創建;以及如果確定的結果為是,則通過所述綁定的次索引在綁定的多個數據中查詢所述數據操作指令要執行操作的數據。12.如權利要求11所述的方法,其中,所述預定規則被設置為使得所創建的多個數據包括以下數據中的至少一個所述次索引所在的數據列在數據庫中出現的次數、所述數據庫中與所述次索引不同的其它數據列、所述其它數據列對應的數值,所述其它數據列和所述次索引列的函數值。13.如權利要求11所述的方法,其中,通過綁定的所述次索引在綁定的多個數據中查詢所述數據操作指令要執行操作的數據的步驟還包括通過所述次索引確定所述數據操作指令要執行操作的數據;以及將所述次索引和所確定的數據加載到內存或緩沖。14.如權利要求11所述的方法,其中,當數據庫中的基表數據更新時,所述方法還包括根據更新的基表數據的取值,通過所述預定規則計算出所述被綁定的數據的更新結果,并以該更新結果對所述被綁定的數據進行更新。15.如權利要求11所述的方法,其中,所述數據庫中的基表數據具有主索引和次索引,所述方法還包括如果確定的結果是不通過所述綁定的次索引執行所述數據操作指令,則通過所述基表數據的次索引在所述數據庫的基表中找到與該次索引關聯的基表數據,然后在找到的基表數據中,根據基表數據的主索引確定要操作的數據。16.如權利要求15所述的方法,其中,當所述操作指令中包括被綁定的次索引,而且未包括所述主索引時,確定要通過所述綁定的次索引執行所述數據操作指令。17.如權利要求15所述的方法,其中,當通過所述綁定的次索引執行所述數據操作指令的查詢成本與使用所述基表數據的主索引和次索引查詢相比成本更低,則確定要通過所述綁定的次索引執行所述數據操作指令。18.一種為數據庫創建數據索引的方法,包括根據預定規則從所述數據庫中的基表數據中創建要綁定的多個數據;為所述多個數據創建次索引;將所述多個數據和所述次索引綁定;以及將所述綁定的多個數據和次索引在物理上獨立于所述數據庫中的基表數據相鄰存儲。19.如權利要求18所述的方法,其中,所述預定規則被設置為使得所創建的多個數據包括所述次索引所在的數據列在所述數據庫中出現的次數、與所述次索引不同的其它數據列、所述其它數據列對應的數值,所述其它數據列和所述次索引列的函數值。全文摘要本發明公開了查詢數據的系統、方法和數據管理系統。所述查詢數據的系統包括存儲媒介,存儲有多個數據、以及為所述多個數據創建并與之綁定的次索引;索引元數據管理模塊,用于管理從存儲于數據庫的基表數據中獲取索引元數據,其中,所述索引元數據用于根據預定規則創建所述多個數據;以及索引數據管理模塊,用于根據從用戶端接收的操作指令,通過綁定的所述次索引在所述存儲媒介中查詢到要操作的數據。文檔編號G06F17/30GK102117305SQ20101000016公開日2011年7月6日申請日期2010年1月6日優先權日2010年1月6日發明者孫少陵,羅治國,錢嶺,齊驥申請人:中國移動通信集團公司