專利名稱:一種基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)查詢技術(shù)領(lǐng)域,具體涉及一種基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法和裝置。
背景技術(shù):
數(shù)據(jù)庫是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,傳統(tǒng)數(shù)據(jù)庫類型一般為關(guān)系型數(shù)據(jù)庫,如傳統(tǒng)SQL型數(shù)據(jù)庫。目前,隨著互聯(lián)網(wǎng)業(yè)務(wù)的發(fā)展,頻繁并發(fā)的訪問數(shù)據(jù)庫,進行數(shù)據(jù)的查詢的技術(shù)越來越受到人們重視?,F(xiàn)有技術(shù)中,一般采用鍵-值存儲形式創(chuàng)建非關(guān)系型數(shù)據(jù)庫,這種非關(guān)系型數(shù)據(jù)庫一般僅保存在內(nèi)存中,因此可稱為內(nèi)存數(shù)據(jù)庫。基于這種鍵-值的內(nèi)存數(shù)據(jù)庫進行數(shù)據(jù)查詢時,需要通過“鍵”來訪問其對應(yīng)“值”,從而查詢到用戶所需的目標(biāo)數(shù)據(jù)。例如,一條 “鍵-值”的數(shù)據(jù)條目為“身份證號、姓名、身高”,在該數(shù)據(jù)條目中,由于“身份證號”可以唯一標(biāo)識一條數(shù)據(jù)條目,所以“身份證號”可以是前述的“鍵”,該條數(shù)據(jù)條目中的“身份證號、姓名、身高”為“數(shù)據(jù)項”,其分別對應(yīng)的值即是前述的“值”。當(dāng)需要查詢某條個人信息(即“值”)時,只需要輸入此條信息的“鍵”(即是“身份證號”),該“鍵”用來唯一標(biāo)識此條信息的“值”,即可通過數(shù)據(jù)庫中記錄的“鍵”與“值”的對應(yīng)關(guān)系查詢到目標(biāo)數(shù)據(jù),即該“鍵”對應(yīng)的“身份證號、姓名、身高”的具體的值。但是,當(dāng)鍵-值存儲形式的數(shù)據(jù)庫需要存儲的數(shù)據(jù)量很大,數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系很復(fù)雜時,采用現(xiàn)有技術(shù)的方法,頻繁并發(fā)的訪問鍵-值存儲形式的數(shù)據(jù)庫進行數(shù)據(jù)的查詢,會由于數(shù)據(jù)搜索量大及數(shù)據(jù)的關(guān)聯(lián)關(guān)系復(fù)雜而使得對數(shù)據(jù)查詢的效率較低。
發(fā)明內(nèi)容
為了滿足對數(shù)據(jù)查詢高效率的要求,本發(fā)明提供了一種基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法和裝置。本發(fā)明提供了一種基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法,在所述數(shù)據(jù)庫中創(chuàng)建基于鍵-值的數(shù)據(jù)表,將所述數(shù)據(jù)表的至少一個數(shù)據(jù)項確定為所述數(shù)據(jù)表的索引項;將所述數(shù)據(jù)表中的索引項對應(yīng)的索引值作為節(jié)點,依照預(yù)設(shè)順序建立與所述索引項對應(yīng)的索引樹;所述方法包括根據(jù)接收到的用戶輸入的查詢索引項,確定目標(biāo)索引樹;根據(jù)用戶針對所述查詢索引項輸入的查詢索引值表達式,在所述確定的目標(biāo)索引樹中查詢目標(biāo)數(shù)據(jù),所述索引表達式表示一定范圍的索引值。優(yōu)選地,所述方法還包括在所述數(shù)據(jù)庫中添加任一數(shù)據(jù)條目后,根據(jù)所述數(shù)據(jù)條目的索引項對應(yīng)的索引值,按照所述預(yù)設(shè)順序在所述索引項對應(yīng)的索引樹上增加一個節(jié)點;在所述增加的節(jié)點上保存所述索引項對應(yīng)的索引值;更新增加節(jié)點后的索引樹。
優(yōu)選地,所述方法還包括在所述數(shù)據(jù)庫中刪除任一數(shù)據(jù)條目后,在所述數(shù)據(jù)條目的索引項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查找所述索引項的索引值對應(yīng)的節(jié)點;在所述索引項對應(yīng)的索引樹中,將所述節(jié)點刪除;更新刪除所述節(jié)點后的索引樹。優(yōu)選地,所述方法還包括在所述數(shù)據(jù)庫中修改任一數(shù)據(jù)條目后,在修改了所述數(shù)據(jù)條目中索引項對應(yīng)的索引值時,確定修改了索引值的索引項;在所述索引項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查找所述修改的索引值對應(yīng)的節(jié) 占.在所述索引項對應(yīng)的索引樹中,修改所述節(jié)點對應(yīng)的值;更新修改所述節(jié)點對應(yīng)的值后的索引樹。優(yōu)選地,所述根據(jù)用戶針對所述查詢索引項輸入的查詢索引值表達式,在所述確定的目標(biāo)索引樹中查詢目標(biāo)數(shù)據(jù),具體為,根據(jù)用戶輸入的查詢索引表達式,在利用相對地址查詢所述目標(biāo)索引樹后,查詢到目標(biāo)數(shù)據(jù),所述索引表達式為表示一定范圍的所述索引項對應(yīng)的索引值的表達式優(yōu)選地,所述數(shù)據(jù)庫中的任一數(shù)據(jù)項所占用內(nèi)存大小為可變的。優(yōu)選地,為所述數(shù)據(jù)庫中的任一數(shù)據(jù)項分配固定內(nèi)存,所述方法還包括創(chuàng)建所述數(shù)據(jù)表的內(nèi)存分配表,所述內(nèi)存分配表用于存儲任一數(shù)據(jù)項的相對于所述固定內(nèi)存的內(nèi)存剩余情況;依據(jù)所述內(nèi)存剩余情況回收所述數(shù)據(jù)項的剩余內(nèi)存。本發(fā)明還提供一種基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢裝置,所述裝置包括第一創(chuàng)建模塊,用于在所述數(shù)據(jù)庫中創(chuàng)建基于鍵-值的數(shù)據(jù)表;第一確定模塊,用于將所述建表模塊創(chuàng)建的數(shù)據(jù)表的至少一個數(shù)據(jù)項確定為所述數(shù)據(jù)表的索引項;第二創(chuàng)建模塊;用于將所述數(shù)據(jù)表中的索引項對應(yīng)的索引值作為節(jié)點,依照預(yù)設(shè)順序建立與所述索引項對應(yīng)的索引樹;第二確定模塊,用于根據(jù)接收到的用戶輸入的查詢索引項,確定目標(biāo)索引樹;第一查詢模塊,用于根據(jù)用戶針對所述查詢索引項輸入的查詢索引值表達式,在所述確定的目標(biāo)索引樹中查詢目標(biāo)數(shù)據(jù),所述索引表達式表示一定范圍的索引值。優(yōu)選地,所述裝置還包括增加模塊,用于在所述數(shù)據(jù)庫中添加任一數(shù)據(jù)條目后,根據(jù)所述數(shù)據(jù)條目的索引項對應(yīng)的索引值,按照所述預(yù)設(shè)順序在所述索引項對應(yīng)的索引樹上增加一個節(jié)點;第一保存模塊,用于在所述增加的節(jié)點上保存所述索引項對應(yīng)的索引值;第一更新模塊,用于更新增加節(jié)點后的索引樹。優(yōu)選地,所述裝置還包括第二查詢模塊,用于在所述數(shù)據(jù)庫中刪除任一數(shù)據(jù)條目后,在所述數(shù)據(jù)條目的索弓I項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查詢所述索引項的索引值對應(yīng)的節(jié)點;刪除模塊,用于在所述索引項對應(yīng)的索引樹中,將所述節(jié)點刪除;
第二更新模塊,用于更新刪除所述節(jié)點后的索引樹。優(yōu)選地,所述裝置還包括第三確定模塊,用于在所述數(shù)據(jù)庫中修改任一數(shù)據(jù)條目后,在修改了所述數(shù)據(jù)條目中索引項對應(yīng)的索引值時,確定修改了索引值的索引項;第三查詢模塊,用于在所述索引項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查找所述修改的索引值對應(yīng)的節(jié)點;
修改模塊,用于在所述索引項對應(yīng)的索引樹中,修改所述節(jié)點對應(yīng)的值;第三更新模塊,用于更新修改所述節(jié)點對應(yīng)的值后的索引樹。與現(xiàn)有技術(shù)相比,本發(fā)明預(yù)先將數(shù)據(jù)表中的至少一個數(shù)據(jù)項確定為數(shù)據(jù)表的索引項,并將各個索引項對應(yīng)的索引值分別按照預(yù)設(shè)的順序建立索引樹,用特定順序的索引樹對索引值進行存儲,便于數(shù)據(jù)的查詢。系統(tǒng)通過接收用戶輸入的索引項,確定輸入的索引項對應(yīng)的索引樹,在確定的索引樹中按照一定的順序?qū)δ繕?biāo)數(shù)據(jù)進行查詢。與現(xiàn)有技術(shù)相比,本方案使用索引按照預(yù)設(shè)順序進行數(shù)據(jù)查詢,使得數(shù)據(jù)查詢的效率得到很大的提高。
為了更清楚地說明本申請實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實施例一的基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法的流程圖;圖2為本發(fā)明實施例一的基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法的對數(shù)據(jù)庫中的數(shù)據(jù)進行添加的流程圖;圖3為本發(fā)明實施例一的基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法的對數(shù)據(jù)庫中的數(shù)據(jù)進行刪除的流程圖;圖4為本發(fā)明實施例一的基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法的對數(shù)據(jù)庫中的數(shù)據(jù)進行修改的流程圖;圖5為本發(fā)明實施例二的基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢裝置的結(jié)構(gòu)圖;圖6為本發(fā)明實施例二的基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢裝置中的對數(shù)據(jù)庫中的數(shù)據(jù)進行添加的裝置結(jié)構(gòu)圖;圖7為本發(fā)明實施例二的基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢裝置中的對數(shù)據(jù)庫中的數(shù)據(jù)進行刪除的裝置結(jié)構(gòu)圖;圖8為本發(fā)明實施例二的基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢裝置中的對數(shù)據(jù)庫中的數(shù)據(jù)進行修改的裝置結(jié)構(gòu)圖。
具體實施例方式實施例一、參考圖1,圖I為本發(fā)明提供的一種基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法實施例一的流程圖,本實施例具體可以包括步驟101、在所述數(shù)據(jù)庫中創(chuàng)建基于鍵-值的數(shù)據(jù)表。
本實施例中,在進行數(shù)據(jù)查詢之前,首先需要創(chuàng)建用于存儲數(shù)據(jù)的基于鍵-值的數(shù)據(jù)表,具體的,創(chuàng)建基于鍵-值的數(shù)據(jù)表的過程為現(xiàn)有技術(shù),所以在此不再贅述,同時在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表的方式很多,不同的創(chuàng)建方式不影響本實施例的施行,所以,所有通過創(chuàng)建數(shù)據(jù)表實現(xiàn)本實施例的步驟均屬于本發(fā)明保護范圍。實際操作中,基于鍵-值的數(shù)據(jù)表用于存儲數(shù)據(jù),其中每條數(shù)據(jù)占用的內(nèi)存可以是固定的,此時,需要為當(dāng)前數(shù)據(jù)表創(chuàng)建內(nèi)存分配表,該內(nèi)存分配表用于存儲每條數(shù)據(jù)項所占用的固定內(nèi)存的剩余情況,例如,當(dāng)每個數(shù)據(jù)表的數(shù)據(jù)項分配的固定內(nèi)存為10時,如果存在一條數(shù)據(jù)僅需要4的內(nèi)存,則剩余的6 (10-4)的內(nèi)存即被存儲于該內(nèi)存分配表中,便于后續(xù)回收再利用。同時,基于鍵-值的數(shù)據(jù)表存儲的每條數(shù)據(jù)占用的內(nèi)存也可以是可變的,即該數(shù)據(jù)需要多大的內(nèi)存時,系統(tǒng)就為其分配相應(yīng)的內(nèi)存空間,該方法可以避免產(chǎn)生內(nèi)存碎片,使系統(tǒng)資源利用率較高。
步驟102、將所述數(shù)據(jù)表的至少一個數(shù)據(jù)項確定為所述數(shù)據(jù)表的索引項。本實施例中,創(chuàng)建成功的數(shù)據(jù)表用于存儲數(shù)據(jù)條目,每條數(shù)據(jù)條目包括若干數(shù)據(jù)項,若干數(shù)據(jù)項中有至少一項索引項。例如存儲于數(shù)據(jù)表中的數(shù)據(jù)條目為“姓名-年齡-身高-體重”,即此數(shù)據(jù)條目包括“姓名、年齡、身高和體重”四個數(shù)據(jù)項,可以將年齡、身高和體重中的至少一項作為該數(shù)據(jù)表的索引項。具體的,確定索引項的標(biāo)準(zhǔn)可以是方便排序的數(shù)據(jù)項,也可以根據(jù)用戶需求確定索引項。實際操作中,有些數(shù)據(jù)表不具有索引項,即為簡單的基于鍵-值的數(shù)據(jù)表,對于此類數(shù)據(jù)表的數(shù)據(jù)查詢,可以依據(jù)現(xiàn)有技術(shù)的基于鍵-值的數(shù)據(jù)庫的數(shù)據(jù)查詢方法進行數(shù)據(jù)查詢,在此不再贅述。步驟103、將所述數(shù)據(jù)表中的索引項對應(yīng)的索引值作為節(jié)點,依照預(yù)設(shè)順序建立與所述索弓I項對應(yīng)的索引樹。本實施例中,在創(chuàng)建成功的數(shù)據(jù)表中確定索引項后,將索引項對應(yīng)的索引值按照預(yù)先設(shè)置的順序,建立該索引項對應(yīng)的索引樹,此時,該索引項對應(yīng)的索引值作為該索引樹的節(jié)點。創(chuàng)建的索引樹用于存儲預(yù)先確定的索引項對應(yīng)的索引值的順序關(guān)系。如將步驟102的數(shù)據(jù)條目中的“年齡”作為索引項,多條數(shù)據(jù)條目的索引值,即年齡值為“23、25、45、33”,同時預(yù)先設(shè)定的順序為從小到大的升序排列,此時,該年齡索引樹為23-25-33-45形式的二叉樹。具體的,預(yù)設(shè)順序可以是升序或者降序,也可以是按照首字母的順序排列。該預(yù)設(shè)順序的設(shè)置方式以及設(shè)置依舊不影響本實施例的實施。步驟104、根據(jù)接收到的用戶輸入的查詢索引項,確定目標(biāo)索引樹。本實施例中,用戶輸入用于查詢的索引項,確定該索引項對應(yīng)的索引樹,例如,用戶輸入“年齡”作為索引項,那么,根據(jù)該“年齡”索引項就可以確定用戶即將根據(jù)“年齡”索引項進行數(shù)據(jù)查詢,進而確定“年齡”索引項對應(yīng)的索引樹作為目標(biāo)索引樹。實際操作中,可以以向用戶提供索引項選擇界面的方式,讓用戶選擇所要依據(jù)查詢的索引項,例如該數(shù)據(jù)表中存在“年齡”、“身高”和“體重”三個索引項,那么索引選擇界面會提供三個可選索引項,即“年齡”、“身高”和“體重”,用戶只需要選擇其一作為查詢索引項即可,進而確定選擇的索引項對應(yīng)的索引樹為目標(biāo)索引樹。步驟105、根據(jù)用戶針對所述查詢索引項輸入的查詢索引值表達式,在所述確定的目標(biāo)索引樹中查詢目標(biāo)數(shù)據(jù),所述索引表達式表示一定范圍的索引值。本實施例中,在根據(jù)用戶輸入的查詢索引項確定了索引樹之后,用戶針對查詢索引項會輸入查詢索引值表達式,進而根據(jù)用戶輸入的查詢索引值表達式確定用戶查詢目標(biāo)數(shù)據(jù),其中,查詢表達式表示一定范圍的索引值。例如,用戶在確定了用于查詢的年齡索引樹后,進而確定想要查詢的數(shù)據(jù)為“大于33的年齡的數(shù)據(jù)條目”,所以,“大于33”即為用戶輸入的查詢索引值表達式,可以根據(jù)用戶輸入的該“大于33”的查詢索引值表達式在“年齡”索引樹中確定所有大于33歲的節(jié)點作為目標(biāo)數(shù)據(jù)。實際操作中,數(shù)據(jù)庫是利用相對地址進行目標(biāo)數(shù)據(jù)的查詢,即通過索引樹獲得目標(biāo)數(shù)據(jù)的相對地址,該相對地址是相對于內(nèi)存塊起始地址的偏移值,通過計算得到目標(biāo)數(shù) 據(jù)的實際內(nèi)存地址。無論內(nèi)存塊是否被重新加載,其相對地址是不變的,因此只要內(nèi)存塊加載時確定了起始地址,通過計算還是能獲得目標(biāo)數(shù)據(jù)正確的內(nèi)存地址。本實施例還可以對數(shù)據(jù)庫中的數(shù)據(jù)條目進行添加操作,參考圖2,圖2為本實施例中對數(shù)據(jù)庫中的數(shù)據(jù)進行添加的流程圖,具體如下步驟201、在所述數(shù)據(jù)庫中添加任一數(shù)據(jù)條目后,根據(jù)所述數(shù)據(jù)條目的索引項對應(yīng)的索引值,按照所述預(yù)設(shè)順序在所述索引項對應(yīng)的索引樹上增加一個節(jié)點。本實例中,在數(shù)據(jù)庫的數(shù)據(jù)表中添加一條數(shù)據(jù)條目時,將此數(shù)據(jù)條目中的索引項對應(yīng)的索引值,按照預(yù)設(shè)順序添加到該索引項對應(yīng)的索引樹中,作為該索引樹的節(jié)點。具體的,所述的預(yù)設(shè)順序即為前述創(chuàng)建該索引樹所依據(jù)的預(yù)設(shè)順序。步驟202、在所述增加的節(jié)點上保存所述索引項對應(yīng)的索引值。本實施例中,在所述索弓I樹中添加索弓丨項對應(yīng)的索引值作為該索引樹的節(jié)點,進而將其保存。步驟203、更新增加節(jié)點后的索引樹。本實施例中,在所述索引樹中添加了節(jié)點并保存了節(jié)點上的索引值后,將該索引樹更新。本實施例中,在對數(shù)據(jù)庫中的數(shù)據(jù)進行添加時,也將添加了索引值的索引樹進行更新操作,保證了后續(xù)步驟的數(shù)據(jù)查詢操作能夠在更新后的索引數(shù)中機進行,保證了數(shù)據(jù)查詢的準(zhǔn)確性。本實施例還可以包括對數(shù)據(jù)庫中的數(shù)據(jù)進行刪除的操作,參考圖3,圖3為本實施例中對數(shù)據(jù)庫中的數(shù)據(jù)進行刪除的流程圖,具體如下步驟301、在所述數(shù)據(jù)庫中刪除任一數(shù)據(jù)條目后,在所述數(shù)據(jù)條目的索引項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查找所述索引項的索引值對應(yīng)的節(jié)點。本實例中,在數(shù)據(jù)庫的數(shù)據(jù)表中刪除一條數(shù)據(jù)條目時,首先確定該數(shù)據(jù)表的索引項對應(yīng)的此數(shù)據(jù)條目中的索引值,其次,按照預(yù)設(shè)順序在該索引項對應(yīng)的索引樹中確定該索引值的節(jié)點。具體的,所述的預(yù)設(shè)順序即為前述創(chuàng)建該索引樹所依據(jù)的預(yù)設(shè)順序。步驟302、在所述索引項對應(yīng)的索引樹中,將所述節(jié)點刪除。本實施例中,在所述索引項對應(yīng)的索引樹中確定了即將刪除的節(jié)點后,將此確定節(jié)點刪除。步驟303、更新刪除所述節(jié)點后的索引樹。本實施例中,將確定節(jié)點刪除后,就該節(jié)點的前一節(jié)點和后一節(jié)點按照預(yù)設(shè)順序調(diào)整,即更新刪除了確定節(jié)點的索引樹。
本實施例中,在對數(shù)據(jù)庫中的數(shù)據(jù)進行刪除時,也將刪除了索引值的索引樹進行更新操作,保證了后續(xù)步驟的數(shù)據(jù)查詢操作能夠在更新后的索引數(shù)中機進行,保證了數(shù)據(jù)查詢的準(zhǔn)確性。本實施例還可以包括對數(shù)據(jù)庫中的數(shù)據(jù)進行修改的操作,參考圖4,圖4為本實施例中對數(shù)據(jù)庫中的數(shù)據(jù)進行修改的流程圖,具體如下步驟401、在所述數(shù)據(jù)庫中修改任一數(shù)據(jù)條目后,在修改了所述數(shù)據(jù)條目中索引項對應(yīng)的索引值時,確定修改了索引值的索引項。本實施例中,當(dāng)用戶對數(shù)據(jù)表中的任一數(shù)據(jù)條目進行修改時,當(dāng)修改的數(shù)據(jù)值恰好為該數(shù)據(jù)表的索引項之一時,確定該修改了索引值的索引項,進而確定該索引項對應(yīng)的索引樹。具體操作時,當(dāng)用戶修改的數(shù)據(jù)條目的信息不是該數(shù)據(jù)表的索引相對應(yīng)的值時,該數(shù)據(jù)表的各個索引樹不需要相應(yīng)的訪問、修改以及更新。步驟402、在所述索弓I項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查找所述修改的索引值對應(yīng)的節(jié)點。本實施例中,在確定了修改索引值的索引項后,進而確定該索引項對應(yīng)的索引樹,在該索引樹中按照預(yù)設(shè)順序查找并確定該被修改的索引值對應(yīng)的節(jié)點。具體的,所述的預(yù)設(shè)順序即為前述創(chuàng)建該索引樹所依據(jù)的預(yù)設(shè)順序。步驟403、在所述索引項對應(yīng)的索引樹中,修改所述節(jié)點對應(yīng)的值。本實施例中,在確定了被修改的索引值對應(yīng)的節(jié)點后,同時將該索引樹上的該節(jié)點對應(yīng)的值也修改。步驟404、更新修改所述節(jié)點對應(yīng)的值后的索引樹。本實施例中,在修改了節(jié)點對應(yīng)值后,將該索引樹更新。本實施例中,在對數(shù)據(jù)庫中的數(shù)據(jù)進行修改時,也將修改了索引值的索引樹進行更新操作,保證了后續(xù)步驟的數(shù)據(jù)查詢操作能夠在更新后的索引數(shù)中機進行,保證了數(shù)據(jù)查詢的準(zhǔn)確性。需要說明的是,本發(fā)明實施例在創(chuàng)建索引樹的時候,各個節(jié)點按照何種順序進行排列,那么在后續(xù)需要更新索引樹的時候,例如添加節(jié)點、刪除節(jié)點或者修改節(jié)點的時候,也需要按照同樣的順序進行索引樹的更新。值得注意的是,本實施例中的對數(shù)據(jù)庫中的數(shù)據(jù)進行添加、刪除和修改的操作與對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢的操作是相對獨立的,對數(shù)據(jù)庫中的數(shù)據(jù)進行添加、刪除和修改的操作可以在對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢之前進行,此種情況下,當(dāng)對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢時,一般為在對數(shù)據(jù)庫中的數(shù)據(jù)進行添加、刪除和修改后進行更新了的索引樹的基礎(chǔ)上進行的。對數(shù)據(jù)庫中的數(shù)據(jù)進行添加、刪除和修改的操作可以在對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢之后進行,為下一次的數(shù)據(jù)查詢操作做好準(zhǔn)備。具體的,對數(shù)據(jù)庫中的數(shù)據(jù)進行添加、刪除和修改的操作在對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢之前或者之后都可以,上述操作執(zhí)行的先后順序并不影響本實施例的施行。本實施例中,預(yù)先將數(shù)據(jù)表中的至少一個數(shù)據(jù)項確定為數(shù)據(jù)表的索引項,并將各個索引項對應(yīng)的索引值分別按照預(yù)設(shè)的順序建立索引樹,用特定順序的索引樹對索引值進行存儲,便于數(shù)據(jù)的查詢。系統(tǒng)通過接收用戶輸入的索引項,確定輸入的索引項對應(yīng)的索引樹,在確定的索引樹中按照一定的順序?qū)δ繕?biāo)數(shù)據(jù)進行查詢。與現(xiàn)有技術(shù)相比,本方案使用索引按照預(yù)設(shè)順序進行數(shù)據(jù)查 詢,使得數(shù)據(jù)查詢的效率得到很大的提高。實施例二、參考圖5,圖5為本發(fā)明提供的一種基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢裝置實施例二的裝置結(jié)構(gòu)圖,本實施例具體可以包括第一創(chuàng)建模塊501,用于在所述數(shù)據(jù)庫中創(chuàng)建基于鍵-值的數(shù)據(jù)表;第一確定模塊502,用于將所述數(shù)據(jù)表的至少一個數(shù)據(jù)項確定為所述數(shù)據(jù)表的索引項;第二創(chuàng)建模塊503,用于將所述數(shù)據(jù)表中的索引項對應(yīng)的索引值作為節(jié)點,依照預(yù)設(shè)順序建立與所述索引項對應(yīng)的索引樹;第二確定模塊504,用于根據(jù)接收到的用戶輸入的查詢索引項,確定目標(biāo)索引樹;第一查詢模塊505,用于根據(jù)用戶針對所述查詢索引項輸入的查詢索引值表達式,在所述確定的目標(biāo)索引樹中查詢目標(biāo)數(shù)據(jù),所述索引表達式表示一定范圍的索引值。本裝置還可以包括參考圖6,圖6為本實施例中對數(shù)據(jù)庫中的數(shù)據(jù)進行添加的裝置,具體如下增加模塊601,用于在所述數(shù)據(jù)庫中添加任一數(shù)據(jù)條目后,根據(jù)所述數(shù)據(jù)條目的索弓I項對應(yīng)的索引值,按照所述預(yù)設(shè)順序在所述索弓I項對應(yīng)的索引樹上增加一個節(jié)點。第一保存模塊602,用于在所述增加的節(jié)點上保存所述索引項對應(yīng)的索引值;第一更新模塊603,用于更新增加節(jié)點后的索引樹。本裝置還可以包括參考圖7,圖7為本實施例中對數(shù)據(jù)庫中的數(shù)據(jù)進行刪除的裝置,具體如下第二查詢模塊701,用于在所述數(shù)據(jù)庫中刪除任一數(shù)據(jù)條目后,在所述數(shù)據(jù)條目的索弓I項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查詢所述索引項的索引值對應(yīng)的節(jié)點;刪除模塊702,用于在所述索引項對應(yīng)的索引樹中,將所述節(jié)點刪除;第二更新模塊703,用于更新刪除所述節(jié)點后的索引樹。本裝置還可以包括參考圖8,圖8為本實施例中對數(shù)據(jù)庫中的數(shù)據(jù)進行修改的裝置,具體如下第三確定模塊801,用于在所述數(shù)據(jù)庫中修改任一數(shù)據(jù)條目后,在修改了所述數(shù)據(jù)條目中索引項對應(yīng)的索引值時,確定修改了索引值的索引項。第三查詢模塊802,用于在所述索引項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查找所述修改的索引值對應(yīng)的節(jié)點;修改模塊803,用于在所述索引項對應(yīng)的索引樹中,修改所述節(jié)點對應(yīng)的值;第三更新模塊804,用于更新修改所述節(jié)點對應(yīng)的值后的索引樹。本實施例預(yù)先將數(shù)據(jù)表中的至少一個數(shù)據(jù)項確定為數(shù)據(jù)表的索引項,并將各個索引項對應(yīng)的索引值分別按照預(yù)設(shè)的順序建立索引樹,用特定順序的索引樹對索引值進行存儲,便于數(shù)據(jù)的查詢。系統(tǒng)通過接收用戶輸入的索引項,確定輸入的索引項對應(yīng)的索引樹,在確定的索引樹中按照一定的順序?qū)δ繕?biāo)數(shù)據(jù)進行查詢。與現(xiàn)有技術(shù)相比,本方案使用索引按照預(yù)設(shè)順序進行數(shù)據(jù)查詢,使得數(shù)據(jù)查詢的效率得到很大的提高。對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備 所固有的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,并不排
除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。以上對本發(fā)明實施例所提供的基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法和裝置進行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法,其特征在于,在所述數(shù)據(jù)庫中創(chuàng)建基于鍵-值的數(shù)據(jù)表,將所述數(shù)據(jù)表的至少一個數(shù)據(jù)項確定為所述數(shù)據(jù)表的索引項;將所述數(shù)據(jù)表中的索引項對應(yīng)的索引值作為節(jié)點,依照預(yù)設(shè)順序建立與所述索引項對應(yīng)的索引樹; 所述方法包括 根據(jù)接收到的用戶輸入的查詢索引項,確定目標(biāo)索引樹; 根據(jù)用戶針對所述查詢索引項輸入的查詢索引值表達式,在所述確定的目標(biāo)索引樹中查詢目標(biāo)數(shù)據(jù),所述索引表達式表示一定范圍的索引值。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述方法還包括 在所述數(shù)據(jù)庫中添加任一數(shù)據(jù)條目后,根據(jù)所述數(shù)據(jù)條目的索引項對應(yīng)的索引值,按照所述預(yù)設(shè)順序在所述索引項對應(yīng)的索引樹上增加一個節(jié)點; 在所述增加的節(jié)點上保存所述索弓I項對應(yīng)的索引值; 更新增加節(jié)點后的索引樹。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述方法還包括 在所述數(shù)據(jù)庫中刪除任一數(shù)據(jù)條目后,在所述數(shù)據(jù)條目的索引項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查找所述索引項的索引值對應(yīng)的節(jié)點; 在所述索弓I項對應(yīng)的索引樹中,將所述節(jié)點刪除; 更新刪除所述節(jié)點后的索引樹。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述方法還包括 在所述數(shù)據(jù)庫中修改任一數(shù)據(jù)條目后,在修改了所述數(shù)據(jù)條目中索引項對應(yīng)的索引值時,確定修改了索引值的索引項; 在所述索引項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查找所述修改的索引值對應(yīng)的節(jié)點; 在所述索引項對應(yīng)的索引樹中,修改所述節(jié)點對應(yīng)的值; 更新修改所述節(jié)點對應(yīng)的值后的索引樹。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述根據(jù)用戶針對所述查詢索引項輸入的查詢索引值表達式,在所述確定的目標(biāo)索引樹中查詢目標(biāo)數(shù)據(jù),具體為, 根據(jù)用戶輸入的查詢索引表達式,在利用相對地址查詢所述目標(biāo)索引樹后,查詢到目標(biāo)數(shù)據(jù),所述索引表達式為表示一定范圍的所述索引項對應(yīng)的索引值的表達式。
6.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述數(shù)據(jù)庫中的任一數(shù)據(jù)項所占用內(nèi)存大小為可變的。
7.根據(jù)權(quán)利要求I所述的方法,其特征在于,為所述數(shù)據(jù)庫中的任一數(shù)據(jù)項分配固定內(nèi)存,所述方法還包括 創(chuàng)建所述數(shù)據(jù)表的內(nèi)存分配表,所述內(nèi)存分配表用于存儲任一數(shù)據(jù)項的相對于所述固定內(nèi)存的內(nèi)存剩余情況; 依據(jù)所述內(nèi)存剩余情況回收所述數(shù)據(jù)項的剩余內(nèi)存。
8.一種基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢裝置,其特征在于,所述裝置包括 第一創(chuàng)建模塊,用于在所述數(shù)據(jù)庫中創(chuàng)建基于鍵-值的數(shù)據(jù)表; 第一確定模塊,用于將所述建表模塊創(chuàng)建的數(shù)據(jù)表的至少一個數(shù)據(jù)項確定為所述數(shù)據(jù)表的索引項; 第二創(chuàng)建模塊;用于將所述數(shù)據(jù)表中的索引項對應(yīng)的索引值作為節(jié)點,依照預(yù)設(shè)順序建立與所述索引項對應(yīng)的索引樹; 第二確定模塊,用于根據(jù)接收到的用戶輸入的查詢索引項,確定目標(biāo)索引樹; 第一查詢模塊,用于根據(jù)用戶針對所述查詢索引項輸入的查詢索引值表達式,在所述確定的目標(biāo)索引樹中查詢目標(biāo)數(shù)據(jù),所述索引表達式表示一定范圍的索引值。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括 增加模塊,用于在所述數(shù)據(jù)庫中添加任一數(shù)據(jù)條目后,根據(jù)所述數(shù)據(jù)條目的索引項對應(yīng)的索引值,按照所述預(yù)設(shè)順序在所述索引項對應(yīng)的索引樹上增加一個節(jié)點; 第一保存模塊,用于在所述增加的節(jié)點上保存所述索引項對應(yīng)的索引值; 第一更新模塊,用于更新增加節(jié)點后的索引樹。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括 第二查詢模塊,用于在所述數(shù)據(jù)庫中刪除任一數(shù)據(jù)條目后,在所述數(shù)據(jù)條目的索引項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查詢所述索引項的索引值對應(yīng)的節(jié)點; 刪除模塊,用于在所述索引項對應(yīng)的索引樹中,將所述節(jié)點刪除; 第二更新模塊,用于更新刪除所述節(jié)點后的索引樹。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括 第三確定模塊,用于在所述數(shù)據(jù)庫中修改任一數(shù)據(jù)條目后,在修改了所述數(shù)據(jù)條目中索引項對應(yīng)的索引值時,確定修改了索引值的索引項; 第三查詢模塊,用于在所述索引項對應(yīng)的索引樹中,按照預(yù)設(shè)順序查找所述修改的索引值對應(yīng)的節(jié)點; 修改模塊,用于在所述索弓I項對應(yīng)的索引樹中,修改所述節(jié)點對應(yīng)的值; 第三更新模塊,用于更新修改所述節(jié)點對應(yīng)的值后的索引樹。
全文摘要
本發(fā)明實施例公開了一種基于索引的數(shù)據(jù)庫的數(shù)據(jù)查詢方法和裝置,該方法具體為在所述數(shù)據(jù)庫中創(chuàng)建基于鍵-值的數(shù)據(jù)表,將所述數(shù)據(jù)表的至少一個數(shù)據(jù)項確定為所述數(shù)據(jù)表的索引項;將所述數(shù)據(jù)表中的索引項對應(yīng)的索引值作為節(jié)點,依照預(yù)設(shè)順序建立與所述索引項對應(yīng)的索引樹;根據(jù)接收到的用戶輸入的查詢索引項,確定目標(biāo)索引樹;根據(jù)用戶針對所述查詢索引項輸入的查詢索引值表達式,在所述確定的目標(biāo)索引樹中查詢目標(biāo)數(shù)據(jù),所述索引表達式表示一定范圍的索引值。本發(fā)明使用索引按照預(yù)設(shè)順序進行數(shù)據(jù)查詢,使得數(shù)據(jù)查詢的效率得到很大的提高。
文檔編號G06F17/30GK102915382SQ20121047601
公開日2013年2月6日 申請日期2012年11月21日 優(yōu)先權(quán)日2012年11月21日
發(fā)明者繆治中 申請人:亞信聯(lián)創(chuàng)科技(中國)有限公司