用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的方法和裝置制造方法
【專利摘要】本發(fā)明涉及分布式數(shù)據(jù)庫。提供一種用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的方法和裝置,其中,分布式數(shù)據(jù)庫系統(tǒng)包含多個通過計算機網(wǎng)絡(luò)可通信地耦接的計算節(jié)點,該方法包含:為數(shù)據(jù)庫數(shù)據(jù)創(chuàng)建多個不同的數(shù)據(jù)副本,其中,以下述方式創(chuàng)建每個數(shù)據(jù)副本:對數(shù)據(jù)庫數(shù)據(jù)按照至少一個數(shù)據(jù)屬性進行排序,基于所述至少一個數(shù)據(jù)屬性生成行鍵,將排序后并具有所述行鍵的數(shù)據(jù)庫數(shù)據(jù)作為所述數(shù)據(jù)副本;將不同的數(shù)據(jù)副本存儲到不同的計算節(jié)點;按照行鍵為每個數(shù)據(jù)副本創(chuàng)建索引。
【專利說明】用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分布式數(shù)據(jù)庫,更具體地,涉及分布式數(shù)據(jù)庫數(shù)據(jù)的處理。
【背景技術(shù)】
[0002]數(shù)據(jù)庫廣泛應(yīng)用于電子商務(wù)、社交網(wǎng)絡(luò)、因特網(wǎng)檢索、物聯(lián)網(wǎng)(1T)等領(lǐng)域。數(shù)據(jù)庫包括關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫中的表是格式化的數(shù)據(jù)結(jié)構(gòu),表中的每個元組(tuple)字段的組成都一樣,即使不是每個元組都需要所有的字段,數(shù)據(jù)庫也為每個元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進行連接等操作
[0003]非關(guān)系型數(shù)據(jù)庫以包含鍵值對(key-value pair)的元組存儲信息,它的結(jié)構(gòu)不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),因此,非關(guān)系型數(shù)據(jù)庫具有可擴展性(scalability)好的特點,由于這個特點,非關(guān)系型的數(shù)據(jù)庫也得到了迅速的發(fā)展。
[0004]關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫都可以存儲多維數(shù)據(jù)(mult1-dimensionaldata)。多維數(shù)據(jù)的一個例子是傳感器的測量數(shù)據(jù),例如不同時刻的溫度、風(fēng)速。在查詢數(shù)據(jù)庫時,如果要同時查詢特定傳感器和該特定傳感器記錄的時間,傳感器號和時間就構(gòu)成二維的數(shù)據(jù);如果要同時查詢特定傳感器和該特定傳感器記錄的時間和溫度,傳感器號、時間和溫度就構(gòu)成三維的數(shù)據(jù)。
[0005]現(xiàn)有技術(shù)中已經(jīng)存在對多維數(shù)據(jù)的處理的技術(shù),包括對多維數(shù)據(jù)進行索引、存儲和查詢的技術(shù)。但是,應(yīng)用這些現(xiàn)有技術(shù)處理多維數(shù)據(jù)時,為了提高效率往往需要消耗額外的計算資源,隨著各種應(yīng)用所處理的數(shù)據(jù)庫數(shù)據(jù)量的急劇增長,如何緩和這種矛盾變得越來越重要。
【發(fā)明內(nèi)容】
[0006]針對現(xiàn)有技術(shù)的狀況,本發(fā)明的一個目的是提供一種用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的改進的方法和裝置。
[0007]—方面,公開一種用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的方法,其中,分布式數(shù)據(jù)庫系統(tǒng)包含多個通過計算機網(wǎng)絡(luò)可通信地耦接的計算節(jié)點,該方法包含:為數(shù)據(jù)庫數(shù)據(jù)創(chuàng)建多個不同的數(shù)據(jù)副本,其中,以下述方式創(chuàng)建每個數(shù)據(jù)副本:對數(shù)據(jù)庫數(shù)據(jù)按照至少一個數(shù)據(jù)屬性進行排序,基于所述至少一個數(shù)據(jù)屬性生成行鍵,將排序后并具有所述行鍵的數(shù)據(jù)庫數(shù)據(jù)作為該數(shù)據(jù)副本;將不同的數(shù)據(jù)副本存儲到不同的計算節(jié)點;按照行鍵為每個數(shù)據(jù)副本創(chuàng)建索引。
[0008]另一方面,公開一種用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的裝置,其中,分布式數(shù)據(jù)庫系統(tǒng)包含多個通過計算機網(wǎng)絡(luò)可通信地耦接的計算節(jié)點,該裝置包含:數(shù)據(jù)副本創(chuàng)建模塊,被配置得用于為數(shù)據(jù)庫數(shù)據(jù)創(chuàng)建多個不同的數(shù)據(jù)副本,其中,以下述方式創(chuàng)建每個數(shù)據(jù)副本:對數(shù)據(jù)庫數(shù)據(jù)按照至少一個數(shù)據(jù)屬性進行排序,基于所述至少一個數(shù)據(jù)屬性生成行鍵,將排序后并具有所述行鍵的數(shù)據(jù)庫數(shù)據(jù)作為該數(shù)據(jù)副本;副本存儲模塊,被配置得用于將不同的數(shù)據(jù)副本存儲到不同的計算節(jié)點;索引創(chuàng)建模塊,被配置得用于按照行鍵為每個數(shù)據(jù)副本創(chuàng)建索引。
【專利附圖】
【附圖說明】
[0009]通過結(jié)合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標(biāo)號通常代表相同部件。
[0010]圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算系統(tǒng)100的框圖;
[0011]圖2示意性地表示按照本發(fā)明一個實施例的分布式數(shù)據(jù)庫系統(tǒng);
[0012]圖3示意性地表示兩例數(shù)據(jù)庫數(shù)據(jù);
[0013]圖4A-4C示意性地表示按照本發(fā)明的實施例的數(shù)據(jù)副本;
[0014]圖5示意性地表示按照本發(fā)明的實施例的數(shù)據(jù)副本的索引;
[0015]圖6示意性地表示按照本發(fā)明一個實施例的方法的流程圖;
[0016]圖7示意性地表示按照本發(fā)明一個實施例的裝置的框圖。
【具體實施方式】
[0017]下面將參照附圖更詳細地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
[0018]圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算系統(tǒng)100的框圖。如圖1所示,計算機系統(tǒng)100可以包括:CPU(中央處理單元)101、RAM(隨機存取存儲器)102、ROM(只讀存儲器)103、系統(tǒng)總線104、硬盤控制器105、鍵盤控制器106、串行接口控制器107、并行接口控制器108、顯示控制器109、硬盤110、鍵盤111、串行外部設(shè)備112、并行外部設(shè)備113和顯示器114。在這些設(shè)備中,與系統(tǒng)總線104耦合的有CPUlOl、RAM 102, ROM103、硬盤控制器105、鍵盤控制器106、串行控制器107、并行控制器108和顯示控制器109。硬盤110與硬盤控制器105耦合,鍵盤111與鍵盤控制器106耦合,串行外部設(shè)備112與串行接口控制器107耦合,并行外部設(shè)備113與并行接口控制器108耦合,以及顯示器114與顯示控制器109耦合。應(yīng)當(dāng)理解,圖1所述的結(jié)構(gòu)框圖僅僅是為了示例的目的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況增加或減少某些設(shè)備。
[0019]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼。
[0020]可以采用一個或多個計算機可讀的介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0021]計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括一一但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0022]計算機可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括——但不限于——無線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0023]可以以一種或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言-諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計語言-諸如”C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務(wù)器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡(luò)——包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0024]下面將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
[0025]也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質(zhì)中,這樣,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。
[0026]也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0027]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0028]本發(fā)明涉及分布式數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)庫數(shù)據(jù)的處理,分布式數(shù)據(jù)庫系統(tǒng)中的計算節(jié)點,可以是圖1所示的計算機系統(tǒng)100,對數(shù)據(jù)庫數(shù)據(jù)的處理以及對數(shù)據(jù)庫的應(yīng)用,也可以在圖1所示的計算機系統(tǒng)100上執(zhí)行。
[0029]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,分布式數(shù)據(jù)庫的數(shù)據(jù)在物理上分散存儲在分布式數(shù)據(jù)庫系統(tǒng)(DDBMS)的不同的節(jié)點(或“場地”)。通過計算機網(wǎng)絡(luò)可通信地連接的各節(jié)點上的數(shù)據(jù),統(tǒng)一被分布式數(shù)據(jù)庫管理系統(tǒng)管理。因此,分布式數(shù)據(jù)庫在邏輯上是一個統(tǒng)一的整體,應(yīng)用程序通過網(wǎng)絡(luò)的連接可以訪問分布在不同地理位置的數(shù)據(jù)庫。
[0030]分布式數(shù)據(jù)庫在多個節(jié)點上存儲多個數(shù)據(jù)副本(data replicas),使得每個數(shù)據(jù)項(data item)都有至少一個副本被存儲在其他節(jié)點上。例如,數(shù)據(jù)項Dl具有兩個副本,即數(shù)據(jù)項D1_R1和數(shù)據(jù)項D1_R2,則D1、D1_R1和D1_R2所在的節(jié)點各不相固。需要指出的是,在本發(fā)明的語境中,術(shù)語“副本”是一個相對的概念,例如,在上面的例子中,DI和D 1_R2也是D1_R1的副本,Dl和D1_R1也是D1_R2的副本。
[0031]總之,在分布式數(shù)據(jù)庫中,數(shù)據(jù)是冗余的,這可以增加使用數(shù)據(jù)的并行度,也提高在故障(例如節(jié)點故障或網(wǎng)絡(luò)故障)情況下的數(shù)據(jù)可用性。
[0032]本發(fā)明的總體構(gòu)思,是利用分布式數(shù)據(jù)庫的數(shù)據(jù)冗余性來處理數(shù)據(jù)庫數(shù)據(jù),以便能在不額外占用計算資源的情況下,提高對數(shù)據(jù)庫數(shù)據(jù)的查詢的效率。
[0033]首先參看圖2,該圖示意性表示按照本發(fā)明一個實施例的分布式數(shù)據(jù)庫系統(tǒng)200。作為舉例,圖2所示的分布式數(shù)據(jù)庫系統(tǒng)200,在6個計算節(jié)點上存儲數(shù)據(jù)庫數(shù)據(jù)的三個數(shù)據(jù)副本220_1、220_2、220_3,其中,數(shù)據(jù)副本220_1被存儲在計算節(jié)點230_1和230_2上,數(shù)據(jù)副本220_2被存儲在計算節(jié)點230_3和230_4上,數(shù)據(jù)副本220_3被存儲在計算節(jié)點230_5 和 230_6 上。
[0034]計算節(jié)點(以下簡稱“節(jié)點”)可以由圖1所示的計算機系統(tǒng)100實現(xiàn)。節(jié)點與節(jié)點之間可以通過計算機網(wǎng)絡(luò)(未予示出)可通信地耦合。圖2中示出了6個節(jié)點,而這僅僅是示例性的,在實際應(yīng)用中,可能有數(shù)以百計的節(jié)點,并且,存儲每個數(shù)據(jù)副本的節(jié)點也可能不止兩個。
[0035]如圖所示,數(shù)據(jù)副本220_1、220_2、220_3各自都有一個對應(yīng)的索引210_1、210_2、210_3。按照本發(fā)明一個實施例,可以將索引210_1、210_2、210_3保存在其它節(jié)點上,例如分布式數(shù)據(jù)庫系統(tǒng)的主控(master)節(jié)點(未予示出)上。
[0036]需要指出的是,圖2中只示出了三個數(shù)據(jù)副本(以下也簡稱“副本”),然而一個實際的分布式數(shù)據(jù)庫具有的數(shù)據(jù)副本的數(shù)量可以更少(例如兩個)或者更多。
[0037]按照本發(fā)明一個實施例,數(shù)據(jù)副本220_1、220_2、220_3都包含相同的數(shù)據(jù)項,但是排序方式各不相同。
[0038]按照本發(fā)明一個實施例,這多個數(shù)據(jù)副本分別具有與排序方式相關(guān)聯(lián)的索引(也稱“索引數(shù)據(jù)”(index data))210_l、210_2、210_3。可以將索引保存在分布式數(shù)據(jù)庫系統(tǒng)的主控(master)節(jié)點(未予示出)上。
[0039]下文將參照圖4A-4C和圖5,詳細說明圖2所示的數(shù)據(jù)副本和索引的特點,并參照圖6,說明如何創(chuàng)建圖2所示的數(shù)據(jù)副本和索引。在此之前,先介紹適用于本發(fā)明的分布式數(shù)據(jù)庫系統(tǒng)200的數(shù)據(jù)庫。
[0040]參看圖3,圖3示意性地表示兩例數(shù)據(jù)庫數(shù)。標(biāo)記300A所示的是一例關(guān)系型數(shù)據(jù)庫的數(shù)據(jù),數(shù)據(jù)300A記錄了四個傳感器設(shè)備0001-0004在2000.1.1-2011.12.31期間采集的溫度、風(fēng)速和濕度等數(shù)值。第I行中的“設(shè)備號”、“時間”、“溫度”、“風(fēng)速”和“濕度”是數(shù)據(jù)屬性(簡稱“屬性”(attribute)),其它各行都是一個數(shù)據(jù)元組(tuple),數(shù)據(jù)元組的每個字段是一個屬性值。例如,元組“0001,2011.12.31,8,4,7”中的字段“0001”是屬性“設(shè)備號”的值,代表一個設(shè)備號為“0001”的傳感器設(shè)備。
[0041]標(biāo)記300B所示的是一例非關(guān)系型數(shù)據(jù)庫(例如NoSQL數(shù)據(jù)庫)的數(shù)據(jù)。數(shù)據(jù)300B中的每行代表一個數(shù)據(jù)元組,每個數(shù)據(jù)元組中包含一個“行鍵”(row-key)字段和若干個“鍵值對”(key/value pair)字段。例如,“0001,〈設(shè)備號,0001〉,〈時間,2011.12.31>,〈溫度,8>,〈風(fēng)速,4>,〈濕度,7>”是一個元組,該元組中的字段“0001”是一個行鍵值,例如,字段“〈設(shè)備號,0001>”表示屬性“設(shè)備號”的值為“0001”。
[0042]圖3所示的數(shù)據(jù)300A和數(shù)據(jù)300B僅僅是示例性的,用來代表眾所周知的關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。圖2所示的分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫數(shù)據(jù),可以采取數(shù)據(jù)300A的結(jié)構(gòu),也可以采取數(shù)據(jù)300B的結(jié)構(gòu)。為了說明的方便,以下僅以數(shù)據(jù)300B作為數(shù)據(jù)庫數(shù)據(jù)的例子,說明本發(fā)明的各種實施方式。顯然,了解關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的所屬【技術(shù)領(lǐng)域】的技術(shù)人員,不難把以非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)300B為例說明的各種實施方式,應(yīng)用于如數(shù)據(jù)300A所示的關(guān)系型數(shù)據(jù)庫數(shù)據(jù)。
[0043]下文將參看圖4A-4C,舉例描述關(guān)于數(shù)據(jù)副本220_1、220_2、220_3的細節(jié)。
[0044]圖4A示意性表示按照本發(fā)明的實施例創(chuàng)建的一個數(shù)據(jù)副本410。
[0045]這里假設(shè)將數(shù)據(jù)副本410用`作圖2所示的數(shù)據(jù)副本220_1,而數(shù)據(jù)副本220_1被存儲在節(jié)點230_1和230_2上,所以將數(shù)據(jù)副本410劃分為數(shù)據(jù)集411和412,以分別代表被存儲在節(jié)點230_1和230_2上的數(shù)據(jù)副本220j的兩個部分。
[0046]數(shù)據(jù)副本410,是由圖3所示的數(shù)據(jù)庫數(shù)據(jù)300B衍生的,或者說是為數(shù)據(jù)庫數(shù)據(jù)300B創(chuàng)建的數(shù)據(jù)副本。
[0047]首先需要說明的,為簡明起見,圖4A所示的數(shù)據(jù)副本410采用與數(shù)據(jù)庫數(shù)據(jù)300B的外觀不同、但實質(zhì)相同的表示形式。例如,數(shù)據(jù)副本410中的
[0048]
行鍵(設(shè)備號—時間)I設(shè)備號時間溫度風(fēng)速濕度
0001—2000.1.1----2000.1.1 1014
[0049]相當(dāng)于
[0050]
行鍵(設(shè)備號—時間),{鍵,值}
0001—2000.L 1,< 設(shè)備號,0001〉,< 時間,2000.L 1>,〈溫度,10>,< 風(fēng)速,14>
[0051]如下文將要結(jié)合圖6所描述的那樣,可以按如下的方式,為數(shù)據(jù)庫數(shù)據(jù)300Β創(chuàng)建數(shù)據(jù)副本410。
[0052]對數(shù)據(jù)庫數(shù)據(jù)300B按照數(shù)據(jù)屬性“設(shè)備號”和“時間”進行排序,基于屬性“設(shè)備號”和“時間”生成行鍵“設(shè)備號_時間”,將排序后并具有所生成的行鍵“設(shè)備號_時間”的數(shù)據(jù)庫300B作為數(shù)據(jù)副本410。
[0053]本例中,是按照兩個數(shù)據(jù)屬性“設(shè)備號”和“時間”對數(shù)據(jù)庫數(shù)據(jù)300B進行多重排序,先按屬性“設(shè)備號”排序、然后按屬性“時間”排序,并采用屬性“設(shè)備號”和“時間”的連接“設(shè)備號_時間”,作為行鍵,代替數(shù)據(jù)庫數(shù)據(jù)300B原來的行鍵“設(shè)備號”。例如,數(shù)據(jù)副本410的第一列的“0001_2000.1.1”就是行鍵(設(shè)備號_時間)的值。
[0054]由于數(shù)據(jù)副本410是通過對數(shù)據(jù)300B進行多重排序而產(chǎn)生的,數(shù)據(jù)集411和412中的數(shù)據(jù)項或元組,盡可能地被按照排定的順序,存儲在節(jié)點230_1和230_2上。例如,數(shù)據(jù)集411中“設(shè)備號”的值為“0001”的元組,被存儲在節(jié)點230_1的存儲器中連續(xù)或相鄰的位置上。
[0055]圖4B示意性表示按照本發(fā)明的實施例創(chuàng)建的另一個數(shù)據(jù)副本420。
[0056]這里假設(shè)將數(shù)據(jù)副本420用作圖2所示的數(shù)據(jù)副本220_2,而數(shù)據(jù)副本220_2被存儲在節(jié)點230_3和230_4上,所以將數(shù)據(jù)副本420劃分為數(shù)據(jù)集421和422,代表被存儲在節(jié)點230_1和230_2上的數(shù)據(jù)副本220_1的兩個部分。
[0057]數(shù)據(jù)副本420的表示形式與數(shù)據(jù)副本410相同,是為數(shù)據(jù)庫數(shù)據(jù)300B創(chuàng)建的另一個不同的數(shù)據(jù)副本,創(chuàng)建數(shù)據(jù)副本420的方法,與創(chuàng)建副本410的方式類似。
[0058]本例中,按照屬性“時間”和“設(shè)備號”對數(shù)據(jù)庫數(shù)據(jù)300B進行多重排序,先按屬性“時間”排序、再按屬性“設(shè)備號”排序,并采用屬性“時間”和“設(shè)備號”的連接“時間_設(shè)備號”,作為行鍵,代替數(shù)據(jù)庫數(shù)據(jù)300B原來的行鍵“設(shè)備號”。例如,數(shù)據(jù)副本420的第一列的“2000.1.1_0001”就是行鍵(設(shè)備號_時間)的值。
[0059]圖4C示意性表示按照本發(fā)明的實施例創(chuàng)建的另一個數(shù)據(jù)副本430。
[0060]這里假設(shè)將數(shù)據(jù)副本430用作圖2所示的數(shù)據(jù)副本220_3,所以將數(shù)據(jù)副本430表示成數(shù)據(jù)集431和432,代表被存儲在節(jié)點230_5和230_6上的數(shù)據(jù)副本220_1的兩個部分。
[0061]本例中,創(chuàng)建430時,只按一個屬性“溫度”對數(shù)據(jù)庫數(shù)據(jù)300B進行排序,并采用該屬性作為行鍵。
[0062]以上參照圖4A-4C描述了數(shù)據(jù)庫數(shù)據(jù)300B的三個數(shù)據(jù)副本410、420、430以及它們的創(chuàng)建方式,這三個數(shù)據(jù)副本是圖2所示的數(shù)據(jù)副本220_1、220_2、220_3的示例。前文在描述按照本發(fā)明實施例的分布式數(shù)據(jù)庫系統(tǒng)200時指出,數(shù)據(jù)副本220_1、220_2、220_3各自都有一個對應(yīng)的索引210_1、210_2、210_3。下面參照圖5,舉例說明這種索引的結(jié)構(gòu)。
[0063]圖5示意性地表示按照本發(fā)明的實施例創(chuàng)建的數(shù)據(jù)副本的索引。圖5中的標(biāo)記510指示的,只是一個對數(shù)據(jù)副本410按照行鍵“設(shè)備號_時間”創(chuàng)建的索引的局部。如圖所示,如圖所示的索引510是一個三層B+樹結(jié)構(gòu)的索引,標(biāo)記511指示的是位于第I層的根節(jié)點,標(biāo)記512指示的是位于第2層的多個中間節(jié)點,標(biāo)記513指示的是位于第3層的多個葉節(jié)點。如圖所示,索引510的每個中間節(jié)點代表數(shù)據(jù)副本的一段數(shù)據(jù)范圍,例如,“0001_2000.1.1-0001_2011.12.31”代表數(shù)據(jù)副本410的行鍵的值在0001_2000.1.1-0001_2011.12.31范圍內(nèi)的的所有數(shù)據(jù)。索引510的每個葉節(jié)點代表磁盤上可可快速定位并讀出的一塊數(shù)據(jù),例如,葉節(jié)點521代表存儲數(shù)據(jù)副本410的計算節(jié)點230_1的磁盤上的一塊數(shù)據(jù)531。利用這樣的B+樹結(jié)構(gòu)的索引,可以為數(shù)據(jù)查詢、插入、更新以及刪除請求快速定位到存儲器中所需的數(shù)據(jù)塊。
[0064]需要指出的,所屬【技術(shù)領(lǐng)域】的技術(shù)人員應(yīng)當(dāng)明白,圖5所示的B+樹索引結(jié)構(gòu),只是一個示例,而不是對本發(fā)明實施例的索引的限制。在實現(xiàn)本發(fā)明各種實施方案,顯然可以采用類似的其它索引結(jié)構(gòu)。
[0065]以上說明描述了按照本發(fā)明實施例的分布式數(shù)據(jù)庫系統(tǒng)200的組成部分以及各種實施方式。
[0066]現(xiàn)在參看圖6,圖6示意性地表示按照本發(fā)明一個實施例的方法的流程圖。
[0067]圖6所示的是一種用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的方法,這里的分布式數(shù)據(jù)庫系統(tǒng)包含多個通過計算機網(wǎng)絡(luò)可通信地耦接的計算節(jié)點。
[0068]本發(fā)明實施例對數(shù)據(jù)庫數(shù)據(jù)的處理,主要涉及配置階段和查詢階段。如圖所示,在本實施例中,在配置階段對分布式數(shù)據(jù)庫數(shù)據(jù)的處理過程,包含步驟610-630。
[0069]假設(shè)一開始,數(shù)據(jù)庫系統(tǒng)管理員已經(jīng)根據(jù)可用的計算資源和應(yīng)用的需求,確定了數(shù)據(jù)副本的數(shù)量和數(shù)據(jù)副本在計算節(jié)點上的配置方案,例如,確定需要三個數(shù)據(jù)副本,這三個數(shù)據(jù)副本將被分配到節(jié)點230_1和230_2、230_3和230_4以及230_5和230_6上。
[0070]在步驟610,為數(shù)據(jù)庫數(shù)據(jù)創(chuàng)建數(shù)據(jù)副本,其中,為數(shù)據(jù)庫數(shù)據(jù)創(chuàng)建多個不同的數(shù)據(jù)副本,其中,以下述方式創(chuàng)建每個數(shù)據(jù)副本:
[0071]對數(shù)據(jù)庫數(shù)據(jù)按照至少一個數(shù)據(jù)屬性進行排序,基于所述至少一個數(shù)據(jù)屬性生成行鍵,將排序后并具有所述行鍵的數(shù)據(jù)庫數(shù)據(jù)作為該數(shù)據(jù)副本
[0072]前文已經(jīng)參照圖4A-4C,舉例說明了為數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)副本的方式,因此,這里不再詳細舉例。
[0073]按照本發(fā)明一個實施例,可以對數(shù)據(jù)庫數(shù)據(jù)按照多個數(shù)據(jù)屬性進行多重排序,在這種情況下,所述基于所述至少一個數(shù)據(jù)屬性生成行鍵,包括將所述多個數(shù)據(jù)屬性的連接作為所述行鍵。
[0074]例如,圖3所示的數(shù)據(jù)庫數(shù)據(jù)300B的行鍵是“設(shè)備號”,通過對數(shù)據(jù)300B按照兩個數(shù)據(jù)屬性“設(shè)備號”和“時間”進行多重排序,并以這兩個屬性的連接“設(shè)備號_時間”作為新的行鍵,代替數(shù)據(jù)300B中原來的行鍵“設(shè)備號”,結(jié)果就生成數(shù)據(jù)副本410。
[0075]本例中是按照兩個屬性“設(shè)備號”和“時間”進行多重排序的,但是本發(fā)明并不限于此,實際上,可以以相同的方式按照三個或更多的屬性進行多重排序。
[0076]當(dāng)然,可以對數(shù)據(jù)庫數(shù)據(jù)按照一個數(shù)據(jù)屬性進行多重排序,在這種情況下,所述行鍵就是該數(shù)據(jù)屬性。
[0077]按照本發(fā)明一個實施例,可以優(yōu)先按照經(jīng)常被查詢的數(shù)據(jù)屬性進行多重排序,以創(chuàng)建數(shù)據(jù)副本。以圖3所示的300B為例,根據(jù)歷史應(yīng)用記錄,“設(shè)備號”、“時間”和“溫度”是經(jīng)常被查詢的屬性,因此可以優(yōu)先挑選屬性“設(shè)備號”和“時間”、“時間”和“溫度”,作為生成數(shù)據(jù)副本時對數(shù)據(jù)300B進行多重排序的根據(jù)。
[0078]在步驟610后,過程前進到步驟620。在步驟620,將不同的數(shù)據(jù)副本存儲到不同的計算節(jié)點。
[0079]例如如圖2所示,將數(shù)據(jù)副本410存儲到計算節(jié)點230_1和230_2。此外,還將數(shù)據(jù)副本420存儲到計算節(jié)點230_3和230_4,將數(shù)據(jù)副本430存儲到計算節(jié)點230_5和230_6。
[0080]在步驟620后,過程前進到步驟630。
[0081]在步驟630,按照行鍵為每個數(shù)據(jù)副本創(chuàng)建索引。例如,按數(shù)據(jù)副本410的行鍵“設(shè)備號_時間”為數(shù)據(jù)副本410創(chuàng)建如圖5所示的索引510。,此外,還以行鍵“時間_設(shè)備號”為數(shù)據(jù)副本420創(chuàng)建索引,以行鍵“溫度”為數(shù)據(jù)副本430創(chuàng)建索引創(chuàng)建索引。以如圖2所示的情形為例,執(zhí)行的步驟630結(jié)果,是為數(shù)據(jù)副本220_1、220_2、220_3分別創(chuàng)建了索引210_1、210_2、210_3。
[0082]所創(chuàng)建的每個索引,記錄了對應(yīng)的數(shù)據(jù)副本中的數(shù)據(jù)項與其在計算節(jié)點中的位置之間的映射關(guān)系。由于數(shù)據(jù)副本中的數(shù)據(jù)排序方式不同,每個數(shù)據(jù)副本對應(yīng)的索引也不同。按照本發(fā)明一個實施例,所創(chuàng)建的每個索引都將被保存起來,例如保存在分布式數(shù)據(jù)庫系統(tǒng)200的一個主控節(jié)點上。
[0083]按照本發(fā)明一個實施例,在為數(shù)據(jù)副本創(chuàng)建索引后,還保存所述索引與存儲其對應(yīng)數(shù)據(jù)副本的計算節(jié)點之間的關(guān)聯(lián)關(guān)系,例如圖5所示的索引510與存儲數(shù)據(jù)副本410的計算節(jié)點230_1和230_2是的關(guān)聯(lián)的,通過所保存的關(guān)聯(lián)關(guān)系,可以方便地確定一個索引的對應(yīng)數(shù)據(jù)副本駐留在哪個或哪些計算節(jié)點上。
[0084]在步驟630之后,配置階段就結(jié)束,分布式數(shù)據(jù)庫系統(tǒng)200進入就緒狀態(tài)。如圖2所示的那樣,此時,在計算節(jié)點230_1和230_2上存儲的數(shù)據(jù)副本220_1,是在步驟620中創(chuàng)建的數(shù)據(jù)副本410,在計算節(jié)點230_3和230_4上存儲的數(shù)據(jù)副本220_2,是在步驟620中創(chuàng)建的是數(shù)據(jù)副本420,在計算節(jié)點230_5和230_6上存儲的數(shù)據(jù)副本220_3,是在步驟620中創(chuàng)建的數(shù)據(jù)副本430,并且保存了在步驟630中創(chuàng)建的索引210_1、210_2和230_3。
[0085]在就緒狀態(tài)下,可以接受來自應(yīng)用的數(shù)據(jù)查詢。如判斷框631所示,按照本發(fā)明的一個實施例,分布式數(shù)據(jù)庫系統(tǒng)200響應(yīng)于接收一個數(shù)據(jù)查詢請求,在與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本上執(zhí)行查詢(650),然后向發(fā)出數(shù)據(jù)查詢請求的應(yīng)用返回查詢結(jié)果(660)。
[0086]由于系統(tǒng)在不同的節(jié)點上存儲有不同排序的數(shù)據(jù)副本,可以視查詢請求中的查詢條件的不同,在與查詢條件相匹配的數(shù)據(jù)副本中進行查詢,以提高查詢速度。
[0087]例如,某查詢請求的查詢式為:
[0088]Select 溫度 where 設(shè)備號=000IAND 2009.1.1 >時間> 2006.1.1 (查詢式I)
[0089]數(shù)據(jù)副本410與查詢式I中的查詢條件“設(shè)備號=0001 AND2009.1.1 >時間>2006.1.1”匹配,因此,在數(shù)據(jù)副本410中進行查詢。
[0090]某查詢請求的查詢式為:
[0091]Select 溫度 where 設(shè)備號=*AND 時間=2011.12.31(查詢式 2)
[0092]數(shù)據(jù)副本420與查詢式2中的查詢條件“設(shè)備號=*AND時間=2011.12.31”匹配,因此,在數(shù)據(jù)副本420中進行查詢。
[0093]某查詢請求的查詢式為:
[0094]Select 濕度 where 溫度> 10(查詢式3)
[0095]數(shù)據(jù)副本430與查詢式3中的查詢條件“溫度> 10”匹配,因此,在數(shù)據(jù)副本430上進行查詢。
[0096]如圖所示,按照本發(fā)明一個實施例,所述在與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本上執(zhí)行查詢的步驟包含以下的步驟641和642。
[0097]在步驟641,計算每個數(shù)據(jù)副本索引的行鍵與數(shù)據(jù)查詢請求的查詢條件的匹配度。
[0098]數(shù)據(jù)副本索引的行鍵與查詢條件的匹配度定義如下:
[0099]匹配度=查詢條件與行鍵包含的相同屬性的數(shù)目/行鍵包含的屬性的數(shù)目,其中,如果查詢條件中包含某屬性A的值的范圍,行鍵中也包含該屬性A,則只有當(dāng)行鍵中屬性A的處于行鍵的末尾,才視為二者是相同的。
[0100]對于查詢式3來說,查詢條件“溫度> 20”包含屬性“溫度”,數(shù)據(jù)副本410的索引的行鍵(設(shè)備號_時間)與查詢條件的匹配度為0,數(shù)據(jù)副本420的索引的行鍵(時間_設(shè)備號)與查詢條件的匹配度為0,數(shù)據(jù)副本430的索引的行鍵(溫度)與查詢條件3的匹配度為I。
[0101]對于查詢式I來說,查詢條件為“Select溫度where設(shè)備號=000IAND 2009.1.1>時間> 2006.1.1”,數(shù)據(jù)副本410的索引的行鍵與查詢條件的匹配度為1,數(shù)據(jù)副本420的索引的行鍵與查詢條件的匹配度為0.5,數(shù)據(jù)副本430的索引的行鍵與查詢條件的匹配度為O。
[0102]對于查詢式2來說,查詢條件為“Select溫度where設(shè)備號=*AND時間=2011.12.31”,對于數(shù)據(jù)副本410的索引的行鍵與查詢條件的匹配度為0.5,數(shù)據(jù)副本420的索引的行鍵與查詢條件的匹配度為I,數(shù)據(jù)副本430的索引的行鍵與查詢條件I的匹配度為O0
[0103]在步驟642,根據(jù)計算結(jié)果確定與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本。
[0104]按照本發(fā)明一個實施例,將與查詢條件的匹配度最大的數(shù)據(jù)副本索引的行鍵對應(yīng)的數(shù)據(jù)副本,確定為與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本。
[0105]例如,根據(jù)步驟641的結(jié)果,在數(shù)據(jù)副本410上執(zhí)行對查詢式I的查詢。在圖2所示的分布式數(shù)據(jù)庫系統(tǒng)200中,這相當(dāng)于要在數(shù)據(jù)副本220_1上執(zhí)行查詢,此時,查詢式I的查詢條件“設(shè)備號=0001 AND2009.1.1 >時間> 2006.1.1”將被轉(zhuǎn)換為查詢條件“0001_2009.1.1 >行鍵 AND 行鍵> 0001_2006.1.1”。參看圖 5,查詢條件“0001_2009.1.1>行鍵AND行鍵> 0001_2006.1.1”與索引510的葉結(jié)點521相符,因此可以很快地定位到在存儲對應(yīng)的數(shù)據(jù)塊531的位置。如果沒有圖5所示的索引,查詢的過程可能更加耗時。因此此例說明,利用按照本發(fā)明實施例創(chuàng)建的數(shù)據(jù)副本和索引,可以提高查詢效率,對于多維查詢和多維范圍查詢來說,效果尤其明顯。
[0106]以類似的方式,在數(shù)據(jù)副本420上執(zhí)行對查詢式2的查詢,在數(shù)據(jù)副本430上執(zhí)行對查詢式3的查詢。
[0107]按照本發(fā)明另一個實施例,對于某個查詢式來說,如果與查詢條件的匹配度最大的數(shù)據(jù)副本的索引的行鍵有多個,則可以在這些行鍵所對應(yīng)的數(shù)據(jù)副本的任何一個中執(zhí)行查詢。
[0108]在就緒狀態(tài)下,也可以對分布式數(shù)據(jù)庫進行數(shù)據(jù)更新。按照本發(fā)明一個實施例,響應(yīng)于接收到一個數(shù)據(jù)更新請求,更新每個數(shù)據(jù)副本和每個數(shù)據(jù)副本的索引。數(shù)據(jù)副本和索引的更新,可以按照采用現(xiàn)有技術(shù)中已有的對分布式數(shù)據(jù)庫進行數(shù)據(jù)更新的方式進行,這里無需贅述。
[0109]以上說明了本發(fā)明用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的方法的各種實施方式。按照同一個發(fā)明構(gòu)思,本發(fā)明也提供用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的裝置。
[0110]圖7示意性表示按照本發(fā)明一個實施例的用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的裝置700。
[0111]本發(fā)明實施例所應(yīng)用的分布式數(shù)據(jù)庫系統(tǒng)200,包含多個通過計算機網(wǎng)絡(luò)可通信地耦接的計算節(jié)點。如圖7所示,裝置700包含數(shù)據(jù)副本創(chuàng)建模塊710、副本存儲模塊720和索引創(chuàng)建模塊730。下面簡述各模塊的功能和各種實施方式。
[0112]數(shù)據(jù)副本創(chuàng)建模塊710,被配置得用于為數(shù)據(jù)庫數(shù)據(jù)創(chuàng)建多個不同的數(shù)據(jù)副本,其中,以下述方式創(chuàng)建每個數(shù)據(jù)副本:對數(shù)據(jù)庫數(shù)據(jù)按照至少一個數(shù)據(jù)屬性進行排序,基于所述至少一個數(shù)據(jù)屬性生成行鍵,將排序后并具有所述行鍵的數(shù)據(jù)庫數(shù)據(jù)作為該數(shù)據(jù)副本。
[0113]副本存儲模塊720被配置得用于將不同的數(shù)據(jù)副本存儲到不同的計算節(jié)點。
[0114]索引創(chuàng)建模塊730被配置得用于按照行鍵為每個數(shù)據(jù)副本創(chuàng)建索引。
[0115]按照本發(fā)明一個實施例,數(shù)據(jù)副本創(chuàng)建模塊710被配置得用于對數(shù)據(jù)庫數(shù)據(jù)按照多個數(shù)據(jù)屬性進行多重排序,并將所述多個數(shù)據(jù)屬性的連接作為所述行鍵。
[0116]按照本發(fā)明一個實施例,裝置700還包含用于保存所述索引的模塊(未予示出)。
[0117]按照本發(fā)明一個實施例,裝置700還包含用于保存所述索引與存儲其對應(yīng)數(shù)據(jù)副本的計算節(jié)點之間的關(guān)聯(lián)關(guān)系的模塊(未予示出)。
[0118]按照本發(fā)明一個實施例,裝置700還包含查詢模塊750,其被配置得用于響應(yīng)于接收一個數(shù)據(jù)查詢請求,在與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本上執(zhí)行查詢。
[0119]按照本發(fā)明一個實施例,裝置700還包含匹配模塊740,其被配置得用于計算每個數(shù)據(jù)副本索引的行鍵與數(shù)據(jù)查詢請求中的查詢條件的匹配度;以及根據(jù)計算結(jié)果確定與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本。
[0120]按照本發(fā)明一個實施例,所述匹配模塊被配置得用于將與查詢條件的匹配度最大的數(shù)據(jù)副本索引的行鍵對應(yīng)的數(shù)據(jù)副本,確定為與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本。
[0121]按照本發(fā)明一個實施例,裝置700進一步包含數(shù)據(jù)更新模塊(未予示出),其被配置得用于響應(yīng)于接收到一個數(shù)據(jù)更新請求,更新每個數(shù)據(jù)副本和每個數(shù)據(jù)副本的索引。
[0122]以上描述了用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的裝置的各種實施方式,由于上文已經(jīng)描述了用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的方法,在對裝置的說明中,省略了一些與在對用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的方法的描述中重復(fù)的內(nèi)容。
[0123]本發(fā)明各實施例利用分布式數(shù)據(jù)庫系統(tǒng)的冗余性,在多個計算節(jié)點上配置不同的數(shù)據(jù)副本,有助于提高查詢效率,尤其是多維數(shù)據(jù)查詢的效率。
[0124]以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的改進,或者使本【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能理解本文披露的各實施例。
【權(quán)利要求】
1.一種用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的方法,其中,分布式數(shù)據(jù)庫系統(tǒng)包含多個通過計算機網(wǎng)絡(luò)可通信地耦接的計算節(jié)點,該方法包含: 為數(shù)據(jù)庫數(shù)據(jù)創(chuàng)建多個不同的數(shù)據(jù)副本,其中,以下述方式創(chuàng)建每個數(shù)據(jù)副本: 對數(shù)據(jù)庫數(shù)據(jù)按照至少一個數(shù)據(jù)屬性進行排序,基于所述至少一個數(shù)據(jù)屬性生成行鍵,將排序后并具有所述行鍵的數(shù)據(jù)庫數(shù)據(jù)作為該數(shù)據(jù)副本; 將不同的數(shù)據(jù)副本存儲到不同的計算節(jié)點; 按照行鍵為每個數(shù)據(jù)副本創(chuàng)建索引。
2.權(quán)利要求1的方法,其中,所述對數(shù)據(jù)庫數(shù)據(jù)按照至少一個數(shù)據(jù)屬性進行排序,包括對數(shù)據(jù)庫數(shù)據(jù)按照多個數(shù)據(jù)屬性進行多重排序,所述基于所述至少一個數(shù)據(jù)屬性生成行鍵,包括將所述多個數(shù)據(jù)屬性的連接作為所述行鍵。
3.權(quán)利要求1或2的方法,進一步包含:保存所述索引以及與所述索引與存儲其對應(yīng)數(shù)據(jù)副本的計算節(jié)點之間的關(guān)聯(lián)關(guān)系。
4.權(quán)利要求3的方法,進一步包含響應(yīng)于接收一個數(shù)據(jù)查詢請求,在與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本上執(zhí)行查詢。
5.權(quán)利要求4的方法,進一步包含: 計算每個數(shù)據(jù)副本索引的行鍵與數(shù)據(jù)查詢請求中的查詢條件的匹配度; 根據(jù)計算結(jié)果確定與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本。
6.權(quán)利要求5的方法,其中,將與查詢條件的匹配度最大的數(shù)據(jù)副本索引的行鍵對應(yīng)的數(shù)據(jù)副本,確定為與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本。
7.權(quán)利要求1的方法,進一步包含,響應(yīng)于接收到一個數(shù)據(jù)更新請求,更新每個數(shù)據(jù)副本和每個數(shù)據(jù)副本的索引。
8.權(quán)利要求1的方法,其中,所述數(shù)據(jù)庫數(shù)據(jù)是非關(guān)系性數(shù)據(jù)庫數(shù)據(jù)。
9.一種用于在分布式數(shù)據(jù)庫系統(tǒng)中處理數(shù)據(jù)庫數(shù)據(jù)的裝置,其中,分布式數(shù)據(jù)庫系統(tǒng)包含多個通過計算機網(wǎng)絡(luò)可通信地耦接的計算節(jié)點,該裝置包含: 數(shù)據(jù)副本創(chuàng)建模塊,被配置得用于為數(shù)據(jù)庫數(shù)據(jù)創(chuàng)建多個不同的數(shù)據(jù)副本,其中,以下述方式創(chuàng)建每個數(shù)據(jù)副本:對數(shù)據(jù)庫數(shù)據(jù)按照至少一個數(shù)據(jù)屬性進行排序,基于所述至少一個數(shù)據(jù)屬性生成行鍵,將排序后并具有所述行鍵的數(shù)據(jù)庫數(shù)據(jù)作為該數(shù)據(jù)副本; 副本存儲模塊,被配置得用于將不同的數(shù)據(jù)副本存儲到不同的計算節(jié)點; 索引創(chuàng)建模塊,被配置得用于按照行鍵為每個數(shù)據(jù)副本創(chuàng)建索引。
10.權(quán)利要求9的裝置,其中,數(shù)據(jù)副本創(chuàng)建模塊被配置得用于對數(shù)據(jù)庫數(shù)據(jù)按照多個數(shù)據(jù)屬性進行多重排序,并將所述多個數(shù)據(jù)屬性的連接作為所述行鍵。 權(quán)利要求11的裝置,其中,數(shù)據(jù)副本創(chuàng)建模塊被配置得用于為數(shù)據(jù)庫數(shù)據(jù)創(chuàng)建多個不同的數(shù)據(jù)副本。 權(quán)利要求13的裝置,其中,副本存儲模塊被配置得用于將多個不同的數(shù)據(jù)副本分別存儲到不同的計算節(jié)點。
11.權(quán)利要求9或10的裝置,進一步包含用于保存所述索引以及所述索引與存儲其對應(yīng)數(shù)據(jù)副本的計算節(jié)點之間的關(guān)聯(lián)關(guān)系的模塊。
12.權(quán)利要求11的裝置,進一步包含: 查詢模塊,被配置得用于響應(yīng)于接收一個數(shù)據(jù)查詢請求,在與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本上執(zhí)行查詢。
13.權(quán)利要求12的裝置,進一步包含一個匹配模塊,其被配置得用于: 計算每個數(shù)據(jù)副本索引的行鍵與數(shù)據(jù)查詢請求中的查詢條件的匹配度; 根據(jù)計算結(jié)果確定與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本。
14.權(quán)利要求13的裝置,其中,所述匹配模塊將與查詢條件的匹配度最大的數(shù)據(jù)副本索引的行鍵對應(yīng)的數(shù)據(jù)副本,確定為與數(shù)據(jù)查詢請求匹配的數(shù)據(jù)副本。
15.權(quán)利要求9的裝置,進一步包含數(shù)據(jù)更新模塊,其被配置得用于響應(yīng)于接收到一個數(shù)據(jù)更新請求,更新每個數(shù)據(jù)副本和每個數(shù)據(jù)副本的索引。
16.權(quán)利要求9的裝置`,其中,所述數(shù)據(jù)庫數(shù)據(jù)是非關(guān)系性數(shù)據(jù)庫數(shù)據(jù)。
【文檔編號】G06F17/30GK103514229SQ201210226720
【公開日】2014年1月15日 申請日期:2012年6月29日 優(yōu)先權(quán)日:2012年6月29日
【發(fā)明者】鄒嘉, 楊博, 史巨偉, 王鯤, 陳冠誠 申請人:國際商業(yè)機器公司