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

分布式列存儲(chǔ)數(shù)據(jù)庫索引建立、查詢方法及裝置與系統(tǒng)的制作方法

文檔序號(hào):6471051閱讀:186來源:國知局

專利名稱::分布式列存儲(chǔ)數(shù)據(jù)庫索引建立、查詢方法及裝置與系統(tǒng)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及分布式列存儲(chǔ)數(shù)據(jù)庫,尤其涉及一種分布式列存儲(chǔ)數(shù)據(jù)庫的索引建立方法,數(shù)據(jù)查詢方法及相應(yīng)的裝置與系統(tǒng)。
背景技術(shù)
:分布式列存儲(chǔ)數(shù)據(jù)庫是一種適合快速查詢的、分布式的優(yōu)良解決方案,它在提供海量數(shù)據(jù)存儲(chǔ)的同時(shí),還可以有效的提高對(duì)數(shù)據(jù)的查詢速度。分布式列存儲(chǔ)數(shù)據(jù)庫的特點(diǎn)是數(shù)據(jù)表中必須有Row字段,且Row字段為關(guān)鍵字,即不可重復(fù),并排序。如果原表為N個(gè)列字段,則整個(gè)表在分布式列存儲(chǔ)數(shù)據(jù)庫中以(N-l)個(gè)表來進(jìn)行存儲(chǔ);即除Row字段外,對(duì)其余的列字段分別存儲(chǔ)一個(gè)對(duì)應(yīng)表。舉例說明如下表一GNTABLE<table>tableseeoriginaldocumentpage5</column></row><table>上表一為分布式列存儲(chǔ)數(shù)據(jù)庫的一個(gè)原數(shù)據(jù)表GNTABLE,其包含Row字段并排序,其余列字段包括時(shí)間(Time)、用戶標(biāo)識(shí)(UserlD)、源IP地址(SourceIP)、目標(biāo)IP地址(ObjectIP)和信號(hào)類型(SingalType)。在列存儲(chǔ)數(shù)據(jù)庫中,需要針對(duì)各列字段(Time、UserID、SourceIP、ObjectIP和SingalType)分別存儲(chǔ)一個(gè)對(duì)應(yīng)表。以Time和UserlD列字段為例,其存儲(chǔ)的對(duì)應(yīng)表分別如下表二和表三所示表二<table>tableseeoriginaldocumentpage5</column></row><table><table>tableseeoriginaldocumentpage6</column></row><table>表三<table>tableseeoriginaldocumentpage6</column></row><table>在分布式列存儲(chǔ)數(shù)據(jù)庫中,包含有主服務(wù)器(Master)和分片服務(wù)器(TabletServer)。其中,在主服務(wù)器中保存Row字段值與各分片服務(wù)器之間的映射關(guān)系,在各分片服務(wù)器中分別保存分布式列存儲(chǔ)數(shù)據(jù)庫的分片數(shù)據(jù)。所謂分片數(shù)據(jù),是指將一個(gè)原數(shù)據(jù)表按照行分為幾個(gè)分片(一個(gè)分片包含若干行),每個(gè)分片包括各行的全部數(shù)據(jù)。每個(gè)分片數(shù)據(jù)可以存儲(chǔ)于一個(gè)分片服務(wù)器中(當(dāng)然,一個(gè)分片服務(wù)器可以存儲(chǔ)多個(gè)分片數(shù)據(jù)),各分片數(shù)據(jù)中按Row排序。每個(gè)分片數(shù)據(jù)中第一行的Row值為開始(begin)值,最后一行的Row值為結(jié)束(end)值,根據(jù)分片規(guī)則,則下一個(gè)分片數(shù)據(jù)的begin值>上一個(gè)分片數(shù)據(jù)的end值。其存儲(chǔ)架構(gòu)示意圖如圖l所示,包括在主服務(wù)器(Master)中包含有元數(shù)據(jù)(Metadata)模塊,存儲(chǔ)Row字段值與各分片服務(wù)器(TabletServer)的映射關(guān)系。在各分片服務(wù)器中包含數(shù)據(jù)片模塊(HRegion),在該模塊中存儲(chǔ)列字段(或列家族,在分布式列存儲(chǔ)數(shù)據(jù)庫中,將經(jīng)常被同時(shí)訪問的幾個(gè)列定義為列家族,同一個(gè)列家族存儲(chǔ)于一個(gè)列文件中)與對(duì)應(yīng)列存儲(chǔ)文件(HStoreFile)之間的映射關(guān)系,一個(gè)或多個(gè)HStoreFile存儲(chǔ)在一個(gè)列模塊(HStore)下。每個(gè)HStoreFile保存了兩個(gè)文件,即數(shù)據(jù)(Data)文件和索引(Index)文件,并建立兩者之間的映射。Data文件保存數(shù)據(jù),其格式為〈Key,value〉,Index文件保存Key的索引,通過Key的索引,可以直接定位到Data文件中的某行數(shù)據(jù)。仍以上表一中的UserID列字段為例,在對(duì)應(yīng)的HStoreFile中,其對(duì)應(yīng)的Data文件和Index文件分別如下表四、表五所示。表四<table>tableseeoriginaldocumentpage7</column></row><table>表五<table>tableseeoriginaldocumentpage7</column></row><table>根據(jù)上述現(xiàn)有技術(shù)的存儲(chǔ)架構(gòu),對(duì)于分布式列存儲(chǔ)數(shù)所庫,整體的索引機(jī)制形成樹的形式,可以通過三層快速對(duì)Row進(jìn)行定位。但由于現(xiàn)有技術(shù)中數(shù)據(jù)是根據(jù)主關(guān)鍵字Row排序并存儲(chǔ)的,對(duì)于Time、UserID等非主關(guān)鍵字的列則不是排序的,因此以這些列為條件的訪問就必須根據(jù)Row遍歷整個(gè)數(shù)據(jù)表才能實(shí)現(xiàn)。在沒有索引情況下的遍歷數(shù)據(jù),即便是分布式數(shù)據(jù)庫,可以并發(fā)處理遍歷請(qǐng)求,但其面對(duì)海量數(shù)據(jù)時(shí),性能也無法忍受。而對(duì)于傳統(tǒng)的數(shù)據(jù)庫應(yīng)用來說,使用非主關(guān)鍵字查詢的場(chǎng)合非常多,因此需要有一種針對(duì)非主關(guān)鍵字的列的索引機(jī)制以滿足使用需求。
發(fā)明內(nèi)容本發(fā)明提供一種分布式列存儲(chǔ)數(shù)據(jù)庫索引建立方法、查詢方法及裝置與系統(tǒng),用以解決現(xiàn)有分布式列存儲(chǔ)數(shù)據(jù)庫中不能夠按照除Row字段外的其它列字段進(jìn)行快速高效查詢的問題。本發(fā)明提供的分布式列存儲(chǔ)數(shù)據(jù)庫索引建立方法,包括獲取分布式列存儲(chǔ)數(shù)據(jù)庫中的列字段;生成以所述列字段作為關(guān)鍵字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值與相對(duì)應(yīng)的Row字段值的映射關(guān)系;存儲(chǔ)所述列索引文件到所述分布式列存儲(chǔ)數(shù)據(jù)庫中與所述列字段對(duì)應(yīng)的索引目錄下。本發(fā)明還提供一種分布式列存儲(chǔ)數(shù)據(jù)庫查詢方法,包括客戶端向分布式列存儲(chǔ)數(shù)據(jù)庫的主服務(wù)器發(fā)起查詢請(qǐng)求;所述主服務(wù)器根據(jù)本地存儲(chǔ)的Row字段值與所述分布式列存儲(chǔ)數(shù)據(jù)庫的分片服務(wù)器的映射關(guān)系,向所述客戶端返回分片服務(wù)器信息;所述客戶端向所述分片服務(wù)器發(fā)起查詢請(qǐng)求,在該查詢請(qǐng)求中攜帶查詢結(jié)果的列字段、查詢條件的列字段及字段值信息;所述分片服務(wù)器根據(jù)本地存儲(chǔ)的列字段的索引目錄,匹配出與所述查詢條件的列字段對(duì)應(yīng)的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值與相對(duì)應(yīng)的Row字段值的映射關(guān)系;所述分片服務(wù)器根據(jù)匹配出的所述列索引文件及所述字段值信息獲取對(duì)應(yīng)Row字段值,并根據(jù)獲取的Row字段值查詢與所述查詢結(jié)果的列字段對(duì)應(yīng)的索引文件和數(shù)據(jù)文件,得到滿足查詢條件結(jié)果值,返回給所述客戶端。本發(fā)明再提供一種分布式列存儲(chǔ)數(shù)據(jù)庫索引建立裝置,包括獲取單元,用于獲取分布式列存儲(chǔ)數(shù)據(jù)庫中的列字段;生成單元,用于生成以所述獲取單元獲取的所述列字段作為關(guān)鍵字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值與相對(duì)應(yīng)的Row字段值的映射關(guān)系;存儲(chǔ)單元,用于存儲(chǔ)所述列索引文件到所述分布式列存儲(chǔ)數(shù)據(jù)庫中與所述列字段對(duì)應(yīng)的索引目錄下。本發(fā)明再提供一種分布式列存儲(chǔ)數(shù)據(jù)庫系統(tǒng),包括主服務(wù)器和分片服務(wù)器,所述主服務(wù)器包括第一存儲(chǔ)單元,用于存儲(chǔ)分布式列存儲(chǔ)數(shù)據(jù)庫的Row字段值與分片服務(wù)器的映射關(guān)系;以及查詢受理單元,用于接收客戶端的查詢請(qǐng)求,根據(jù)所述第一存儲(chǔ)單元存儲(chǔ)的所述映射關(guān)系向客戶端返回分片服務(wù)器信息;所述分片服務(wù)器包括列索引文件生成單元,用于獲取分布式列存儲(chǔ)數(shù)據(jù)庫中的列字段,生成以所述列字段作為關(guān)鍵字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值與對(duì)應(yīng)的Row字段值的映射關(guān)系,并存儲(chǔ)所述列索引文件到所述分布式列存儲(chǔ)數(shù)據(jù)庫中與所述列字段對(duì)應(yīng)的索引目錄下;第二存儲(chǔ)單元,用于存儲(chǔ)分配的分片數(shù)據(jù)中的列字段對(duì)應(yīng)的數(shù)據(jù)文件、以Row字段為關(guān)鍵字的索引文件和所述列字段的列索引文件;分析單元,用于接收客戶端發(fā)送的查詢請(qǐng)求,分析所述查詢請(qǐng)求中攜帶的查詢結(jié)果的列字段、查詢條件的列字段及字段值信息;匹配單元,用于根據(jù)所述查詢條件的列字段在所述第二存儲(chǔ)單元中匹配出對(duì)應(yīng)的列索引文件,并根據(jù)匹配出的所述列索引文件及所述字段值信息,獲取對(duì)應(yīng)Row字段值;結(jié)果查詢單元,用于用獲取的Row字段值查詢所述查詢結(jié)果的列字段對(duì)應(yīng)的索引文件和數(shù)據(jù)文件,得到滿足查詢條件的查詢結(jié)果值;結(jié)果返回單元,用于向發(fā)起查詢請(qǐng)求的所述客戶端返回所述查詢結(jié)果值。本發(fā)明通過獲取分布式列存儲(chǔ)數(shù)據(jù)庫中除Row字段外的列字段,生成以列字段作為關(guān)鍵字的列索引文件,在該列索引文件中包含列字段在分布式列存儲(chǔ)數(shù)據(jù)庫中的值與相對(duì)應(yīng)的Row字段值的映射關(guān)系;并將生成的列索引文件存儲(chǔ)到與列字段對(duì)應(yīng)的索引目錄下。使得客戶端可以向分布式列存儲(chǔ)數(shù)據(jù)庫的主服務(wù)器發(fā)起攜帶查詢結(jié)果的列字段、查詢條件的列字段及字段值信息的查詢請(qǐng)求,通過主服務(wù)器、分片服務(wù)器根據(jù)存儲(chǔ)的列字段的索引目錄,匹配出與查詢條件的列字段對(duì)應(yīng)的列索引文件,根據(jù)列索引文件獲取對(duì)應(yīng)Row字段值,并根據(jù)獲取的Row字段值查詢所述查詢結(jié)果的列字段對(duì)應(yīng)的數(shù)據(jù)文件,得到滿足查詢條件結(jié)果值,返回給客戶端。從而實(shí)現(xiàn)客戶端可以方便地針對(duì)分布式列存儲(chǔ)數(shù)據(jù)庫采用非Row字段的其余列字段進(jìn)行快速高效的索引查詢。圖1為現(xiàn)有技術(shù)中分布式列存儲(chǔ)數(shù)據(jù)庫存儲(chǔ)架構(gòu)示意圖;圖2為本發(fā)明實(shí)施例提供的分布式列存儲(chǔ)數(shù)據(jù)庫索引建立方法流程圖;圖3為本發(fā)明實(shí)施例提供的HStoreFile下的文件結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例提供的分布式列存儲(chǔ)數(shù)據(jù)庫查詢方法流程圖;圖5為本發(fā)明實(shí)施例提供的分布式列存儲(chǔ)數(shù)據(jù)庫索引建立裝置結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例提供的分布式列存儲(chǔ)數(shù)據(jù)庫索引建立裝置中生成單元的內(nèi)部結(jié)構(gòu)示意圖;圖7為本發(fā)明實(shí)施例提供的分布式列存儲(chǔ)數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)示意圖。具體實(shí)施例方式本發(fā)明實(shí)施例提供一種分布式列存儲(chǔ)數(shù)據(jù)庫索引建立方法,其實(shí)現(xiàn)流程如圖2所示,包括步驟S201、獲取分布式列存儲(chǔ)數(shù)據(jù)庫中的列字段。步驟S202、生成以獲取的列字段作為關(guān)鍵字的列索引文件,在列索引文件中包含該列字段在分布式列存儲(chǔ)數(shù)據(jù)庫中的值與相對(duì)應(yīng)的Row字段值的映射關(guān)系。在該步驟S202中,可以針對(duì)獲取的每一個(gè)列字段(或列家族),分別生成一個(gè)對(duì)應(yīng)的列索引文件。實(shí)際應(yīng)用中,為方便用戶查詢,理論上可以對(duì)分布式列存儲(chǔ)數(shù)據(jù)庫中除Row字段外的每一個(gè)列字段,都生成一個(gè)對(duì)應(yīng)的列索引文件。當(dāng)然,如果某些列字段基本沒有查詢的價(jià)值,實(shí)際中幾乎不會(huì)采用該字段進(jìn)行查詢,則不必生成對(duì)應(yīng)的列索引文件,以節(jié)省數(shù)據(jù)庫占用的存儲(chǔ)資源。步驟S203、存儲(chǔ)生成的列索引文件到分布式列存儲(chǔ)數(shù)據(jù)庫中與該列字段對(duì)應(yīng)的索引目錄下。根據(jù)上述流程描述可知,本發(fā)明在現(xiàn)有技術(shù)的基礎(chǔ)上,為分布式列存儲(chǔ)數(shù)據(jù)庫中除Row字段外的其余列字段分別生成了一個(gè)對(duì)應(yīng)的列索引文件,并存儲(chǔ)到與列字段對(duì)應(yīng)的索引目錄下。仍沿用上述表一為例,針對(duì)列字段UserID生成的列索引文件如下表六所示表六<table>tableseeoriginaldocumentpage10</column></row><table>表六中,左邊一欄為UserID在原分布式列存儲(chǔ)數(shù)據(jù)庫中的值,根據(jù)表三可知,其字段值只有兩個(gè),其一為13910001000和13810001000;右邊一欄為Row字段值,即與UserID的每個(gè)值分別對(duì)應(yīng)的Row字段值,由表三可知,與13910001000對(duì)應(yīng)的Row字段值分別為1、3、4,與13810001000對(duì)應(yīng)的Row字段值為2。下面結(jié)合分布式列存儲(chǔ)數(shù)據(jù)庫的存儲(chǔ)架構(gòu),進(jìn)行具體說明在分布式列存儲(chǔ)數(shù)據(jù)庫的主服務(wù)器中存儲(chǔ)第一級(jí)索引目錄,在第一級(jí)索引目錄中包含Row字段值與各分片服務(wù)器的映射關(guān)系;例如,在主服務(wù)器的元數(shù)據(jù)模塊中存儲(chǔ)第一級(jí)索引目錄。根據(jù)第一級(jí)索引目錄,主服務(wù)器可以查找到全部的分片服務(wù)器。在每個(gè)分片服務(wù)器中存儲(chǔ)第二級(jí)索引目錄和第三級(jí)索引目錄,在第二級(jí)索引目錄中包含列字段與列存儲(chǔ)文件的映射關(guān)系;例如,在分片服務(wù)器的數(shù)據(jù)片模塊中存儲(chǔ)第二級(jí)索引目錄。在第三級(jí)索引目錄下,存儲(chǔ)列存儲(chǔ)文件對(duì)應(yīng)列字段的數(shù)據(jù)文件、索引文件和本發(fā)明生成的列索引文件。第三級(jí)索引目錄相當(dāng)于現(xiàn)有現(xiàn)有技術(shù)中的HStoreFile,所不同的是,本發(fā)明在現(xiàn)有技術(shù)的HStoreFile下增加了一個(gè)與該列字段對(duì)應(yīng)的列索引文件,其層級(jí)關(guān)系示意圖如圖3所示在列存儲(chǔ)文件(HStoreFile)下,存儲(chǔ)有三個(gè)文件,分別為在對(duì)應(yīng)的分片服務(wù)器分配的分片數(shù)據(jù)中,該列字段對(duì)應(yīng)的數(shù)據(jù)(Data)文件(為描述方便,后續(xù)統(tǒng)一稱為Data文件)、以Row字段為關(guān)鍵字的索引(Index)文件(為描述方便,后續(xù)統(tǒng)一稱為Index文件)和本發(fā)明生成的對(duì)應(yīng)列索引(Collndex)文件(為描述方便,后續(xù)統(tǒng)一稱為Collndex文件)。在分片服務(wù)器中,對(duì)列字段建立對(duì)應(yīng)的列索引文件,可由用戶指定。即在分片服務(wù)器向用戶提供創(chuàng)建索引、刪除索引的接口,用戶可以根據(jù)自己的使用需要,建立全部或部分列字段對(duì)應(yīng)的列索引文件。根據(jù)本發(fā)明上述實(shí)施例提供的方法,當(dāng)一個(gè)分片服務(wù)器中存儲(chǔ)一片及一片以上的分片數(shù)據(jù)時(shí),在該分片服務(wù)器中針對(duì)每片分片數(shù)據(jù)分別建立第二級(jí)索引目錄和第三級(jí)索引目錄。當(dāng)分布式列存儲(chǔ)數(shù)據(jù)庫中增加數(shù)據(jù)、刪除數(shù)據(jù)或修改數(shù)據(jù)后,需要重新生成列索引文件,或者修改已生成的列索引文件中的對(duì)應(yīng)數(shù)據(jù),以保證列索引文件中的數(shù)據(jù)與當(dāng)前數(shù)據(jù)庫中的相關(guān)數(shù)據(jù)相一致,以避免后續(xù)查詢時(shí)出現(xiàn)錯(cuò)誤的查詢結(jié)果?;谕话l(fā)明構(gòu)思,根據(jù)本發(fā)明提供的上述分布式列存儲(chǔ)數(shù)據(jù)庫索引建立方法,本發(fā)明還提供一種分布式列存儲(chǔ)數(shù)據(jù)庫查詢方法,其具體實(shí)現(xiàn)流程如圖4所示,包括步驟S401、客戶端向分布式列存儲(chǔ)數(shù)據(jù)庫的主服務(wù)器發(fā)起查詢請(qǐng)求;步驟S402、主服務(wù)器根據(jù)本地存儲(chǔ)的Row字段值與分片服務(wù)器的映射關(guān)系,向客戶端返回分片服務(wù)器信息;步驟S403、客戶端向分片服務(wù)器發(fā)起查詢請(qǐng)求,在該查詢請(qǐng)求中攜帶查詢結(jié)果的列字段、查詢條件的列字段及字段值信息;步驟S404、分片服務(wù)器根據(jù)本地存儲(chǔ)的列字段的索引目錄,匹配出與查詢條件的列字段對(duì)應(yīng)的Co1Index文件;步驟S405、分片服務(wù)器根據(jù)匹配出的Collndex文件及查詢條件中攜帶的列字段的字段值信息,獲取對(duì)應(yīng)Row字段值;步驟S406、分片服務(wù)器根據(jù)獲取的Row字段值,以及查詢結(jié)果的列字段對(duì)應(yīng)的Index文件和Data文件,得到滿足查詢條件結(jié)果值;步驟S407、分片服務(wù)器返回符合查詢條件的結(jié)果值給發(fā)起查詢請(qǐng)求的客戶端。仍以上表一為例,假設(shè)查詢請(qǐng)求為"SelectSignalTypefromGNTABLEwhereUserID=,13910001000'",即從GNTABLE數(shù)據(jù)表中選擇列字段UserID為"13910001000"的用戶對(duì)應(yīng)使用的信號(hào)類型。該查詢請(qǐng)求中,攜帶的查詢條件的列字段為"UserID"字段,字段值為"13910001000",查詢結(jié)果列字段為"SignalType"字段。根據(jù)本發(fā)明提供的上述流程,客戶端先向主服務(wù)器發(fā)起查詢請(qǐng)求,主服務(wù)器將各分片服務(wù)器信息返回給客戶端;客戶端再分別向各分片服務(wù)器發(fā)起查詢,當(dāng)有多個(gè)分片服務(wù)器時(shí),客戶端并行地分別向每個(gè)分片服務(wù)器發(fā)起查詢請(qǐng)求,實(shí)現(xiàn)分布式查詢;每個(gè)分片服務(wù)器根據(jù)本地存儲(chǔ)的分片數(shù)據(jù),查詢出滿足查詢條件的結(jié)果值后返回給客戶端,客戶端接收各分片服務(wù)器返回的查詢結(jié)果,即得到最終的查詢數(shù)據(jù)。具體地,分片服務(wù)器接收到上述查詢請(qǐng)求后,在本地存儲(chǔ)的列字段的索引目錄中匹配出與查詢條件的列字段"UserID"字段對(duì)應(yīng)的列索引文件,S卩如表六所示,分片服務(wù)器根據(jù)匹配出的列索引文件,獲取UserID字段值為"13910001000"對(duì)應(yīng)Row字段值為"1、3、4";得到Row字段值后,再采用現(xiàn)有技術(shù)中分布式列存儲(chǔ)數(shù)據(jù)庫的查詢方式,得到查詢結(jié)果;即再根據(jù)本次查詢結(jié)果對(duì)應(yīng)的列字段("SignalType"字段)的Index文件和Data文件,即可獲得滿足查詢要求的對(duì)應(yīng)SignalType字段值。當(dāng)查詢請(qǐng)求中攜帶有多個(gè)查詢條件時(shí),分片服務(wù)器分別獲取每個(gè)查詢條件對(duì)應(yīng)的Row字段值,再根據(jù)各查詢條件之間的邏輯關(guān)系(邏輯"或",邏輯"與"或其組合),確定出滿足全部查詢條件的最終Row字段值,再根據(jù)確定出的最終Row字段值,查詢得到滿足查詢條件的結(jié)果值返回給客戶端。采用本發(fā)明提供的分布式列存儲(chǔ)數(shù)據(jù)庫查詢方法,客戶端可以并行地同時(shí)向各分片服務(wù)器發(fā)起查詢請(qǐng)求,使得對(duì)數(shù)據(jù)的多條件查詢處理在各分片服務(wù)器同時(shí)進(jìn)行,從而實(shí)現(xiàn)了快速高效的查詢。而如果不采用分布式查詢方式,由主服務(wù)器進(jìn)行集中式的多條件查詢處理,當(dāng)進(jìn)行海量數(shù)據(jù)查詢時(shí),會(huì)出現(xiàn)海量數(shù)據(jù)單節(jié)點(diǎn)無法處理的情況。其次,采用本發(fā)明提供的分布式列存儲(chǔ)數(shù)據(jù)庫查詢方法,分片服務(wù)器直接在本地進(jìn)行數(shù)據(jù)查詢處理,即各分片服務(wù)器只需處理本地存儲(chǔ)的數(shù)據(jù)就能獲得查詢結(jié)果,沒有網(wǎng)絡(luò)交互,減少了網(wǎng)絡(luò)的開銷,進(jìn)一步提高了查詢速度及效率?;谕话l(fā)明構(gòu)思,根據(jù)本發(fā)明上述實(shí)施例提供的分布式列存儲(chǔ)數(shù)據(jù)庫索引建立方法,本發(fā)明還提供一種分布式列存儲(chǔ)數(shù)據(jù)庫索引建立裝置,其結(jié)構(gòu)示意圖如圖5所示,包括獲取單元71,用于獲取分布式列存儲(chǔ)數(shù)據(jù)庫中的列字段;生成單元72,用于生成以獲取單元71獲取的列字段作為關(guān)鍵字的列索引文件,在該列索引文件中包含列字段在分布式列存儲(chǔ)數(shù)據(jù)庫中的值與相對(duì)應(yīng)的Row字段值的映射關(guān)系;存儲(chǔ)單元73,用于存儲(chǔ)生成單元72生成的列索引文件到分布式列存儲(chǔ)數(shù)據(jù)庫中與該列字段對(duì)應(yīng)的索引目錄下。其中,生成單元72的內(nèi)部結(jié)構(gòu)如圖6所示,可以進(jìn)一步包括獲取子單元721,用于獲取列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值;匹配子單元722,用于在分布式列存儲(chǔ)數(shù)據(jù)庫中匹配出與列字段的值相對(duì)應(yīng)的Row字段值;生成子單元723,用于建立起列字段的值與相對(duì)應(yīng)的Row字段的值之間的映射關(guān)系,生成列索引文件。在實(shí)際應(yīng)用中,本發(fā)明提供的分布式列存儲(chǔ)數(shù)據(jù)庫索引建立裝置可以是軟件模塊,嵌入到存儲(chǔ)分布式列存儲(chǔ)數(shù)據(jù)庫的分片數(shù)據(jù)的分片服務(wù)器中。基于同一發(fā)明構(gòu)思,本發(fā)明再提供一種分布式列存儲(chǔ)數(shù)據(jù)庫系統(tǒng),其結(jié)構(gòu)示意圖如圖7所示,包括主服務(wù)器和分片服務(wù)器,其中所述主服務(wù)器包括第一存儲(chǔ)單元81,用于存儲(chǔ)分布式列存儲(chǔ)數(shù)據(jù)庫的Row字段值與分片服務(wù)器的映射關(guān)系;以及查詢受理單元82,用于接收客戶端的查詢請(qǐng)求,根據(jù)第一存儲(chǔ)單元81存儲(chǔ)的所述映射關(guān)系向客戶端返回分片服務(wù)器信息;所述分片服務(wù)器包括列索引文件生成單元91,用于獲取分布式列存儲(chǔ)數(shù)據(jù)庫中的列字段,生成以列字段作為關(guān)鍵字的列索引文件,在該列索引文件中包含列字段在分布式列存儲(chǔ)數(shù)據(jù)庫中的值與相對(duì)應(yīng)的Row字段值的映射關(guān)系,并存儲(chǔ)生成的列索引文件到分布式列存儲(chǔ)數(shù)據(jù)庫中與該列字段對(duì)應(yīng)的索引目錄下;第二存儲(chǔ)單元92,用于存儲(chǔ)分配的分片數(shù)據(jù)中的列字段對(duì)應(yīng)的數(shù)據(jù)文件、以Row字段為關(guān)鍵字的索引文件和列字段的列索引文件;分析單元93,用于接收客戶端發(fā)送的查詢請(qǐng)求,分析所述查詢請(qǐng)求中攜帶的查詢結(jié)果的列字段、查詢條件的列字段及字段值信息;匹配單元94,用于根據(jù)查詢請(qǐng)求中攜帶的查詢條件的列字段在第二存儲(chǔ)單元92中匹配出對(duì)應(yīng)的列索引文件,并根據(jù)匹配出的列索引文件以及字段值信息,獲取與查詢條件列字段的字段值對(duì)應(yīng)Row字段值;結(jié)果查詢單元95,用于用獲取的Row字段值查詢所述查詢結(jié)果的列字段對(duì)應(yīng)的索引文件和數(shù)據(jù)文件,得到滿足查詢條件的查詢結(jié)果值;結(jié)果返回單元96,用于向發(fā)起查詢請(qǐng)求的所述客戶端返回查詢結(jié)果值。主服務(wù)器用于存儲(chǔ)分布式列存儲(chǔ)數(shù)據(jù)庫的Row字段值與分片服務(wù)器的映射關(guān)系;在分片服務(wù)器中,除了存儲(chǔ)分配的分片數(shù)據(jù)中的列字段對(duì)應(yīng)的Data文件、以Row字段為關(guān)鍵字的Index文件外,還存儲(chǔ)該列字段的ColIndex文件;該ColIndex文件和Data文件以及Index文件一起保存在列字段對(duì)應(yīng)的索引目錄下。所述列索引文件,采用本發(fā)明上述實(shí)施例提供的方法建立,在其中包含列字段在分布式列存儲(chǔ)數(shù)據(jù)庫中的值與相對(duì)應(yīng)的Row字段值的映射關(guān)系。如前所述,在主服務(wù)器中可以存儲(chǔ)有第一級(jí)索引目錄,在第一級(jí)索引目錄中包含Row字段值與分片服務(wù)器的映射關(guān)系;在分片服務(wù)器中可以存儲(chǔ)有第二級(jí)索引目錄和第三級(jí)索引目錄,在第二級(jí)索引目錄中包含列字段與列索引文件的映射關(guān)系;在第三級(jí)索引目錄下,存儲(chǔ)列索引文件對(duì)應(yīng)列字段的Data文件、Index文件和本發(fā)明建立的ColIndex文件。本發(fā)明提供的分布式列存儲(chǔ)數(shù)據(jù)庫系統(tǒng)中,分片服務(wù)器可以是一個(gè)或多個(gè)。綜上所述,本發(fā)明通過獲取分布式列存儲(chǔ)數(shù)據(jù)庫中除Row字段外的列字段,生成以列字段作為關(guān)鍵字的列索引文件,在該列索引文件中包含該列字段在分布式列存儲(chǔ)數(shù)據(jù)庫中的值與相對(duì)應(yīng)的Row字段值的映射關(guān)系;并將生成的列索引文件存儲(chǔ)到與列字段對(duì)應(yīng)的索引目錄下。從而使得客戶端可以向分布式列存儲(chǔ)數(shù)據(jù)庫的主服務(wù)器發(fā)起攜帶查詢結(jié)果的列字段、查詢條件的列字段及字段值信息的查詢請(qǐng)求,通過匹配出與查詢條件的列字段對(duì)應(yīng)的列索引文件,獲取對(duì)應(yīng)Row字段值,再利用現(xiàn)有技術(shù)的查詢方式根據(jù)Row字段值獲得查詢結(jié)果,實(shí)現(xiàn)了在分布式列存儲(chǔ)數(shù)據(jù)庫中采用非Row字段的其余列字段進(jìn)行索引查詢,極大地滿足用戶的使用需求。采用本發(fā)明提供的分布式列存儲(chǔ)數(shù)據(jù)庫查詢方法,由客戶端并行地同時(shí)向各分片服務(wù)器發(fā)起查詢請(qǐng)求,使得對(duì)數(shù)據(jù)的多條件查詢處理在各分片服務(wù)器同時(shí)進(jìn)行,從而實(shí)現(xiàn)了快速高效的查詢。而如果不采用本發(fā)明提供的分布式列存儲(chǔ)數(shù)據(jù)庫查詢方式,而采用現(xiàn)有數(shù)據(jù)庫常用的索引方法,即在主服務(wù)器中建立一個(gè)索引表,進(jìn)行集中式的多條件查詢處理,在索引表中存儲(chǔ)列字段中列數(shù)據(jù)到其存儲(chǔ)位置的映射,這種常規(guī)索引方法在處理所有的條件數(shù)據(jù)判斷時(shí),主服務(wù)器極有可能內(nèi)存溢出,導(dǎo)致無法處理;且在獲取數(shù)據(jù)的存儲(chǔ)位置時(shí),需要經(jīng)過三次索引定位,增加網(wǎng)絡(luò)開銷。其次,采用本發(fā)明提供的分布式列存儲(chǔ)數(shù)據(jù)庫查詢方法,分片服務(wù)器直接在本地進(jìn)行數(shù)據(jù)查詢處理,即各分片服務(wù)器只需處理本地存儲(chǔ)的數(shù)據(jù)就能獲得查詢結(jié)果,沒有網(wǎng)絡(luò)交互,減少了網(wǎng)絡(luò)的開銷,進(jìn)一步提高了查詢速度及效率。再次,采用本發(fā)明提供的分布式列存儲(chǔ)數(shù)據(jù)庫查詢方法,每次查詢是針對(duì)列索引文件進(jìn)行的,相對(duì)于采用遍歷方式查詢所需要的時(shí)間復(fù)雜度N而言,其時(shí)間復(fù)雜度僅為log2N。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。權(quán)利要求一種分布式列存儲(chǔ)數(shù)據(jù)庫索引建立方法,其特征在于,包括獲取分布式列存儲(chǔ)數(shù)據(jù)庫中的列字段;生成以所述列字段作為關(guān)鍵字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值與對(duì)應(yīng)的Row字段值的映射關(guān)系;存儲(chǔ)所述列索引文件到所述分布式列存儲(chǔ)數(shù)據(jù)庫中與所述列字段對(duì)應(yīng)的索引目錄下。2.如權(quán)利要求1所述的方法,其特征在于,在所述分布式列存儲(chǔ)數(shù)據(jù)庫的主服務(wù)器中,存儲(chǔ)Row字段值與所述分布式列存儲(chǔ)數(shù)據(jù)庫的分片服務(wù)器的映射關(guān)系;在所述分片服務(wù)器中,存儲(chǔ)分配的分片數(shù)據(jù)中所述列字段對(duì)應(yīng)的數(shù)據(jù)文件、以Row字段為關(guān)鍵字的索引文件和生成的對(duì)應(yīng)列索引文件。3.如權(quán)利要求2所述的方法,其特征在于,所述分布式列存儲(chǔ)數(shù)據(jù)庫采用三級(jí)索引目錄結(jié)構(gòu),具體包括在所述主服務(wù)器中存儲(chǔ)第一級(jí)索引目錄,在所述第一級(jí)索引目錄中包含所述Row字段值與所述分片服務(wù)器的映射關(guān)系;在所述分片服務(wù)器中存儲(chǔ)第二級(jí)索引目錄和第三級(jí)索引目錄,在所述第二級(jí)索引目錄中包含所述列字段與列存儲(chǔ)文件的映射關(guān)系;在所述第三級(jí)索引目錄中包含所述列存儲(chǔ)文件對(duì)應(yīng)列字段的所述數(shù)據(jù)文件、索引文件和列索引文件。4.如權(quán)利要求3所述的方法,其特征在于,當(dāng)一個(gè)所述分片服務(wù)器中存儲(chǔ)一片或以上的分片數(shù)據(jù)時(shí),對(duì)每片分片數(shù)據(jù)分別建立所述第二級(jí)索引目錄和第三級(jí)索引目錄。5.如權(quán)利要求1-4任一所述的方法,其特征在于,當(dāng)所述分布式列存儲(chǔ)數(shù)據(jù)庫中增加數(shù)據(jù)、刪除數(shù)據(jù)或修改數(shù)據(jù)后,重新生成所述列索引文件或修改所述列索引文件中的對(duì)應(yīng)數(shù)據(jù)。6.—種分布式列存儲(chǔ)數(shù)據(jù)庫查詢方法,其特征在于,包括客戶端向分布式列存儲(chǔ)數(shù)據(jù)庫的主服務(wù)器發(fā)起查詢請(qǐng)求;所述主服務(wù)器根據(jù)本地存儲(chǔ)的Row字段值與所述分布式列存儲(chǔ)數(shù)據(jù)庫的分片服務(wù)器的映射關(guān)系,向所述客戶端返回分片服務(wù)器信息;所述客戶端向所述分片服務(wù)器發(fā)起查詢請(qǐng)求,在該查詢請(qǐng)求中攜帶查詢結(jié)果的列字段、查詢條件的列字段及字段值信息;所述分片服務(wù)器根據(jù)本地存儲(chǔ)的列字段的索引目錄,匹配出與所述查詢條件的列字段對(duì)應(yīng)的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值與對(duì)應(yīng)的Row字段值的映射關(guān)系;所述分片服務(wù)器根據(jù)匹配出的所述列索引文件及所述字段值信息獲取對(duì)應(yīng)Row字段值,并根據(jù)獲取的Row字段值查詢與所述查詢結(jié)果的列字段對(duì)應(yīng)的索引文件和數(shù)據(jù)文件,得到滿足查詢條件結(jié)果值,返回給所述客戶端。7.如權(quán)利要求6所述的方法,其特征在于,當(dāng)所述主服務(wù)器返回的分片服務(wù)器信息中包含多個(gè)分片服務(wù)器時(shí),所述客戶端并行地分別向每個(gè)分片服務(wù)器發(fā)起所述查詢請(qǐng)求。8.如權(quán)利要求6或7所述的方法,其特征在于,當(dāng)發(fā)送給所述分片服務(wù)器的所述查詢請(qǐng)求中包含一個(gè)以上的查詢條件時(shí),所述分片服務(wù)器分別獲取每個(gè)查詢條件對(duì)應(yīng)的Row字段值,再根據(jù)各查詢條件之間的邏輯關(guān)系,確定出滿足全部查詢條件的最終Row字段值,并根據(jù)所述最終Row字段值查詢所述查詢結(jié)果的列字段對(duì)應(yīng)的數(shù)據(jù)文件,得到滿足查詢條件結(jié)果值,返回給所述客戶端。9.一種分布式列存儲(chǔ)數(shù)據(jù)庫索引建立裝置,其特征在于,包括獲取單元,用于獲取分布式列存儲(chǔ)數(shù)據(jù)庫中的列字段;生成單元,用于生成以所述獲取單元獲取的所述列字段作為關(guān)鍵字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值與對(duì)應(yīng)的Row字段值的映射關(guān)系;存儲(chǔ)單元,用于存儲(chǔ)所述列索引文件到所述分布式列存儲(chǔ)數(shù)據(jù)庫中與所述列字段對(duì)應(yīng)的索引目錄下。10.如權(quán)利要求9所述的裝置,其特征在于,所述生成單元包括獲取子單元,用于獲取所述列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值;匹配子單元,用于在所述分布式列存儲(chǔ)數(shù)據(jù)庫中匹配出與所述列字段的值對(duì)應(yīng)的Row字段值;生成子單元,用于建立起所述列字段的值與對(duì)應(yīng)的Row字段的值之間的映射關(guān)系,生成所述列索引文件。11.如權(quán)利要求9或IO所述的裝置,其特征在于,所述裝置為軟件模塊,嵌入到存儲(chǔ)所述分布式列存儲(chǔ)數(shù)據(jù)庫的分片數(shù)據(jù)的分片服務(wù)器中。12.—種分布式列存儲(chǔ)數(shù)據(jù)庫系統(tǒng),包括主服務(wù)器和分片服務(wù)器,其特征在于所述主服務(wù)器包括第一存儲(chǔ)單元,用于存儲(chǔ)分布式列存儲(chǔ)數(shù)據(jù)庫的Row字段值與分片服務(wù)器的映射關(guān)系;以及查詢受理單元,用于接收客戶端的查詢請(qǐng)求,根據(jù)所述第一存儲(chǔ)單元存儲(chǔ)的所述映射關(guān)系向客戶端返回分片服務(wù)器信息;所述分片服務(wù)器包括列索引文件生成單元,用于獲取分布式列存儲(chǔ)數(shù)據(jù)庫中的列字段,生成以所述列字段作為關(guān)鍵字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值與對(duì)應(yīng)的Row字段值的映射關(guān)系,并存儲(chǔ)所述列索引文件到所述分布式列存儲(chǔ)數(shù)據(jù)庫中與所述列字段對(duì)應(yīng)的索引目錄下;第二存儲(chǔ)單元,用于存儲(chǔ)分配的分片數(shù)據(jù)中的列字段對(duì)應(yīng)的數(shù)據(jù)文件、以Row字段為關(guān)鍵字的索引文件和所述列字段的列索引文件;分析單元,用于接收客戶端發(fā)送的查詢請(qǐng)求,分析所述查詢請(qǐng)求中攜帶的查詢結(jié)果的列字段、查詢條件的列字段及字段值信息;匹配單元,用于根據(jù)所述查詢條件的列字段在所述第二存儲(chǔ)單元中匹配出對(duì)應(yīng)的列索引文件,并根據(jù)匹配出的所述列索引文件及所述字段值信息,獲取對(duì)應(yīng)Row字段值;結(jié)果查詢單元,用于用獲取的Row字段值查詢所述查詢結(jié)果的列字段對(duì)應(yīng)的索引文件和數(shù)據(jù)文件,得到滿足查詢條件的查詢結(jié)果值;結(jié)果返回單元,用于向發(fā)起查詢請(qǐng)求的所述客戶端返回所述查詢結(jié)果值。13.如權(quán)利要求12所述的系統(tǒng),其特征在于,在所述主服務(wù)器的第一存儲(chǔ)單元中存儲(chǔ)有第一級(jí)索引目錄,在所述第一級(jí)索引目錄中包含所述Row字段值與分片服務(wù)器的映射關(guān)系;在所述分片服務(wù)器的第二存儲(chǔ)單元中存儲(chǔ)有第二級(jí)索引目錄和第三級(jí)索引目錄,在所述第二級(jí)索引目錄中包含所述列字段與列存儲(chǔ)文件的映射關(guān)系;在所述第三級(jí)索引目錄中包含所述列存儲(chǔ)文件對(duì)應(yīng)列字段的所述數(shù)據(jù)文件、索引文件和列索引文件。14.如權(quán)利要求12或13所述的系統(tǒng),其特征在于,所述分片服務(wù)器為多個(gè)。全文摘要本發(fā)明公開了一種分布式列存儲(chǔ)數(shù)據(jù)庫索引建立方法、查詢方法及裝置與系統(tǒng)。該分布式列存儲(chǔ)數(shù)據(jù)庫索引建立方法包括獲取分布式列存儲(chǔ)數(shù)據(jù)庫中的列字段,生成以所述列字段作為關(guān)鍵字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存儲(chǔ)數(shù)據(jù)庫中的值與對(duì)應(yīng)的Row字段值的映射關(guān)系;存儲(chǔ)所述列索引文件到所述分布式列存儲(chǔ)數(shù)據(jù)庫中與所述列字段對(duì)應(yīng)的索引目錄下??蛻舳税l(fā)起以列字段作為查詢條件和查詢結(jié)果的查詢請(qǐng)求時(shí),通過匹配出相應(yīng)的列索引文件,得到對(duì)應(yīng)的Row字段值,從而實(shí)現(xiàn)索引查詢。采用本發(fā)明能在現(xiàn)有分布式列存儲(chǔ)數(shù)據(jù)庫中,實(shí)現(xiàn)除Row字段外的其它列字段快速查詢。文檔編號(hào)G06F17/30GK101727465SQ20081022548公開日2010年6月9日申請(qǐng)日期2008年11月3日優(yōu)先權(quán)日2008年11月3日發(fā)明者徐萌,羅治國,趙鵬,郭磊濤,錢嶺申請(qǐng)人:中國移動(dòng)通信集團(tuán)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
颍上县| 仁寿县| 青岛市| 浏阳市| 巨鹿县| 观塘区| 祁连县| 化德县| 乾安县| 雷州市| 宁武县| 东莞市| 莱西市| 革吉县| 水富县| 阜城县| 太康县| 新宁县| 荆门市| 浑源县| 从化市| 华安县| 绥化市| 定远县| 衡阳市| 兰坪| 香格里拉县| 伊金霍洛旗| 大安市| 宜昌市| 巫溪县| 盖州市| 福清市| 民县| 墨竹工卡县| 张家港市| 武穴市| 大城县| 商南县| 万盛区| 平乡县|