一種基于倒排索引的列存儲(chǔ)數(shù)據(jù)庫(kù)的查詢(xún)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫(kù)查詢(xún)技術(shù)領(lǐng)域,特別是一種基于倒排索引的列存儲(chǔ)數(shù)據(jù)庫(kù)的查 詢(xún)方法。
【背景技術(shù)】
[0002] 隨著大數(shù)據(jù)的興起,各種NoSQL數(shù)據(jù)庫(kù)蓬勃發(fā)展,其主要包括鍵值存儲(chǔ)數(shù)據(jù)庫(kù)、列 存儲(chǔ)數(shù)據(jù)庫(kù)、文檔型數(shù)據(jù)庫(kù)、圖形數(shù)據(jù)庫(kù)四大類(lèi)。其中以列存儲(chǔ)類(lèi)型的發(fā)展最為迅速,對(duì)于 列存儲(chǔ)數(shù)據(jù)庫(kù)來(lái)說(shuō),其特點(diǎn)是一個(gè)鍵指向多個(gè)列族,列族本身也有一定的層級(jí)結(jié)構(gòu),比如 HBase、Cassandra等,從而實(shí)現(xiàn)對(duì)復(fù)雜數(shù)據(jù)類(lèi)型的存儲(chǔ)。列存儲(chǔ)數(shù)據(jù)庫(kù)選型豐富,但是其有 著天然的弊端,即缺少對(duì)于列族的條件查詢(xún)支持,僅支持基于鍵的單向查詢(xún)。
[0003] 中國(guó)發(fā)明專(zhuān)利CN 101404013A公開(kāi)了一種數(shù)據(jù)庫(kù)大數(shù)據(jù)量表存儲(chǔ)和查詢(xún)方法,通 過(guò)數(shù)據(jù)庫(kù)物理設(shè)計(jì)和邏輯設(shè)計(jì)來(lái)實(shí)現(xiàn)海量數(shù)據(jù)表的存儲(chǔ)"分區(qū)",而不依賴(lài)于數(shù)據(jù)庫(kù)本身是 否具備分區(qū)技術(shù);該方法根據(jù)日結(jié)賬表所特有的一些特性設(shè)計(jì)合理的規(guī)則,根據(jù)規(guī)則來(lái)對(duì) 表定義進(jìn)行"分區(qū)"設(shè)計(jì),使記錄在想數(shù)據(jù)庫(kù)插入過(guò)程中自動(dòng)"分發(fā)"設(shè)計(jì),使記錄在向數(shù)據(jù) 庫(kù)插入過(guò)程中自動(dòng)"分發(fā)"到不同存儲(chǔ)"分區(qū)"中;"分區(qū)"之后的日結(jié)賬表根據(jù)規(guī)則設(shè)計(jì)來(lái)創(chuàng) 建聯(lián)合視圖,通過(guò)聯(lián)合視圖提供查詢(xún)功能,這樣實(shí)現(xiàn)的日結(jié)賬表在數(shù)據(jù)查詢(xún)上會(huì)有明顯的 優(yōu)勢(shì),而對(duì)于表空間存在大小限制的數(shù)據(jù)庫(kù),也不會(huì)因?yàn)槿战Y(jié)賬表數(shù)據(jù)量龐大而導(dǎo)致數(shù)據(jù) 庫(kù)表空間達(dá)到上限而無(wú)法解決。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明需要解決的技術(shù)問(wèn)題提供一種基于倒排索引的列存儲(chǔ)數(shù)據(jù)庫(kù)的查詢(xún)方法。
[0005] 為解決上述的技術(shù)問(wèn)題,本發(fā)明的一種基于倒排索引的列存儲(chǔ)數(shù)據(jù)庫(kù)的查詢(xún)方 法,包括以下步驟,
[0006]步驟S101:索引方式定義,將需要進(jìn)行索引的列的值轉(zhuǎn)換為索引表的鍵,并將其對(duì) 應(yīng)的數(shù)據(jù)的鍵作為索引表的列,實(shí)現(xiàn)數(shù)據(jù)映射關(guān)系的倒排;
[0007] 步驟S102:條件查詢(xún)內(nèi)容解析,當(dāng)進(jìn)行條件查詢(xún)時(shí),解析出索引列族中的原數(shù)據(jù)表 的鍵;
[0008] 步驟S103:條件查詢(xún),根據(jù)步驟S102解析的鍵,在原數(shù)據(jù)表中,根據(jù)查詢(xún)出的鍵獲 取對(duì)應(yīng)的內(nèi)容,從而實(shí)現(xiàn)列存儲(chǔ)數(shù)據(jù)庫(kù)的條件查詢(xún)。
[0009] 進(jìn)一步的,所述步驟S102具體包括在進(jìn)行條件查詢(xún)時(shí),將條件的值轉(zhuǎn)換為查詢(xún)內(nèi) 容,在索引表中查詢(xún)對(duì)應(yīng)的鍵,獲取其列族的相關(guān)內(nèi)容,解析出索引列族中的原數(shù)據(jù)表的 鍵。
[0010] 采用上述方法后,本發(fā)明基于列存儲(chǔ)數(shù)據(jù)庫(kù)自身的對(duì)鍵的索引支持,通過(guò)反轉(zhuǎn)索 引的方式,將原有的鍵和列族的對(duì)應(yīng)關(guān)系,轉(zhuǎn)換為索引列和數(shù)據(jù)鍵的對(duì)應(yīng)關(guān)系,從而實(shí)現(xiàn)了 列存儲(chǔ)數(shù)據(jù)庫(kù)的條件查詢(xún),完善了列存儲(chǔ)數(shù)據(jù)庫(kù)的功能。
【附圖說(shuō)明】
[0011] 下面將結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
[0012] 圖1為本發(fā)明一種基于倒排索引的列存儲(chǔ)數(shù)據(jù)庫(kù)的查詢(xún)方法的流程圖。
【具體實(shí)施方式】
[0013] 如圖1所示,本發(fā)明的一種基于倒排索引的列存儲(chǔ)數(shù)據(jù)庫(kù)的查詢(xún)方法,包括以下步 驟,
[0014] 步驟S101:索引方式定義,將需要進(jìn)行索引的列的值轉(zhuǎn)換為索引表的鍵,并將其對(duì) 應(yīng)的數(shù)據(jù)的鍵作為索引表的列,實(shí)現(xiàn)數(shù)據(jù)映射關(guān)系的倒排;
[0015] 步驟S102:條件查詢(xún)內(nèi)容解析,當(dāng)進(jìn)行條件查詢(xún)時(shí),解析出索引列族中的原數(shù)據(jù)表 的鍵;
[0016] 步驟S103:條件查詢(xún),根據(jù)步驟S102解析的鍵,在原數(shù)據(jù)表中,根據(jù)查詢(xún)出的鍵獲 取對(duì)應(yīng)的內(nèi)容,從而實(shí)現(xiàn)列存儲(chǔ)數(shù)據(jù)庫(kù)的條件查詢(xún)。
[0017] 進(jìn)一步的,所述步驟S102具體包括在進(jìn)行條件查詢(xún)時(shí),將條件的值轉(zhuǎn)換為查詢(xún)內(nèi) 容,在索引表中查詢(xún)對(duì)應(yīng)的鍵,獲取其列族的相關(guān)內(nèi)容,解析出索引列族中的原數(shù)據(jù)表的 鍵。
[0018] 假定有原數(shù)據(jù)表內(nèi)容如下:
[0019] 表1:原數(shù)據(jù)表
[0020] LUUA」 列仔儲(chǔ)數(shù)據(jù)洋円置J對(duì)t璉的系51
,所以酡很力俚的對(duì)璉進(jìn)仃宜劉,怛定尤沄對(duì) 列族進(jìn)行查詢(xún),因此需要對(duì)粗要查詢(xún)的列族進(jìn)行索引處理,從而生成如下的倒排索引表。
[0022] 表2:倒排索引表 「nrml
L0024」當(dāng)需要對(duì)被索引列族進(jìn)行查詢(xún)時(shí),首先查詢(xún)倒排索引表,獲取數(shù)據(jù)表中對(duì)應(yīng)的鍵, 然后根據(jù)鍵去查詢(xún)實(shí)際的數(shù)據(jù)。
[0025]雖然以上描述了本發(fā)明的【具體實(shí)施方式】,但是本領(lǐng)域熟練技術(shù)人員應(yīng)當(dāng)理解,這 些僅是舉例說(shuō)明,可以對(duì)本實(shí)施方式作出多種變更或修改,而不背離發(fā)明的原理和實(shí)質(zhì),本 發(fā)明的保護(hù)范圍僅由所附權(quán)利要求書(shū)限定。
【主權(quán)項(xiàng)】
1. 一種基于倒排索引的列存儲(chǔ)數(shù)據(jù)庫(kù)的查詢(xún)方法,其特征在于,包括以下步驟, 步驟S101:索引方式定義,將需要進(jìn)行索引的列的值轉(zhuǎn)換為索引表的鍵,并將其對(duì)應(yīng)的 數(shù)據(jù)的鍵作為索引表的列,實(shí)現(xiàn)數(shù)據(jù)映射關(guān)系的倒排; 步驟S102:條件查詢(xún)內(nèi)容解析,當(dāng)進(jìn)行條件查詢(xún)時(shí),解析出索引列族中的原數(shù)據(jù)表的 鍵; 步驟S103:條件查詢(xún),根據(jù)步驟S102解析的鍵,在原數(shù)據(jù)表中,根據(jù)查詢(xún)出的鍵獲取對(duì) 應(yīng)的內(nèi)容,從而實(shí)現(xiàn)列存儲(chǔ)數(shù)據(jù)庫(kù)的條件查詢(xún)。2. 按照權(quán)利要求1所述的一種基于倒排索引的列存儲(chǔ)數(shù)據(jù)庫(kù)的查詢(xún)方法,其特征在于: 所述步驟S102具體包括在進(jìn)行條件查詢(xún)時(shí),將條件的值轉(zhuǎn)換為查詢(xún)內(nèi)容,在索引表中查詢(xún) 對(duì)應(yīng)的鍵,獲取其列族的相關(guān)內(nèi)容,解析出索引列族中的原數(shù)據(jù)表的鍵。
【專(zhuān)利摘要】本發(fā)明涉及數(shù)據(jù)庫(kù)查詢(xún)技術(shù)領(lǐng)域,特別是一種基于倒排索引的列存儲(chǔ)數(shù)據(jù)庫(kù)的查詢(xún)方法,包括以下步驟,步驟S101:索引方式定義,將需要進(jìn)行索引的列的值轉(zhuǎn)換為索引表的鍵,并將其對(duì)應(yīng)的數(shù)據(jù)的鍵作為索引表的列,實(shí)現(xiàn)數(shù)據(jù)映射關(guān)系的倒排;步驟S102:條件查詢(xún)內(nèi)容解析,當(dāng)進(jìn)行條件查詢(xún)時(shí),解析出索引列族中的原數(shù)據(jù)表的鍵;步驟S103:條件查詢(xún),根據(jù)步驟S102解析的鍵,在原數(shù)據(jù)表中,根據(jù)查詢(xún)出的鍵獲取對(duì)應(yīng)的內(nèi)容,從而實(shí)現(xiàn)列存儲(chǔ)數(shù)據(jù)庫(kù)的條件查詢(xún)。采用上述方法后,本發(fā)明通過(guò)反轉(zhuǎn)索引的方式,將原有的鍵和列族的對(duì)應(yīng)關(guān)系,轉(zhuǎn)換為索引列和數(shù)據(jù)鍵的對(duì)應(yīng)關(guān)系,從而實(shí)現(xiàn)了列存儲(chǔ)數(shù)據(jù)庫(kù)的條件查詢(xún),完善了列存儲(chǔ)數(shù)據(jù)庫(kù)的功能。
【IPC分類(lèi)】G06F17/30
【公開(kāi)號(hào)】CN105653628
【申請(qǐng)?zhí)枴?br>【發(fā)明人】覃璐
【申請(qǐng)人】湖南蟻坊軟件有限公司
【公開(kāi)日】2016年6月8日
【申請(qǐng)日】2015年12月28日