欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種多維區(qū)間查詢(xún)方法及系統(tǒng)的制作方法

文檔序號(hào):6604486閱讀:495來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種多維區(qū)間查詢(xún)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)處理領(lǐng)域,尤其涉及一種多維區(qū)間查詢(xún)系統(tǒng)及方法。
背景技術(shù)
資源發(fā)現(xiàn)需要多種條件的查詢(xún),其中多數(shù)查詢(xún)可以轉(zhuǎn)換為多維區(qū)間查詢(xún)。事實(shí)上 多維區(qū)間查詢(xún)是網(wǎng)絡(luò)應(yīng)用的一個(gè)基本需求。簡(jiǎn)單的例子是在存儲(chǔ)互聯(lián)網(wǎng)圖片信息的應(yīng)用, 設(shè)計(jì)者可能需要查詢(xún)一段時(shí)間內(nèi)點(diǎn)擊數(shù)量最高的前 100張圖片,這種查詢(xún)就涉及到了時(shí)間 和點(diǎn)擊量等多個(gè)屬性(數(shù)據(jù)表的列,也叫維度、維)區(qū)間。隨著網(wǎng)絡(luò)應(yīng)用數(shù)據(jù)量的不斷增大,現(xiàn)有方法均難以同時(shí)滿(mǎn)足高性能、低存儲(chǔ)開(kāi)銷(xiāo) 和高可靠性的要求。通過(guò)對(duì)現(xiàn)有數(shù)據(jù)模型進(jìn)行分類(lèi)可知,應(yīng)用需要支持多維區(qū)間查詢(xún)的新 數(shù)據(jù)模型。分布式順序表(Distributed Ordered Table,DOT)是一種適用于海量數(shù)據(jù)(TB 到PB級(jí))下單個(gè)維度(僅僅是主鍵)區(qū)間查詢(xún)的數(shù)據(jù)庫(kù)系統(tǒng),最有潛力通過(guò)增加索引支持 多維區(qū)間查詢(xún)。在分布式順序表上通常使用的索引方法是對(duì)需要查詢(xún)的列建立二級(jí)索引,查詢(xún)時(shí) 先搜索二級(jí)索引再定位到數(shù)據(jù)表取出數(shù)據(jù)。這種方法會(huì)在檢索數(shù)據(jù)表時(shí)產(chǎn)生隨機(jī)讀操作, 而在分布式順序表中隨機(jī)讀操作的速度相比順序掃描(scan)有一個(gè)數(shù)量級(jí)的下降,所以 在這種索引機(jī)制下多維區(qū)間查詢(xún)的速度緩慢,響應(yīng)時(shí)間過(guò)長(zhǎng)不能滿(mǎn)足目前網(wǎng)絡(luò)應(yīng)用對(duì)海量 數(shù)據(jù)進(jìn)行實(shí)時(shí)檢索的需求。如果不建二級(jí)索引,而是為索引列建立聚簇索引以提高查詢(xún)性 能,則由于底層文件系統(tǒng)副本導(dǎo)致存儲(chǔ)開(kāi)銷(xiāo)成倍增長(zhǎng)。本發(fā)明基于下述事實(shí)1、DOT系統(tǒng)中通常有3 5份副本用于提高性能和可靠性,以應(yīng)對(duì)超大規(guī)模數(shù)據(jù)量。2、應(yīng)用使用多維區(qū)間查詢(xún)時(shí)所需屬性列數(shù)通常不超過(guò)5。通過(guò)采集中國(guó)國(guó)家網(wǎng)格軟件GOS中高性能計(jì)算網(wǎng)關(guān)(HPCG)應(yīng)用的實(shí)際運(yùn)行日志, 記錄并分析了其29小時(shí)時(shí)間區(qū)間內(nèi)98. 63萬(wàn)次操作,其中查詢(xún)請(qǐng)求有96. 1萬(wàn)次,占97%。 這些查詢(xún)請(qǐng)求具有如下規(guī)律①全部的查詢(xún)請(qǐng)求可以包括在“=”,“ < ”,“ > ”,“ < =”,“ > = ”,“startsWith”及其邏輯關(guān)系組合中,沒(méi)有其它復(fù)雜的SQL語(yǔ)法需求;②單獨(dú)查詢(xún)請(qǐng)求 所涉及的字段比較少。所有單獨(dú)查詢(xún)請(qǐng)求涉及的字段數(shù)量均小于等于5,又其中92%的請(qǐng) 求涉及的字段數(shù)量小于等于4 ;④單獨(dú)關(guān)系表涉及的支持查詢(xún)的字段數(shù)量均少于等于5。3、DOT上連續(xù)掃描的吞吐率遠(yuǎn)遠(yuǎn)高于隨機(jī)讀取。例如Google的BigTable就是典型的DOT系統(tǒng),其讀寫(xiě)1KB長(zhǎng)度記錄的基本操作 性能見(jiàn)表,從中可以看出順序讀是隨機(jī)讀的3. 7倍,而連續(xù)掃描是隨機(jī)讀的12. 7倍。表IBigTable中基本操作性能

發(fā)明內(nèi)容
為了解決上述的技術(shù)問(wèn)題,本發(fā)明提供了一種多維區(qū)間查詢(xún)系統(tǒng)及方法,其目的 在于,基于分布式順序表構(gòu)建索引,使其支持多維區(qū)間查詢(xún),并同時(shí)滿(mǎn)足高性能、低存儲(chǔ)開(kāi) 銷(xiāo)和高可靠性要求。本發(fā)明公開(kāi)了一種多維區(qū)間查詢(xún)方法,包括步驟1,將用于備份數(shù)據(jù)的副本組織成為多份互為補(bǔ)充和校驗(yàn)的互補(bǔ)聚簇索引表; 互補(bǔ)聚簇索引表以每個(gè)索引列創(chuàng)建一張以列值加原行主鍵加列值長(zhǎng)度為新主鍵的順序表, 并將原行中其余列的數(shù)據(jù)完整存儲(chǔ);互補(bǔ)聚簇索引表用于供查詢(xún)時(shí)進(jìn)行連續(xù)掃描;步驟2,將查詢(xún)串轉(zhuǎn)換為查詢(xún)計(jì)劃樹(shù),進(jìn)行查詢(xún)優(yōu)化后完成查詢(xún)的執(zhí)行。步驟1中,互補(bǔ)聚簇索引表包含原數(shù)據(jù)表中所有的數(shù)據(jù);底層文件系統(tǒng)的備份策 略處于關(guān)閉的狀態(tài)。步驟2中,查詢(xún)優(yōu)化時(shí),先對(duì)查詢(xún)語(yǔ)句進(jìn)行去重合并,然后基于分布式順序表的分 片信息對(duì)子查詢(xún)結(jié)果集的大小進(jìn)行估算,最后挑選結(jié)果集最小的子查詢(xún)執(zhí)行查詢(xún)過(guò)程。查詢(xún)計(jì)劃樹(shù)的每個(gè)葉子節(jié)點(diǎn)是能被直接處理的點(diǎn)查詢(xún)和單個(gè)維度的區(qū)間查詢(xún),查 詢(xún)計(jì)劃樹(shù)的非葉子節(jié)點(diǎn)表示多個(gè)查詢(xún)的邏輯關(guān)系。估算子查詢(xún)結(jié)果集的大小具體包括步驟21,對(duì)于每個(gè)給定的區(qū)間查詢(xún),由其起始鍵值和結(jié)束鍵值通過(guò)對(duì)元信息中數(shù) 據(jù)的查找確定此區(qū)間查詢(xún)覆蓋的分片數(shù)量;步驟22,對(duì)于被完全覆蓋的分片,按分片平均大小估算其大小;對(duì)于被部分覆蓋 的分片,根據(jù)按照該分片被覆蓋的比例計(jì)算該分片大?。徊襟E23,累加全部分片的大小,獲得估算的結(jié)果集大??;步驟24,當(dāng)兩個(gè)子查詢(xún)包含的分片數(shù)相等且結(jié)果集大小相等時(shí),比較查詢(xún)區(qū)間的 字符串距離,用所述字符串距離來(lái)估算子查詢(xún)結(jié)果集的大小。方法還包括下述步驟步驟3,建立互補(bǔ)校驗(yàn)表,互補(bǔ)校驗(yàn)表中按照各個(gè)互補(bǔ)聚簇索引表的主鍵存儲(chǔ)了全 部索引列的值,同時(shí)屏蔽底層文件系統(tǒng)的備份策略;當(dāng)互補(bǔ)聚簇索引表發(fā)生數(shù)據(jù)缺失時(shí)通 過(guò)互補(bǔ)校驗(yàn)表中保存的主鍵對(duì)應(yīng)關(guān)系從其它互補(bǔ)聚簇索引表中恢復(fù)缺失的數(shù)據(jù)。
本發(fā)明還公開(kāi)了一種多維區(qū)間查詢(xún)系統(tǒng),包括存儲(chǔ)節(jié)點(diǎn),用于將用于備份數(shù)據(jù)的副本組織成為多份互為補(bǔ)充和校驗(yàn)的互補(bǔ)聚簇 索引表;互補(bǔ)聚簇索引表以每個(gè)索引列創(chuàng)建一張以列值加原行主鍵加列值長(zhǎng)度為新主鍵的 順序表,并將原行中其余列的數(shù)據(jù)完整存儲(chǔ);互補(bǔ)聚簇索引表用于供查詢(xún)時(shí)進(jìn)行連續(xù)掃描; 存儲(chǔ)節(jié)點(diǎn)將互補(bǔ)聚簇索引表的分片在物理上分布式的存儲(chǔ);客戶(hù)端,用于將查詢(xún)串轉(zhuǎn)換為查詢(xún)計(jì)劃樹(shù),進(jìn)行查詢(xún)優(yōu)化后完成查詢(xún)的執(zhí)行。所述互補(bǔ)聚簇索引表包含原數(shù)據(jù)表中所有的數(shù)據(jù);底層文件系統(tǒng)的備份策略處于 關(guān)閉的狀態(tài)。所述系統(tǒng)還包括服務(wù)節(jié)點(diǎn),所述服務(wù)節(jié)點(diǎn)用于存儲(chǔ)分布式順序表,所述客戶(hù)端在查詢(xún)優(yōu)化時(shí)進(jìn)一步用于先對(duì)查詢(xún)語(yǔ)句進(jìn)行去重合并,然后基于所述 分布式順序表的分片信息對(duì)子查詢(xún)結(jié)果集的大小進(jìn)行估算,最后挑選結(jié)果集最小的子查詢(xún) 請(qǐng)求存儲(chǔ)節(jié)點(diǎn)執(zhí)行查詢(xún)過(guò)程。 查詢(xún)計(jì)劃樹(shù)的每個(gè)葉子節(jié)點(diǎn)是能被存儲(chǔ)節(jié)點(diǎn)直接處理的點(diǎn)查詢(xún)和單個(gè)維度的區(qū) 間查詢(xún),查詢(xún)計(jì)劃樹(shù)的非葉子節(jié)點(diǎn)表示多個(gè)查詢(xún)的邏輯關(guān)系。所述客戶(hù)端在估算子查詢(xún)結(jié)果集的大小時(shí)進(jìn)一步用于對(duì)于每個(gè)給定的區(qū)間查詢(xún), 由其起始鍵值和結(jié)束鍵值通過(guò)對(duì)元信息中數(shù)據(jù)的查找確定此區(qū)間查詢(xún)覆蓋的分片數(shù)量;對(duì) 于被完全覆蓋的分片,按分片平均大小估算其大??;對(duì)于被部分覆蓋的分片,根據(jù)按照該分 片被覆蓋的比例計(jì)算該分片大??;累加全部分片的大小,獲得估算的結(jié)果集大?。划?dāng)兩個(gè) 子查詢(xún)包含的分片數(shù)相等且結(jié)果集大小相等時(shí),比較查詢(xún)區(qū)間的字符串距離,用所述字符 串距離來(lái)估算子查詢(xún)結(jié)果集的大小。所述存儲(chǔ)節(jié)點(diǎn)還用于建立互補(bǔ)校驗(yàn)表,互補(bǔ)校驗(yàn)表中按照各個(gè)互補(bǔ)聚簇索引表的 主鍵存儲(chǔ)了全部索引列的值,同時(shí)屏蔽底層文件系統(tǒng)的備份策略;當(dāng)發(fā)現(xiàn)互補(bǔ)聚簇索引表 發(fā)生數(shù)據(jù)缺失時(shí)通過(guò)互補(bǔ)校驗(yàn)表中保存的主鍵對(duì)應(yīng)關(guān)系從其它互補(bǔ)聚簇索引表中恢復(fù)缺 失的數(shù)據(jù)。本發(fā)明的有益效果在于,能在增加少量存儲(chǔ)開(kāi)銷(xiāo)(比二級(jí)索引方法通常增加 5. 3%到29. 3%的存儲(chǔ)開(kāi)銷(xiāo))和保持?jǐn)?shù)據(jù)恢復(fù)能力不變的同時(shí)顯著提高多維區(qū)間查詢(xún)的執(zhí) 行速度。測(cè)試結(jié)果表明,本發(fā)明在同樣的測(cè)試環(huán)境下,查詢(xún)速度為原二級(jí)索引方法的11.4 倍,為并行關(guān)系數(shù)據(jù)庫(kù)MySQL Cluster的1.9 2.1倍。其中與二級(jí)索引方法對(duì)比的測(cè)試 環(huán)境由3個(gè)節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)包含兩顆雙核CPU,1.8GHz dual-cores AMD Opteron (tm) Processor 270,6GB內(nèi)存,321 GB RAID5 SCSI磁盤(pán),用千兆以太網(wǎng)互聯(lián),測(cè)試數(shù)據(jù)集為100 萬(wàn)條長(zhǎng)度為1KB的隨機(jī)數(shù)。與MySQL Cluster對(duì)比實(shí)驗(yàn)采用16個(gè)節(jié)點(diǎn),總計(jì)64核,96GB內(nèi) 存,其中單個(gè)節(jié)點(diǎn)配置與前述實(shí)驗(yàn)相同,除了改用186GBRAID1 SCSI磁盤(pán),數(shù)據(jù)集為機(jī)群監(jiān) 控系統(tǒng)產(chǎn)生的1. 2億條數(shù)據(jù),單條記錄的平均長(zhǎng)度為118字節(jié)。


圖1是本發(fā)明的多維區(qū)間查詢(xún)方法的流程圖;圖2是本發(fā)明提供的數(shù)據(jù)表邏輯結(jié)構(gòu)示意圖;圖3是本發(fā)明提供實(shí)施例的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明的多維區(qū)間查詢(xún)方法流程如圖1所示。步驟S100,將用于備份數(shù)據(jù)的副本組織成為多份互為補(bǔ)充和校驗(yàn)的互補(bǔ)聚簇索引表;互補(bǔ)聚簇索引表以每個(gè)索引列創(chuàng)建一張以列值加原行主鍵加列值長(zhǎng)度為新主鍵的順序 表,并將原行中其余列的數(shù)據(jù)完整存儲(chǔ);互補(bǔ)聚簇索引表用于供查詢(xún)時(shí)行連續(xù)掃描。在一較佳的實(shí)施方式中,步驟SlOO中,互補(bǔ)聚簇索引表包含原數(shù)據(jù)表中所有的數(shù) 據(jù);底層文件系統(tǒng)的備份策略處于關(guān)閉的狀態(tài)。步驟S200,將查詢(xún)串轉(zhuǎn)換為查詢(xún)計(jì)劃樹(shù),進(jìn)行查詢(xún)優(yōu)化后完成查詢(xún)的執(zhí)行。在一較佳的實(shí)施方式中,步驟S200中,查詢(xún)優(yōu)化時(shí),先對(duì)查詢(xún)語(yǔ)句進(jìn)行去重合并, 然后基于分布式順序表的分片信息對(duì)子查詢(xún)結(jié)果集的大小進(jìn)行估算,最后挑選結(jié)果集最小 的子查詢(xún)執(zhí)行查詢(xún)過(guò)程。進(jìn)一步的具體實(shí)施方式
中,估算子查詢(xún)結(jié)果集的大小具體包括步驟S210,對(duì)于每個(gè)給定的區(qū)間查詢(xún),由其起始鍵值和結(jié)束鍵值通過(guò)對(duì)元信息中 數(shù)據(jù)的查找確定此區(qū)間查詢(xún)覆蓋的分片數(shù)量。步驟S220,對(duì)于被完全覆蓋的分片,按分片平均大小估算其大??;對(duì)于被部分覆 蓋的分片,根據(jù)按照該分片被覆蓋的比例計(jì)算該分片大小。步驟S230,累加全部分片的大小,獲得估算的結(jié)果集大小.步驟S240,當(dāng)兩個(gè)子查詢(xún)包含的分片數(shù)相等且結(jié)果集大小相等時(shí),比較查詢(xún)區(qū)間 的字符串距離,用所述字符串距離來(lái)估算子查詢(xún)結(jié)果集的大小。在一較佳的實(shí)施方式中,查詢(xún)計(jì)劃樹(shù)的每個(gè)葉子節(jié)點(diǎn)能被直接處理的點(diǎn)查詢(xún)和單 個(gè)維度的區(qū)間查詢(xún),查詢(xún)計(jì)劃樹(shù)的非葉子節(jié)點(diǎn)表示多個(gè)查詢(xún)的邏輯關(guān)系。在一較佳的實(shí)施方式中,方法還包括步驟S300,建立互補(bǔ)校驗(yàn)表,互補(bǔ)校驗(yàn)表中 按照各個(gè)互補(bǔ)聚簇索引表的主鍵存儲(chǔ)了全部索引列的值,同時(shí)屏蔽底層文件系統(tǒng)的備份策 略;當(dāng)互補(bǔ)聚簇索引表發(fā)生數(shù)據(jù)缺失時(shí)通過(guò)互補(bǔ)校驗(yàn)表中保存的主鍵對(duì)應(yīng)關(guān)系從其它互補(bǔ) 聚簇索引表中恢復(fù)缺失的數(shù)據(jù)。本發(fā)明的查詢(xún)處理流程的具體實(shí)施方式
包括以下方面第一方面查詢(xún)前的數(shù)據(jù)組織;基于本發(fā)明提出的互補(bǔ)聚簇索引方法 (Complemental Clustering Index, CCIndex)進(jìn)行查詢(xún)前數(shù)據(jù)組織,把用于備份數(shù)據(jù)的副 本組織成為多份互為補(bǔ)充和校驗(yàn)的互補(bǔ)聚簇索引表,利用索引表上高效的連續(xù)掃描代替原 表上的隨機(jī)讀取,從而大幅提高多維區(qū)間查詢(xún)性能。原表為DOT中保存原始數(shù)據(jù)的表,是索引表的數(shù)據(jù)來(lái)源。第二方面查詢(xún)處理和優(yōu)化;本發(fā)明將查詢(xún)串轉(zhuǎn)換為查詢(xún)計(jì)劃樹(shù),進(jìn)行優(yōu)化后,完 成查詢(xún)的執(zhí)行。查詢(xún)優(yōu)化時(shí),先對(duì)查詢(xún)語(yǔ)句進(jìn)行去重合并等簡(jiǎn)單優(yōu)化。然后基于分布式順 序表的分片信息對(duì)子查詢(xún)結(jié)果集的大小進(jìn)行估算,最后挑選最小子查詢(xún)執(zhí)行查詢(xún)過(guò)程。第三方面數(shù)據(jù)恢復(fù);本發(fā)明提出了通過(guò)互補(bǔ)聚簇索引表和互補(bǔ)校驗(yàn)表進(jìn)行數(shù)據(jù) 增量恢復(fù)方法,保證了與通過(guò)數(shù)據(jù)副本進(jìn)行數(shù)據(jù)恢復(fù)時(shí)相同的可恢復(fù)性同時(shí)僅少量增加存 儲(chǔ)開(kāi)銷(xiāo)。DOT通過(guò)副本機(jī)制實(shí)現(xiàn)數(shù)據(jù)恢復(fù)。由于本發(fā)明屏蔽了原有的副本機(jī)制,因此提供相 應(yīng)的恢復(fù)機(jī)制。
本發(fā)明的第一方面,查詢(xún)前的數(shù)據(jù)組織建立執(zhí)行查詢(xún)時(shí)需要的特殊數(shù)據(jù)結(jié)構(gòu)即 互補(bǔ)聚簇索引,向原表插入數(shù)據(jù)的同時(shí),在索引表中也會(huì)添加相應(yīng)數(shù)據(jù),如此使索引中包含 原表中所有的數(shù)據(jù),同時(shí)關(guān)閉底層文件系統(tǒng)策略以減少數(shù)據(jù)冗余。
本發(fā)明的第二方面,查詢(xún)處理和優(yōu)化首先將查詢(xún)串轉(zhuǎn)換為查詢(xún)計(jì)劃樹(shù),樹(shù)的每個(gè) 葉子節(jié)點(diǎn)是查詢(xún)系統(tǒng)能直接處理的點(diǎn)查詢(xún)和單個(gè)維度的區(qū)間查詢(xún),樹(shù)的非葉子節(jié)點(diǎn)表示多 個(gè)查詢(xún)的邏輯關(guān)系。然后對(duì)查詢(xún)計(jì)劃樹(shù)進(jìn)行預(yù)處理,執(zhí)行一些簡(jiǎn)單的合并去重優(yōu)化。查詢(xún) 優(yōu)化的關(guān)鍵點(diǎn)是估算結(jié)果集大小,由于DOT系統(tǒng)的數(shù)據(jù)量極大,而查詢(xún)所需時(shí)間與結(jié)果集 字節(jié)大小正相關(guān),所以從多維屬性中選取結(jié)果集最小的屬性進(jìn)行掃描操作可以極大地優(yōu)化 查詢(xún)性能。本發(fā)明利用了 DOT表中主結(jié)點(diǎn)(master)管理的數(shù)據(jù)分布信息進(jìn)行結(jié)果集的預(yù) 估,提高了區(qū)間查詢(xún)的性能。最后,查詢(xún)執(zhí)行時(shí),對(duì)計(jì)劃樹(shù)中“或關(guān)系”的子查詢(xún)并行執(zhí)行, 而對(duì)“與關(guān)系”的子查詢(xún),選擇結(jié)果集最小的一個(gè)實(shí)施查詢(xún),其它查詢(xún)條件作為謂詞。同時(shí), 由于采用了第一方面中所描述的互補(bǔ)聚簇索引,這樣在進(jìn)行區(qū)間檢索時(shí)使用順序掃描操作 代替原二級(jí)索引的掃描加隨機(jī)讀取操作,查詢(xún)索引時(shí)即可取出相應(yīng)數(shù)據(jù),從而大幅提升了 區(qū)間查詢(xún)的速度。本發(fā)明的第三方面,數(shù)據(jù)恢復(fù)建立互補(bǔ)校驗(yàn)表,校驗(yàn)表中保存各表主鍵的對(duì)應(yīng)關(guān) 系。同時(shí)屏蔽底層文件系統(tǒng)的備份策略,在數(shù)據(jù)恢復(fù)中,把原表和索引表都稱(chēng)為數(shù)據(jù)表,并 給每個(gè)數(shù)據(jù)表添加一張對(duì)應(yīng)的互補(bǔ)校驗(yàn)表,對(duì)于數(shù)據(jù)表每張表只設(shè)一份副本,對(duì)于互補(bǔ)校 驗(yàn)表每張表設(shè)多份副本以保證其可靠性。當(dāng)數(shù)據(jù)表發(fā)生數(shù)據(jù)缺失時(shí)通過(guò)互補(bǔ)校驗(yàn)表中保存 的主鍵對(duì)應(yīng)關(guān)系從其它數(shù)據(jù)表中恢復(fù)缺失的數(shù)據(jù),以保證在第一、第二方面的作用下大幅 提高查詢(xún)性能的同時(shí),沒(méi)有過(guò)大的存儲(chǔ)開(kāi)銷(xiāo)增長(zhǎng)并保證系統(tǒng)數(shù)據(jù)的可恢復(fù)性。本發(fā)明包括查詢(xún)前的數(shù)據(jù)組織、查詢(xún)優(yōu)化、數(shù)據(jù)恢復(fù)三個(gè)關(guān)鍵點(diǎn)。查詢(xún)前的數(shù)據(jù)組織本發(fā)明在查詢(xún)之前需要重新組織DOT表,其關(guān)鍵在于屏蔽DOT表底層文件系統(tǒng)副 本的同時(shí),建立互補(bǔ)聚簇索引表,并于索引表中保存原表全部數(shù)據(jù),查詢(xún)時(shí)利用索引表上的 連續(xù)掃描代替原表的隨機(jī)讀取從而提高多維區(qū)間查詢(xún)性能?;パa(bǔ)聚簇索引方法以每個(gè)索 引列創(chuàng)建一張以列值加數(shù)據(jù)在原表中的主鍵加列值長(zhǎng)度為新主鍵的順序表,并將原行中其 余列的數(shù)據(jù)完整存儲(chǔ),本發(fā)明稱(chēng)這種索引表為互補(bǔ)聚簇索引表(Complemental Clustering Index Table簡(jiǎn)稱(chēng)CCIT)。對(duì)某個(gè)查詢(xún)列進(jìn)行區(qū)間查詢(xún)時(shí),由于CCIT中也保存有原表所有 數(shù)據(jù)所以直接對(duì)CCIT進(jìn)行連續(xù)掃描即可。多個(gè)查詢(xún)列進(jìn)行區(qū)間查詢(xún)時(shí),互補(bǔ)聚簇索引方法 利用分布式順序表的數(shù)據(jù)分布信息,高效的估算出各個(gè)子查詢(xún)結(jié)果集大小,從而挑選最優(yōu) 的查詢(xún)計(jì)劃。查詢(xún)結(jié)果集指查詢(xún)或子查詢(xún)得到的數(shù)據(jù)組成的集合。圖2形象地顯示了互補(bǔ)聚簇索引方法的數(shù)據(jù)分布。圖中假定一張需要對(duì)主鍵id和 兩個(gè)索引列idxl和idx2做區(qū)間查詢(xún)的表,CCIndex方法將構(gòu)建3張互補(bǔ)聚簇索引表,即原 表(互補(bǔ)聚簇索引表0,CCIT0)、互補(bǔ)聚簇索引表I(CCITl)和互補(bǔ)聚簇索引表2(CCIT2),每 張表分別按id、keyl和key2邏輯有序,并使真正的數(shù)據(jù)按此重新排列。CCIndex給定索引 列的CCIT新主鍵keyl和key2的構(gòu)建方式為索引列的值+原主鍵+索引列的值的長(zhǎng)度。 這種方式保證了新主鍵按索引列的值進(jìn)行排序,并使得索引列重復(fù)的取值也具有唯一的新 主鍵。由此,CCIndex中各查詢(xún)列的區(qū)間查詢(xún)就轉(zhuǎn)換為對(duì)應(yīng)CCIT表的連續(xù)掃描。
CCIndex方法將每張CCIT表的主鍵和索引列單獨(dú)保存成獨(dú)立的互補(bǔ)校驗(yàn)表 (Complemental Check Table簡(jiǎn)稱(chēng)CCT),即圖中的互補(bǔ)校驗(yàn)表O (CCTO),互補(bǔ)校驗(yàn)表 I(CCTl)和互補(bǔ)校驗(yàn)表2(CCT2)?;パa(bǔ)校驗(yàn)表本身有副本以保證可靠性,并用于CCIT表出 錯(cuò)時(shí)增量式的恢復(fù)數(shù)據(jù)。其副本數(shù)比全部查詢(xún)列的數(shù)量少1,因?yàn)镃CIT中自然存儲(chǔ)了一份 CCT表的副本。
圖2展示的是CCIndex內(nèi)部各張表的邏輯分布,物理上各張表分片(region)存儲(chǔ) 在DOT中。使用DOT來(lái)存儲(chǔ)各種表,使得CCIndex可以借助DOT系統(tǒng)的主鍵排序、數(shù)據(jù)分片、 讀寫(xiě)優(yōu)化等以提高海量數(shù)據(jù)的存取查詢(xún)速度。圖3展示的是CCIndex的系統(tǒng)結(jié)構(gòu)。各CCIT 表分片(region)之后存儲(chǔ)在多個(gè)存儲(chǔ)節(jié)點(diǎn)(HRegionServer)中,并保持各個(gè)索引列邏輯有 序。存儲(chǔ)節(jié)點(diǎn)負(fù)責(zé)查詢(xún)執(zhí)行、數(shù)據(jù)維護(hù)和索引維護(hù)。服務(wù)節(jié)點(diǎn)(HMaster)存儲(chǔ)和管理元數(shù) 據(jù)(其中包括分片和存儲(chǔ)節(jié)點(diǎn)的映射關(guān)系),并負(fù)責(zé)各存儲(chǔ)節(jié)點(diǎn)的負(fù)載均衡,同時(shí)負(fù)責(zé)檢測(cè) 和恢復(fù)各存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)。查詢(xún)優(yōu)化CCIndex首先對(duì)查詢(xún)計(jì)劃樹(shù)進(jìn)行預(yù)處理,執(zhí)行一些簡(jiǎn)單的合并去重優(yōu)化。然后檢查 轉(zhuǎn)化為析取式并行執(zhí)行,同時(shí)預(yù)估其中合取子式的結(jié)果集大小,挑選結(jié)果集最小的子式執(zhí) 行查詢(xún),其余子式作為謂詞篩選結(jié)果。CCIndex的關(guān)鍵查詢(xún)優(yōu)化在于估算查詢(xún)結(jié)果集的大 小。DOT系統(tǒng)的數(shù)據(jù)量極大,而查詢(xún)所需時(shí)間與結(jié)果集字節(jié)大小正相關(guān),因此選擇結(jié)果集小 的查詢(xún)非常重要。在數(shù)據(jù)庫(kù)領(lǐng)域,查詢(xún)結(jié)果集的估算依賴(lài)于數(shù)據(jù)統(tǒng)計(jì)信息,比如表的記錄數(shù),記錄長(zhǎng) 度的分布,使用的磁盤(pán)塊數(shù),索引列的非重復(fù)值的個(gè)數(shù),索引列的直方圖。但是在DOT系統(tǒng) 中,統(tǒng)計(jì)信息的獲取、存儲(chǔ)和維護(hù)都非常困難,并且難以保證其正確性。因?yàn)镈OT系統(tǒng)中巨 大的數(shù)據(jù)量由服務(wù)節(jié)點(diǎn)管理,分布在成百上千個(gè)存儲(chǔ)節(jié)點(diǎn)上。由于數(shù)據(jù)量極大,如果由服務(wù) 節(jié)點(diǎn)結(jié)點(diǎn)計(jì)算和存儲(chǔ)統(tǒng)計(jì)信息,則將使服務(wù)節(jié)點(diǎn)成為系統(tǒng)性能瓶頸。而如果由每個(gè)存儲(chǔ)節(jié) 點(diǎn)獨(dú)立維護(hù)統(tǒng)計(jì)信息,收集統(tǒng)計(jì)信息又會(huì)成為巨大的問(wèn)題,并且全局的統(tǒng)計(jì)信息的正確也 很難保證。因此DOT系統(tǒng)中通常不維護(hù)數(shù)據(jù)統(tǒng)計(jì)信息。CCIndex引入一種不依賴(lài)統(tǒng)計(jì)信息的快速估算查詢(xún)結(jié)果集大小的方法根據(jù)數(shù) 據(jù)分片到存儲(chǔ)節(jié)點(diǎn)的映射信息計(jì)算查詢(xún)區(qū)間跨越的分片數(shù)量,并由此估算結(jié)果集大小。 CCIndex的估算方法基于如下觀察1、DOT系統(tǒng)中有從數(shù)據(jù)分片到其存儲(chǔ)節(jié)點(diǎn)的映射信息,這些映射信息按分片的起 始的主鍵順序存儲(chǔ)。2、當(dāng)結(jié)果數(shù)據(jù)量大時(shí),結(jié)果集大小可以用跨分片數(shù)量來(lái)估算。DOT中單個(gè)分片通常 取一個(gè)固定的最大尺寸,超過(guò)這個(gè)尺寸的分片將被重新切分。所以大部分分片的大小是相 似的。3、結(jié)果集大小與查詢(xún)所需時(shí)間正相關(guān)?;谏鲜鲇^察,CCIndex對(duì)查詢(xún)結(jié)果集大小的估算算法如下1、對(duì)于每個(gè)給定的區(qū)間查詢(xún),由其起始鍵值和結(jié)束鍵值,通過(guò)對(duì)元信息中的查找 確定此區(qū)間查詢(xún)覆蓋的分片數(shù)量;2、對(duì)于完全覆蓋的分片,按分片最大值估算其大小。對(duì)于部分覆蓋的分片,根據(jù)按 照分片最大值一半計(jì)算其大??;
3、按2中規(guī)則累加全部分片的大小,即為估算的結(jié)果集大小;4、當(dāng)兩屬性(查詢(xún)索引列)的查找范圍包含的分片數(shù)相等且結(jié)果集大小相等時(shí), 比較屬性范圍的字符串距離。即將屬性值的起止從字符串左側(cè)開(kāi)始用“_”補(bǔ)為等長(zhǎng)之后, 從左向右從高位到低位按字節(jié)值相減的辦法計(jì)算其字符串的差值作為字符串距離。再挑選 距離最小的屬性。備份容錯(cuò)與恢復(fù)CCIndex中,每張CCIT沒(méi)有副本以避免存儲(chǔ)開(kāi)銷(xiāo)的成倍增加。此外讓多張CCIT之 間互相校驗(yàn),形成記錄級(jí)別的容錯(cuò)機(jī)制。本質(zhì)上,CCIndex中每條記錄在每張CCIT中各自保存了一份副本。當(dāng)某張CCIT 表的某個(gè)分片或者某條記錄出錯(cuò)時(shí),可以從其它CCIT表中獲得數(shù)據(jù)來(lái)重構(gòu)此損壞的分片 或記錄。但由于每張CCIT表各自按不同的查詢(xún)列排序,一旦某CCIT中某范圍內(nèi)的記錄損 壞,CCIndex將無(wú)法從此CCIT中獲知這些記錄的其它查詢(xún)列的值,從而無(wú)法在其它CCIT中 快速查找相應(yīng)的記錄。 為了解決這個(gè)問(wèn)題,CCIndex引入互補(bǔ)校驗(yàn)表CCT來(lái)解決這個(gè)問(wèn)題。每張表都有 其對(duì)應(yīng)的CCT,其中分別按各個(gè)表的主鍵存儲(chǔ)了全部索引列的值。因此當(dāng)某CCIT的一段記 錄損壞時(shí),查找相應(yīng)的CCT表即可找出損壞的記錄對(duì)應(yīng)的其它查詢(xún)列的值,并讀取相應(yīng)的 CCIT表獲取結(jié)果來(lái)恢復(fù)損壞記錄。同時(shí)CCT表本身有副本保證可其靠性。CCT的維護(hù)增加了記錄增加和刪除操作的開(kāi)銷(xiāo)。CCIndex中采用后臺(tái)線程異步更 新CCT的方式緩解對(duì)性能的影響。異步更新定時(shí)觸發(fā)并選擇在系統(tǒng)負(fù)載較低的時(shí)候進(jìn)行, 由此減少對(duì)系統(tǒng)響應(yīng)時(shí)間和吞吐率的影響。采用異步更新機(jī)制后,如果在成功更新CCT之 前遭遇系統(tǒng)出錯(cuò)則CCT中將缺失部分?jǐn)?shù)據(jù),CCIndex利用DOT的日志完成此恢復(fù)。日志機(jī) 制可以在出錯(cuò)時(shí)根據(jù)日志增量式的恢復(fù)數(shù)據(jù)。借助CCT的副本和DOT日志,CCIndex可以 保證系統(tǒng)數(shù)據(jù)的可靠性,并減少維護(hù)CCT表引入的開(kāi)銷(xiāo)?;贏pache HBase實(shí)現(xiàn)CCIndex原型。HBase構(gòu)建于HDFS,提供一個(gè)服務(wù)節(jié)點(diǎn)進(jìn) 程HMaster,并提供多個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)進(jìn)程HRegionServer來(lái)管理數(shù)據(jù)。CCIndex原型采用HBase v0. 20. 1作為代碼基礎(chǔ),采用Java語(yǔ)言實(shí)現(xiàn)。原型通過(guò) 將CCIT表的副本因子設(shè)置為1,以禁用底層HDFS的副本機(jī)制。CCIndex在HBase中創(chuàng)建多 張CCIT并為每張表建立CCT存儲(chǔ)在HBase中。HBase有一個(gè)元數(shù)據(jù)表,用于存儲(chǔ)用戶(hù)數(shù)據(jù) 表的分片到存儲(chǔ)節(jié)點(diǎn)的映射關(guān)系。CCIndex掃描HBase中的元數(shù)據(jù)表,以利用分片映射信息 來(lái)估算結(jié)果集大小。本發(fā)明的一種多維區(qū)間查詢(xún)系統(tǒng),包括存儲(chǔ)節(jié)點(diǎn),用于將用于備份數(shù)據(jù)的副本組織成為多份互為補(bǔ)充和校驗(yàn)的互補(bǔ)聚簇 索引表;互補(bǔ)聚簇索引表以每個(gè)索引列創(chuàng)建一張以列值加原行主鍵加列值長(zhǎng)度為新主鍵的 順序表,并將原行中其余列的數(shù)據(jù)完整存儲(chǔ);互補(bǔ)聚簇索引表用于供查詢(xún)時(shí)進(jìn)行連續(xù)掃描; 存儲(chǔ)節(jié)點(diǎn)將互補(bǔ)聚簇索引表的分片在物理上分布式的存儲(chǔ);客戶(hù)端,用于將查詢(xún)串轉(zhuǎn)換為查詢(xún)計(jì)劃樹(shù),進(jìn)行查詢(xún)優(yōu)化后完成查詢(xún)的執(zhí)行。一具體實(shí)施方式
中,所述互補(bǔ)聚簇索引表包含原數(shù)據(jù)表中所有的數(shù)據(jù);底層文件 系統(tǒng)的備份策略處于關(guān)閉的狀態(tài)。一具體實(shí)施方式
中,所述系統(tǒng)還包括服務(wù)節(jié)點(diǎn),所述服務(wù)節(jié)點(diǎn)用于存儲(chǔ)分布式順序表的元信息,元信息中包含分片與存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系;所述客戶(hù)端在查詢(xún)優(yōu)化時(shí)進(jìn)一步用于先對(duì)查詢(xún)語(yǔ)句進(jìn)行去重合并,然后基于所述分布式順序表的分片信息對(duì)子查詢(xún)結(jié)果 集的大小進(jìn)行估算,最后挑選結(jié)果集最小的子查詢(xún)請(qǐng)求存儲(chǔ)節(jié)點(diǎn)執(zhí)行查詢(xún)過(guò)程。進(jìn)一步的,所述客戶(hù)端在估算子查詢(xún)結(jié)果集的大小時(shí)進(jìn)一步用于對(duì)于每個(gè)給定的 區(qū)間查詢(xún),由其起始鍵值和結(jié)束鍵值通過(guò)對(duì)元信息中數(shù)據(jù)的查找確定此區(qū)間查詢(xún)覆蓋的分 片數(shù)量;對(duì)于被完全覆蓋的分片,按分片平均大小估算其大小;對(duì)于被部分覆蓋的分片,根 據(jù)按照該分片被覆蓋的比例計(jì)算該分片大??;累加全部分片的大小,獲得估算的結(jié)果集大 ?。划?dāng)兩個(gè)子查詢(xún)包含的分片數(shù)相等且結(jié)果集大小相等時(shí),比較查詢(xún)區(qū)間的字符串距離,用 所述字符串距離來(lái)估算子查詢(xún)結(jié)果集的大小。一具體實(shí)施方式
中,查詢(xún)計(jì)劃樹(shù)的每個(gè)葉子節(jié)點(diǎn)是能被存儲(chǔ)節(jié)點(diǎn)直接處理的點(diǎn)查 詢(xún)和單個(gè)維度的區(qū)間查詢(xún),查詢(xún)計(jì)劃樹(shù)的非葉子節(jié)點(diǎn)表示多個(gè)查詢(xún)的邏輯關(guān)系。一具體實(shí)施方式
中,所述存儲(chǔ)節(jié)點(diǎn)還用于建立互補(bǔ)校驗(yàn)表,互補(bǔ)校驗(yàn)表中按照各 個(gè)互補(bǔ)聚簇索引表的主鍵存儲(chǔ)了全部索引列的值,同時(shí)屏蔽底層文件系統(tǒng)的備份策略;當(dāng) 發(fā)現(xiàn)互補(bǔ)聚簇索引表發(fā)生數(shù)據(jù)缺失時(shí)通過(guò)互補(bǔ)校驗(yàn)表中保存的主鍵對(duì)應(yīng)關(guān)系從其它互補(bǔ) 聚簇索引表中恢復(fù)缺失的數(shù)據(jù)。本發(fā)明的一具體實(shí)施例的系統(tǒng)結(jié)構(gòu)如3所示。各CCIT表分region存儲(chǔ)在多個(gè)存 儲(chǔ)節(jié)點(diǎn)(HRegionServer)中,并保持按各個(gè)索引列邏輯有序。存儲(chǔ)節(jié)點(diǎn)負(fù)責(zé)查詢(xún)執(zhí)行和數(shù) 據(jù)維護(hù),包括索引維護(hù)。服務(wù)節(jié)點(diǎn)(HMaster)存儲(chǔ)和管理region-to-server元數(shù)據(jù),并負(fù) 責(zé)各存儲(chǔ)節(jié)點(diǎn)的負(fù)載均衡,同時(shí)負(fù)責(zé)檢測(cè)和恢復(fù)各存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)。客戶(hù)端部署查詢(xún)引擎, 負(fù)責(zé)查詢(xún)計(jì)劃生成,聯(lián)系服務(wù)節(jié)點(diǎn)獲取元信息來(lái)優(yōu)化查詢(xún),連接存儲(chǔ)節(jié)點(diǎn)獲取數(shù)據(jù)??蛻?hù)端 與服務(wù)節(jié)點(diǎn)之間主要是交換控制信息,真正的數(shù)據(jù)交換都是直接與存儲(chǔ)節(jié)點(diǎn)完成。同理,存 儲(chǔ)節(jié)點(diǎn)與服務(wù)節(jié)點(diǎn)也主要是交換控制信息。客戶(hù)端提供CCIndex的API,供用戶(hù)使用。本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書(shū)確定的本發(fā)明的精神和范圍的條件下,還 可以對(duì)以上內(nèi)容進(jìn)行各種各樣的修改。因此本發(fā)明的范圍并不僅限于以上的說(shuō)明,而是由 權(quán)利要求書(shū)的范圍來(lái)確定的。
權(quán)利要求
一種多維區(qū)間查詢(xún)方法,其特征在于,包括步驟1,將用于備份數(shù)據(jù)的副本組織成為多份互為補(bǔ)充和校驗(yàn)的互補(bǔ)聚簇索引表;互補(bǔ)聚簇索引表以每個(gè)索引列創(chuàng)建一張以列值加原行主鍵加列值長(zhǎng)度為新主鍵的順序表,并將原行中其余列的數(shù)據(jù)完整存儲(chǔ);互補(bǔ)聚簇索引表用于供查詢(xún)時(shí)進(jìn)行連續(xù)掃描;步驟2,將查詢(xún)串轉(zhuǎn)換為查詢(xún)計(jì)劃樹(shù),進(jìn)行查詢(xún)優(yōu)化后完成查詢(xún)的執(zhí)行。
2.如權(quán)利要求1所述的多維區(qū)間查詢(xún)方法,其特征在于,步驟1中,互補(bǔ)聚簇索引表包 含原數(shù)據(jù)表中所有的數(shù)據(jù);底層文件系統(tǒng)的備份策略處于關(guān)閉的狀態(tài)。
3.如權(quán)利要求1所述的多維區(qū)間查詢(xún)方法,其特征在于,步驟2中,查詢(xún)優(yōu)化時(shí),先對(duì) 查詢(xún)語(yǔ)句進(jìn)行去重合并,然后基于分布式順序表的分片信息對(duì)子查詢(xún)結(jié)果集的大小進(jìn)行估 算,最后挑選結(jié)果集最小的子查詢(xún)執(zhí)行查詢(xún)過(guò)程。
4.如權(quán)利要求1所述的多維區(qū)間查詢(xún)方法,其特征在于,查詢(xún)計(jì)劃樹(shù)的每個(gè)葉子節(jié)點(diǎn) 是能被直接處理的點(diǎn)查詢(xún)和單個(gè)維度的區(qū)間查詢(xún),查詢(xún)計(jì)劃樹(shù)的非葉子節(jié)點(diǎn)表示多個(gè)查詢(xún) 的邏輯關(guān)系。
5.如權(quán)利要求3所述的多維區(qū)間查詢(xún)方法,其特征在于,估算子查詢(xún)結(jié)果集的大小具 體包括步驟21,對(duì)于每個(gè)給定的區(qū)間查詢(xún),由其起始鍵值和結(jié)束鍵值通過(guò)對(duì)元信息中數(shù)據(jù)的 查找確定此區(qū)間查詢(xún)覆蓋的分片數(shù)量;步驟22,對(duì)于被完全覆蓋的分片,按分片平均大小估算其大??;對(duì)于被部分覆蓋的分 片,根據(jù)按照該分片被覆蓋的比例計(jì)算該分片大??;步驟23,累加全部分片的大小,獲得估算的結(jié)果集大小;步驟24,當(dāng)兩個(gè)子查詢(xún)包含的分片數(shù)相等且結(jié)果集大小相等時(shí),比較查詢(xún)區(qū)間的字符 串距離,用所述字符串距離來(lái)估算子查詢(xún)結(jié)果集的大小。
6.如權(quán)利要求1所述的多維區(qū)間查詢(xún)方法,其特征在于,還包括下述步驟步驟3,建立互補(bǔ)校驗(yàn)表,互補(bǔ)校驗(yàn)表中按照各個(gè)互補(bǔ)聚簇索引表的主鍵存儲(chǔ)了全部索 引列的值,同時(shí)屏蔽底層文件系統(tǒng)的備份策略;當(dāng)互補(bǔ)聚簇索引表發(fā)生數(shù)據(jù)缺失時(shí)通過(guò)互 補(bǔ)校驗(yàn)表中保存的主鍵對(duì)應(yīng)關(guān)系從其它互補(bǔ)聚簇索引表中恢復(fù)缺失的數(shù)據(jù)。
7.一種多維區(qū)間查詢(xún)系統(tǒng),其特征在于,包括存儲(chǔ)節(jié)點(diǎn),用于將用于備份數(shù)據(jù)的副本組織成為多份互為補(bǔ)充和校驗(yàn)的互補(bǔ)聚簇索引 表;互補(bǔ)聚簇索引表以每個(gè)索引列創(chuàng)建一張以列值加原行主鍵加列值長(zhǎng)度為新主鍵的順序 表,并將原行中其余列的數(shù)據(jù)完整存儲(chǔ);互補(bǔ)聚簇索引表用于供查詢(xún)時(shí)進(jìn)行連續(xù)掃描;存 儲(chǔ)節(jié)點(diǎn)將互補(bǔ)聚簇索引表的分片在物理上分布式的存儲(chǔ);客戶(hù)端,用于將查詢(xún)串轉(zhuǎn)換為查詢(xún)計(jì)劃樹(shù),進(jìn)行查詢(xún)優(yōu)化后完成查詢(xún)的執(zhí)行。
8.如權(quán)利要求7所述的多維區(qū)間查詢(xún)系統(tǒng),其特征在于,所述互補(bǔ)聚簇索引表包含原數(shù)據(jù)表中所有的數(shù)據(jù);底層文件系統(tǒng)的備份策略處于關(guān)閉 的狀態(tài)。
9.如權(quán)利要求7所述的多維區(qū)間查詢(xún)系統(tǒng),其特征在于,所述系統(tǒng)還包括服務(wù)節(jié)點(diǎn),所述服務(wù)節(jié)點(diǎn)用于存儲(chǔ)分布式順序表的元信息,元信息中 包含分片與存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系,所述客戶(hù)端在查詢(xún)優(yōu)化時(shí)進(jìn)一步用于先對(duì)查詢(xún)語(yǔ)句進(jìn)行去重合并,然后基于所述分布式順序表的分片信息對(duì)子查詢(xún)結(jié)果集的大小進(jìn)行估算,最后挑選結(jié)果集最小的子查詢(xún)請(qǐng)求 存儲(chǔ)節(jié)點(diǎn)執(zhí)行查詢(xún)過(guò)程。
10.如權(quán)利要求7所述的多維區(qū)間查詢(xún)系統(tǒng),其特征在于,查詢(xún)計(jì)劃樹(shù)的每個(gè)葉子節(jié)點(diǎn)是能被存儲(chǔ)節(jié)點(diǎn)直接處理的點(diǎn)查詢(xún)和單個(gè)維度的區(qū)間查 詢(xún),查詢(xún)計(jì)劃樹(shù)的非葉子節(jié)點(diǎn)表示多個(gè)查詢(xún)的邏輯關(guān)系。
11.如權(quán)利要求9所述的多維區(qū)間查詢(xún)系統(tǒng),其特征在于,所述客戶(hù)端在估算子查詢(xún)結(jié)果集的大小時(shí)進(jìn)一步用于對(duì)于每個(gè)給定的區(qū)間查詢(xún),由其 起始鍵值和結(jié)束鍵值通過(guò)對(duì)元信息中數(shù)據(jù)的查找確定此區(qū)間查詢(xún)覆蓋的分片數(shù)量;對(duì)于被 完全覆蓋的分片,按分片平均大小估算其大?。粚?duì)于被部分覆蓋的分片,根據(jù)按照該分片被 覆蓋的比例計(jì)算該分片大?。焕奂尤糠制拇笮?,獲得估算的結(jié)果集大??;當(dāng)兩個(gè)子查 詢(xún)包含的分片數(shù)相等且結(jié)果集大小相等時(shí),比較查詢(xún)區(qū)間的字符串距離,用所述字符串距 離來(lái)估算子查詢(xún)結(jié)果集的大小。
12.如權(quán)利要求7所述的多維區(qū)間查詢(xún)系統(tǒng),其特征在于,所述存儲(chǔ)節(jié)點(diǎn)還用于建立互補(bǔ)校驗(yàn)表,互補(bǔ)校驗(yàn)表中按照各個(gè)互補(bǔ)聚簇索引表的主鍵 存儲(chǔ)了全部索引列的值,同時(shí)屏蔽底層文件系統(tǒng)的備份策略;當(dāng)發(fā)現(xiàn)互補(bǔ)聚簇索引表發(fā)生 數(shù)據(jù)缺失時(shí)通過(guò)互補(bǔ)校驗(yàn)表中保存的主鍵對(duì)應(yīng)關(guān)系從其它互補(bǔ)聚簇索引表中恢復(fù)缺失的 數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種多維區(qū)間查詢(xún)方法和系統(tǒng),方法包括步驟1,將用于備份數(shù)據(jù)的副本組織成為多份互為補(bǔ)充和校驗(yàn)的互補(bǔ)聚簇索引表;互補(bǔ)聚簇索引表以每個(gè)索引列創(chuàng)建一張以列值加原行主鍵加列值長(zhǎng)度為新主鍵的順序表,并將原行中其余列的數(shù)據(jù)完整存儲(chǔ);互補(bǔ)聚簇索引表用于供查詢(xún)時(shí)進(jìn)行連續(xù)掃描;步驟2,將查詢(xún)串轉(zhuǎn)換為查詢(xún)計(jì)劃樹(shù),進(jìn)行查詢(xún)優(yōu)化后完成查詢(xún)的執(zhí)行。本發(fā)明能夠同時(shí)滿(mǎn)足高性能、低存儲(chǔ)開(kāi)銷(xiāo)和高可靠性要求。
文檔編號(hào)G06F17/30GK101866358SQ20101020594
公開(kāi)日2010年10月20日 申請(qǐng)日期2010年6月12日 優(yōu)先權(quán)日2010年6月12日
發(fā)明者劉佳, 查禮, 王世才, 鄒永強(qiáng) 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
黄骅市| 台中县| 三江| 黄石市| 东平县| 嘉义市| 泗洪县| 天台县| 五家渠市| 盐亭县| 精河县| 旌德县| 平南县| 隆子县| 黄骅市| 庆城县| 象山县| 株洲市| 林芝县| 增城市| 龙海市| 望奎县| 柞水县| 连州市| 富阳市| 湘潭市| 岳普湖县| 泗洪县| 大丰市| 琼海市| 甘洛县| 伊金霍洛旗| 宁乡县| 东乡县| 灵宝市| 石首市| 疏勒县| 泗水县| 辉县市| 伊川县| 康乐县|