文檔型數(shù)據(jù)庫(kù)建立索引的方法和裝置的制造方法【專利說(shuō)明】文檔型數(shù)據(jù)庫(kù)建立索引的方法和裝置[0001]本發(fā)明涉及數(shù)據(jù)庫(kù),更具體地,涉及基于文件型數(shù)據(jù)庫(kù)建立索引的方法和裝置?!?br>背景技術(shù):
】[0002]隨著互聯(lián)網(wǎng)Web2.0的興起,NoS化非關(guān)系型數(shù)據(jù)庫(kù)成為一個(gè)極其熱口的新領(lǐng)域,面對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫(xiě)的需求,對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問(wèn)的需求,對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求,關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)力不從必。與關(guān)系型數(shù)據(jù)庫(kù)相比,NoS化數(shù)據(jù)庫(kù)具有靈活的可擴(kuò)展性,NoS化數(shù)據(jù)庫(kù)種類繁多,但是一個(gè)共同的特點(diǎn)都是去掉關(guān)系數(shù)據(jù)庫(kù)的關(guān)系型特性,數(shù)據(jù)之間無(wú)關(guān)系,送樣就非常容易擴(kuò)展,在架構(gòu)的層面上帶來(lái)了可擴(kuò)展的能力。文檔型數(shù)據(jù)庫(kù)是非關(guān)系型數(shù)據(jù)庫(kù)中非常重要的一個(gè)分支,它主要用來(lái)存儲(chǔ)、索引并管理面向文檔的數(shù)據(jù)或者類似的半結(jié)構(gòu)化數(shù)據(jù)。顧名思義,文檔型數(shù)據(jù)庫(kù)(面向文檔數(shù)據(jù)庫(kù))的關(guān)鍵核必概念即文檔值ocument),它是數(shù)據(jù)庫(kù)中最小的單位。MongoDB是目前最為流行的NoS化數(shù)據(jù)庫(kù),它是一種面向集合、模式無(wú)關(guān)的文檔型數(shù)據(jù)庫(kù)。其中數(shù)據(jù)W"集合"的方式進(jìn)行分組,每個(gè)集合都有單獨(dú)的名稱并可W包含無(wú)限數(shù)量的文檔。送里的集合同關(guān)系型數(shù)據(jù)庫(kù)中的表(table)類似,唯一的區(qū)別就是它并沒(méi)有任何明確的模式(schema)。[0003]創(chuàng)建數(shù)據(jù)庫(kù)索引是數(shù)據(jù)庫(kù)管理的一個(gè)重要方面,數(shù)據(jù)庫(kù)索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種數(shù)據(jù)結(jié)構(gòu),送些數(shù)據(jù)結(jié)構(gòu)W某種方式引用(指向)數(shù)據(jù),W協(xié)助快速查詢、更新數(shù)據(jù)庫(kù)表中數(shù)據(jù)。關(guān)系型數(shù)據(jù)庫(kù)通常W表結(jié)構(gòu)存儲(chǔ),索引的建立可簡(jiǎn)單的僅針對(duì)固定的某些字段。而文檔型數(shù)據(jù)庫(kù)通常是不限定字段結(jié)構(gòu)的,且在文檔型數(shù)據(jù)庫(kù)使用過(guò)程中會(huì)不斷的有新的文檔引入新的字段結(jié)構(gòu),因此預(yù)先選取某些固定字段不能有效地應(yīng)對(duì)文檔型數(shù)據(jù)庫(kù)文檔字段的動(dòng)態(tài)變化。此外,由于數(shù)據(jù)分塊的難度較大,針對(duì)關(guān)系型數(shù)據(jù)庫(kù)的索引建立是針對(duì)表中的全部數(shù)據(jù),當(dāng)數(shù)據(jù)量很大時(shí),尤其針對(duì)在線提供服務(wù)的非關(guān)系型數(shù)據(jù)庫(kù)文檔中的全部數(shù)據(jù)建立索引,建立索引期間訪問(wèn)數(shù)據(jù)庫(kù)的性能變得很差。[0004]因此,需要一種有效地為文檔型數(shù)據(jù)庫(kù)建立索引的方法?!?br/>發(fā)明內(nèi)容】[0005]根據(jù)本發(fā)明的一個(gè)方面,提供一種文檔型數(shù)據(jù)庫(kù)建立索引的方法,包括:根據(jù)用戶對(duì)所述文檔型數(shù)據(jù)庫(kù)中的多個(gè)文檔的訪問(wèn)情況從所述多個(gè)文檔的各個(gè)字段的屬性中確定索引指標(biāo),其中所述索引指標(biāo)用于為所述多個(gè)文檔建立索引;將所述多個(gè)文檔劃分為多個(gè)文檔集合;根據(jù)所述索引指標(biāo)對(duì)所述多個(gè)文檔集合建立索引。[0006]根據(jù)本發(fā)明的另一個(gè)方面,提供一種文檔型數(shù)據(jù)庫(kù)建立索引的裝置,包括;第一確定模塊,被配置為根據(jù)用戶對(duì)所述文檔型數(shù)據(jù)庫(kù)中的多個(gè)文檔的訪問(wèn)情況從所述多個(gè)文檔的各個(gè)字段的屬性中確定索引指標(biāo),其中所述索引指標(biāo)用于為所述多個(gè)文檔建立索引;劃分模塊,被配置為將所述多個(gè)文檔劃分為多個(gè)文檔集合;建立模塊,被配置為根據(jù)所述索引指標(biāo)對(duì)所述多個(gè)文檔集合建立索引。[0007]根據(jù)本發(fā)明實(shí)施例的方法和裝置利用文檔型數(shù)據(jù)庫(kù)易于分塊的特點(diǎn)將文檔型數(shù)據(jù)庫(kù)中的多個(gè)文檔劃分為文檔集合,針對(duì)文檔集合能夠有效地實(shí)現(xiàn)為文檔型數(shù)據(jù)庫(kù)建立索引?!靖綀D說(shuō)明】[0008]通過(guò)結(jié)合附圖對(duì)本公開(kāi)示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開(kāi)的上述W及其它目的、特征和優(yōu)勢(shì)將變得更加明顯,其中,在本公開(kāi)示例性實(shí)施方式中,相同的參考標(biāo)號(hào)通常代表相同部件。[0009]圖1示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。[0010]圖2示出根據(jù)本發(fā)明實(shí)施例的一種文檔型數(shù)據(jù)庫(kù)建立索引的方法。[0011]圖3示出根據(jù)本發(fā)明實(shí)施例的文檔1、2和3的屬性的樹(shù)狀結(jié)構(gòu)。[0012]圖4示出在圖3的屬性的樹(shù)狀結(jié)構(gòu)上標(biāo)識(shí)出針對(duì)每個(gè)屬性的相同類型的操作次數(shù)。[0013]圖5示出根據(jù)本發(fā)明的實(shí)施例根據(jù)所述索引指標(biāo)對(duì)所述文檔集合中的文檔建立索引的流程。[0014]圖6示出根據(jù)圖5的流程根據(jù)新增索引指標(biāo)建立索引的流程。[0015]圖7示出根據(jù)圖5的流程處理廢棄索引指標(biāo)的流程。[0016]圖8示出根據(jù)本發(fā)明實(shí)施例的文檔型數(shù)據(jù)庫(kù)建立索引的裝置。【具體實(shí)施方式】[0017]下面將參照附圖更詳細(xì)地描述本公開(kāi)的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開(kāi)的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可WW各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被送里闡述的實(shí)施方式所限制。相反,提供送些實(shí)施方式是為了使本公開(kāi)更加透徹和完整,并且能夠?qū)⒈竟_(kāi)的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。[0018]圖1示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。圖1顯示的計(jì)算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明實(shí)施例的功能和使用范圍帶來(lái)任何限制。[0019]如圖1所示,計(jì)算機(jī)系統(tǒng)/服務(wù)器12W通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的組件可W包括但不限于;一個(gè)或者多個(gè)處理器或者處理單元16,系統(tǒng)存儲(chǔ)器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器28和處理單元16)的總線18。[0020]總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來(lái)說(shuō),送些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線W及外圍組件互連(PCI)總線。[0021]計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。送些介質(zhì)可W是任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問(wèn)的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。[0022]系統(tǒng)存儲(chǔ)器28可W包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(RAM)30和/或高速緩存存儲(chǔ)器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可W進(jìn)一步包括其它可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)34可w用于讀寫(xiě)不可移動(dòng)的、非易失性磁介質(zhì)(圖1未顯示,通常稱為"硬盤(pán)驅(qū)動(dòng)器")。盡管圖1中未示出,可W提供用于對(duì)可移動(dòng)非易失性磁盤(pán)(例如"軟盤(pán)")讀寫(xiě)的磁盤(pán)驅(qū)動(dòng)器,W及對(duì)可移動(dòng)非易失性光盤(pán)(例如CD-ROM,DVD-ROM或者其它光介質(zhì))讀寫(xiě)的光盤(pán)驅(qū)動(dòng)器。在送些情況下,每個(gè)驅(qū)動(dòng)器可W通過(guò)一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲(chǔ)器28可W包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,送些程序模塊被配置W執(zhí)行本發(fā)明各實(shí)施例的功能。[0023]具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可W存儲(chǔ)在例如存儲(chǔ)器28中,送樣的程序模塊42包括一但不限于一操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊W及程序數(shù)據(jù),送些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。[0024]計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可W與一個(gè)或多個(gè)外部設(shè)備14(例如鍵盤(pán)、指向設(shè)備、顯示器24等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。送種通信可W通過(guò)輸入/輸出(I/O)接口22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可W通過(guò)網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過(guò)總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可W結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于;微代碼、設(shè)備驅(qū)動(dòng)器、兀余處理單元、外部磁盤(pán)驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器W及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。[00巧]圖2示出根據(jù)本發(fā)明實(shí)施例的一種文檔型數(shù)據(jù)庫(kù)建立索引的方法,包括;在步驟S201,根據(jù)用戶對(duì)所述文檔型數(shù)據(jù)庫(kù)中的多個(gè)文檔的訪問(wèn)情況從所述多個(gè)文檔的各個(gè)字段的屬性中確定索引指標(biāo)(indexindicator),其中所述索引指標(biāo)用于為所述多個(gè)文檔建立索引;在步驟S202,將所述多個(gè)文檔劃分為多個(gè)文檔集合;在步驟S203,根據(jù)所述索引指標(biāo)對(duì)所述多個(gè)文檔集合建立索引。[0026]在步驟S201,根據(jù)用戶對(duì)所述文檔型數(shù)據(jù)庫(kù)中的多個(gè)文檔的訪問(wèn)情況從所述多個(gè)文檔的各個(gè)字段的屬性中確定索引指標(biāo)(indexindicator),其中所述索引指標(biāo)用于為所述多個(gè)文檔建立索引,具體地,包括:步驟S301,記錄用戶一段時(shí)間內(nèi)對(duì)所述多個(gè)文檔的各個(gè)字段的操作,其中所述操作包括W下操作中的至少一個(gè):查詢操作、寫(xiě)操作和分組/排序操作;在步驟S302,統(tǒng)計(jì)出所述文檔當(dāng)前第1頁(yè)1 2 3 4