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

分布式數(shù)據(jù)庫非分片字段的查詢方法、系統(tǒng)和設(shè)備與流程

文檔序號:12550670閱讀:491來源:國知局
分布式數(shù)據(jù)庫非分片字段的查詢方法、系統(tǒng)和設(shè)備與流程

本發(fā)明涉及分布式數(shù)據(jù)庫技術(shù)領(lǐng)域,特別涉及一種分布式數(shù)據(jù)庫非分片字段的查詢方法、系統(tǒng)和設(shè)備。



背景技術(shù):

在傳統(tǒng)集中式的數(shù)據(jù)庫中,數(shù)據(jù)庫表都在一個數(shù)據(jù)庫中。如果數(shù)據(jù)量很大,一個數(shù)據(jù)庫無法容納,需要把一個集中數(shù)據(jù)庫拆成多個分布式數(shù)據(jù)庫。在分布式的數(shù)據(jù)庫中,通過主鍵進(jìn)行分庫分表,實現(xiàn)數(shù)據(jù)庫的分布式處理。

如果數(shù)據(jù)量很大,一個Oracle數(shù)據(jù)庫無法容納,需要把一個集中數(shù)據(jù)庫拆成兩個分布式數(shù)據(jù)庫。例如,如圖2和圖3所示,對customer、order表按照cust_id取模2,奇數(shù)在DB1,偶數(shù)在DB2。cust_id是分片字段,order_id是非分片字段,如果此時按照order_id查詢orders表,無法定位是DB1,還是DB2,系統(tǒng)只能把這條sql語句發(fā)送給所有的分片節(jié)點,若查詢order_id=r1,由于order_id=r1實際在DB1中,因此發(fā)送到DB2的查詢屬于無效查詢,會浪費(fèi)資源。

由于互聯(lián)網(wǎng)公司業(yè)務(wù)相對來說簡單一些,第一次執(zhí)行查詢的時候,會把非分片字段的sql發(fā)送給所有節(jié)點,執(zhí)行完成后,根據(jù)結(jié)果,緩存非分片字段和節(jié)點的關(guān)系,也就是非分片字段和分片主鍵的關(guān)系。再次執(zhí)行查詢時,根據(jù)緩存的關(guān)系,找到具體節(jié)點去執(zhí)行,而不是向所有節(jié)點廣播執(zhí)行。對于數(shù)據(jù)模型復(fù)雜、熱點數(shù)據(jù)分布不均的情況,如果采用此方法,內(nèi)存消耗很大,代價極高。



技術(shù)實現(xiàn)要素:

本發(fā)明實施例所要解決的一個技術(shù)問題是:如何克服分布式數(shù)據(jù)庫 非分片字段的查詢內(nèi)存消耗很大,代價極高的問題,使得分布式數(shù)據(jù)庫非分片字段的查詢快速有效進(jìn)行。

根據(jù)本發(fā)明實施例的一個方面,提供了一種分布式數(shù)據(jù)庫非分片字段的查詢方法,包括:客戶端向全局索引庫查詢非分片字段的索引信息;客戶端接收全局索引庫返回的非分片字段的索引信息,其中,非分片字段的索引信息為非分片字段所在的分布式數(shù)據(jù)庫的信息或者非分片字段對應(yīng)的分片主鍵;如果接收的非分片字段的索引信息為非分片字段所在的分布式數(shù)據(jù)庫的信息,客戶端向非分片字段所在的分布式數(shù)據(jù)庫查詢非分片字段的信息;或者,如果接收的非分片字段的索引信息為非分片字段對應(yīng)的分片主鍵,客戶端根據(jù)非分片字段對應(yīng)的分片主鍵確定非分片字段所在的分布式數(shù)據(jù)庫,并向非分片字段所在的分布式數(shù)據(jù)庫查詢非分片字段的信息。

根據(jù)本發(fā)明實施例的另一個方面,提供了一種分布式數(shù)據(jù)庫非分片字段的查詢客戶端,包括:索引信息查詢模塊,用于向全局索引庫查詢非分片字段的索引信息;索引信息接收模塊,用于接收全局索引庫返回的非分片字段的索引信息,其中,非分片字段的索引信息為非分片字段所在的分布式數(shù)據(jù)庫的信息或者非分片字段對應(yīng)的分片主鍵;內(nèi)容查詢模塊,用于如果接收的非分片字段的索引信息為非分片字段所在的分布式數(shù)據(jù)庫的信息,向非分片字段所在的分布式數(shù)據(jù)庫查詢非分片字段的信息;如果接收的非分片字段的索引信息為非分片字段對應(yīng)的分片主鍵,根據(jù)非分片字段對應(yīng)的分片主鍵確定非分片字段所在的分布式數(shù)據(jù)庫,并用于向非分片字段所在的分布式數(shù)據(jù)庫查詢非分片字段的信息。

根據(jù)本發(fā)明實施例的又一個方面,提供了一種分布式數(shù)據(jù)庫非分片字段的索引服務(wù)器,包括:數(shù)據(jù)庫日志獲取模塊,用于從各個分布式數(shù)據(jù)庫獲取客戶端向分布式數(shù)據(jù)庫寫入業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)庫日志;數(shù)據(jù)庫日志分析模塊,用于根據(jù)數(shù)據(jù)庫日志得到非分片字段的對應(yīng)信息,對應(yīng)信息包括非分片字段對應(yīng)的分片主鍵以及所在的分布式數(shù)據(jù)庫中的至少一項信息;全局索引庫寫操作模塊,用于將非分片字段及其對 應(yīng)信息作為全局索引寫入全局索引庫。

根據(jù)本發(fā)明實施例的又一個方面,提供了一種分布式數(shù)據(jù)庫非分片字段的索引稽核模塊,包括:索引隊列獲取單元,用于從各個客戶端獲取寫入業(yè)務(wù)數(shù)據(jù)相關(guān)的索引隊列,索引隊列包括非分片字段,還包括非分片字段對應(yīng)的分片主鍵以及所在的分布式數(shù)據(jù)庫中的至少一項信息;比對稽核單元,用于將各個客戶端的索引隊列與全局索引庫中存儲的全局索引進(jìn)行比對和稽核。

根據(jù)本發(fā)明實施例的再一個方面,提供了一種分布式數(shù)據(jù)庫非分片字段的索引系統(tǒng),包括上述的查詢客戶端、上述的索引服務(wù)器。

根據(jù)本發(fā)明實施例的再一個方面,提供了一種分布式數(shù)據(jù)庫非分片字段的索引系統(tǒng),包括上述的查詢客戶端、上述的索引服務(wù)器以及上述的索引稽核模塊。

本發(fā)明至少具有以下優(yōu)點:

通過全局索引定位非分片字段所在的分布式數(shù)據(jù)庫,然后向定位的分布式數(shù)據(jù)庫發(fā)起非分片字段相關(guān)內(nèi)容的查詢,解決了在分布式數(shù)據(jù)庫非分片字段的查詢中代價極高的問題,使得分布式數(shù)據(jù)庫非分片字段的查詢更加快速有效。

通過以下參照附圖對本發(fā)明的示例性實施例的詳細(xì)描述,本發(fā)明的其它特征及其優(yōu)點將會變得清楚。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的查詢方法的一個實施例的流程示意圖。

圖2示出本發(fā)明兩個數(shù)據(jù)表Customer和Orders的示意圖。

圖3示出本發(fā)明前述兩個數(shù)據(jù)表的分布式數(shù)據(jù)庫示意圖。

圖4示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的查詢方法的全局索引庫的建立過程示意圖及全局索引數(shù)據(jù)稽核的流程示意圖。

圖5示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的查詢客戶端的一個實施例的結(jié)構(gòu)示意圖。

圖6示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的索引服務(wù)器的一個實施例的結(jié)構(gòu)示意圖。

圖7示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的索引服務(wù)器的另一個實施例的結(jié)構(gòu)示意圖。

圖8示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的索引稽核模塊的一個實施例的結(jié)構(gòu)示意圖。

圖9示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的索引系統(tǒng)的一個實施例的結(jié)構(gòu)示意圖。

圖10示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的索引系統(tǒng)的另一個實施例的結(jié)構(gòu)示意圖。

具體實施方式

下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使用的任何限制。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。

下面結(jié)合圖1描述本發(fā)明一個實施例的分布式數(shù)據(jù)庫非分片字段的查詢方法。

圖1示出根據(jù)本發(fā)明分布式數(shù)據(jù)庫非分片字段的查詢方法的一個實施例的流程示意圖。如圖1所示,該實施例的方法包括:

步驟S102,客戶端向全局索引庫查詢非分片字段的索引信息。

其中,集中數(shù)據(jù)庫根據(jù)分片主鍵可以拆分成幾個分布式數(shù)據(jù)庫, 分片主鍵之外的其他字段則為非分片字段,通過非分片字段無法定位其所在的分布式數(shù)據(jù)庫。

步驟S104,客戶端接收全局索引庫返回的非分片字段的索引信息,其中,非分片字段的索引信息為非分片字段所在的分布式數(shù)據(jù)庫的信息或者非分片字段對應(yīng)的分片主鍵。

如果接收的非分片字段的索引信息為非分片字段所在的分布式數(shù)據(jù)庫的信息,則執(zhí)行步驟S108,即,客戶端向非分片字段所在的分布式數(shù)據(jù)庫查詢非分片字段的信息。

如果接收的非分片字段的索引信息為非分片字段對應(yīng)的分片主鍵,則執(zhí)行步驟S106,即,客戶端根據(jù)非分片字段對應(yīng)的分片主鍵確定非分片字段所在的分布式數(shù)據(jù)庫,然后再執(zhí)行步驟S108,即,客戶端向非分片字段所在的分布式數(shù)據(jù)庫查詢非分片字段的信息。

下面對根據(jù)分片主鍵確定非分片字段所在的分布式數(shù)據(jù)庫進(jìn)行舉例說明。例如,若數(shù)據(jù)表按照分片主鍵取模2進(jìn)行分布式拆分,奇數(shù)在DB1,偶數(shù)在DB2,那么在獲知非分片字段對應(yīng)的分片主鍵后,根據(jù)分片主鍵的拆分方法,對分片主鍵取模2,若是奇數(shù),則非分片字段及其分片主鍵在DB1,若是偶數(shù),則非分片字段及其分片主鍵在DB2。

下面結(jié)合圖2和圖3描述一個分布式數(shù)據(jù)庫非分片字段的查詢示例。圖2示出本發(fā)明兩個數(shù)據(jù)表Customer和Orders的示意圖。圖3示出本發(fā)明前述兩個數(shù)據(jù)表的分布式數(shù)據(jù)庫示意圖。圖2是一個集中數(shù)據(jù)庫,其中存儲著例如數(shù)據(jù)表Customer和Orders,如果數(shù)據(jù)量很大,需要把一個集中數(shù)據(jù)庫拆成兩個分布式數(shù)據(jù)庫,即對customer、order表按照cust_id取模2,奇數(shù)存放在DB1分片節(jié)點,偶數(shù)在DB2分片節(jié)點。按照現(xiàn)有技術(shù),如果此時按照order_id查詢orders表,order_id是非分片字段,無法定位是DB1分片節(jié)點還是DB2分片節(jié)點,系統(tǒng)只能把這條sql語句發(fā)送給所有的分片節(jié)點。

按照本發(fā)明的方案,在查詢示例中,首先客戶端向全局索引庫查詢非分片字段r1的索引信息。然后,客戶端接收全局索引庫返回的非分片字段r1所在的分布式數(shù)據(jù)庫的信息DB1或者非分片字段對應(yīng)的分片主 鍵c1。如果接收的非分片字段的索引信息為非分片字段r1所在的分布式數(shù)據(jù)庫的信息DB1,則客戶端向非分片字段r1所在的分布式數(shù)據(jù)庫DB1查詢非分片字段r1的信息;如果接收的非分片字段的索引信息為非分片字段對應(yīng)的分片主鍵c1,客戶端根據(jù)非分片字段對應(yīng)的分片主鍵c1取模2是奇數(shù),可以確定在分布式數(shù)據(jù)庫DB1,可以通過SQL(結(jié)構(gòu)化查詢語言)向非分片字段r1所在的分布式數(shù)據(jù)庫DB1查詢非分片字段r1的信息。

通過上述方法,解決了在分布式數(shù)據(jù)庫非分片字段的查詢中代價極高的問題,使得分布式數(shù)據(jù)庫非分片字段的查詢快速有效進(jìn)行。

下面結(jié)合圖4描述全局索引庫的建立過程。

圖4示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的查詢方法的全局索引庫的建立過程示意圖。如圖4所示,在上述實施例的基礎(chǔ)上,本實施例的方法還包括:

步驟S4012,索引服務(wù)器從各個分布式數(shù)據(jù)庫獲取業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)庫日志;

一種示例性的方法,把索引服務(wù)器偽裝成各個分布式數(shù)據(jù)庫(或稱,分片節(jié)點)的從服務(wù)器,截取分片節(jié)點的數(shù)據(jù)庫日志,并根據(jù)配置好的索引模型,異步建立全局索引庫,對應(yīng)用層和數(shù)據(jù)庫都透明,無需改動任何客戶端代碼和mysql的部署架構(gòu)。

步驟S4014,索引服務(wù)器根據(jù)數(shù)據(jù)庫日志得到非分片字段的對應(yīng)信息,對應(yīng)信息包括非分片字段對應(yīng)的分片主鍵以及所在的分布式數(shù)據(jù)庫中的至少一項信息;

步驟S4016,索引服務(wù)器將非分片字段及其對應(yīng)信息作為全局索引寫入全局索引庫。

上述方法在執(zhí)行步驟S102之前,先通過索引服務(wù)器建立全局索引庫,以便于客戶端對非分片字段進(jìn)行查詢。

下面結(jié)合圖4描述本發(fā)明全局索引數(shù)據(jù)稽核的情形。

圖4還示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的查詢方法的全局索引數(shù)據(jù)稽核的流程示意圖。如圖4所示,在上述實施例的基礎(chǔ)上, 本實施例的方法進(jìn)一步包括:

步驟S410,稽核模塊從各個客戶端獲取寫入業(yè)務(wù)數(shù)據(jù)相關(guān)的索引隊列,索引隊列包括非分片字段,還包括非分片字段對應(yīng)的分片主鍵以及所在的分布式數(shù)據(jù)庫中的至少一項信息。

步驟S412,稽核模塊將各個客戶端的索引隊列與全局索引庫中存儲的全局索引進(jìn)行比對和稽核。

仍以圖3中所示的內(nèi)容為例,索引稽核模塊從各個客戶端獲取寫入業(yè)務(wù)數(shù)據(jù)相關(guān)的索引隊列,索引隊列包括非分片字段r1,還包括非分片字段r1對應(yīng)的分片主鍵c1以及所在的分布式數(shù)據(jù)庫中DB1中的的至少一項信息。然后,索引稽核模塊將各個客戶端的索引隊列與全局索引庫中存儲的全局索引進(jìn)行比對和稽核。如果各個客戶端的索引隊列與全局索引庫中存儲的全局索引一致,則索引稽核模塊認(rèn)定全局索引庫中存儲的全局索引是正確的,無需對全局索引進(jìn)行調(diào)整。如果如果各個客戶端的索引隊列與全局索引庫中存儲的全局索引不一致,則索引稽核模塊認(rèn)定全局索引庫中存儲的全局索引有誤,索引稽核模塊可以通知索引服務(wù)器重新建立全局索引有誤的部分,或者索引稽核模塊通知索引服務(wù)器對全局索引有誤的部分進(jìn)行更新。

通過將全局索引庫和客戶端的寫入業(yè)務(wù)數(shù)據(jù)相關(guān)的索引隊列進(jìn)行比對稽核,可以保證索引的完整性和一致性。

下面結(jié)合圖5描述本發(fā)明一個實施例的分布式數(shù)據(jù)庫非分片字段的查詢客戶端。

圖5示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的查詢客戶端的一個實施例的結(jié)構(gòu)示意圖。如圖5所示,該實施例的分布式數(shù)據(jù)庫非分片字段的查詢客戶端50包括:

索引信息查詢模塊502,用于向全局索引庫查詢非分片字段的索引信息;

索引信息接收模塊504,用于接收全局索引庫返回的非分片字段的索引信息,其中,非分片字段的索引信息為非分片字段所在的分布式數(shù)據(jù)庫的信息或者非分片字段對應(yīng)的分片主鍵;

內(nèi)容查詢模塊506,用于如果接收的非分片字段的索引信息為非分片字段所在的分布式數(shù)據(jù)庫的信息,向非分片字段所在的分布式數(shù)據(jù)庫查詢非分片字段的信息;如果接收的非分片字段的索引信息為非分片字段對應(yīng)的分片主鍵,根據(jù)非分片字段對應(yīng)的分片主鍵確定非分片字段所在的分布式數(shù)據(jù)庫,并用于向非分片字段所在的分布式數(shù)據(jù)庫查詢非分片字段的信息。

下面結(jié)合圖6描述本發(fā)明一個實施例的分布式數(shù)據(jù)庫非分片字段的索引服務(wù)器。

圖6示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的索引服務(wù)器的一個實施例的結(jié)構(gòu)示意圖。如圖6所示,該實施例的分布式數(shù)據(jù)庫非分片字段的索引服務(wù)器60包括:

數(shù)據(jù)庫日志獲取模塊602,用于從各個分布式數(shù)據(jù)庫獲取客戶端向分布式數(shù)據(jù)庫寫入業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)庫日志;

數(shù)據(jù)庫日志分析模塊604,用于根據(jù)數(shù)據(jù)庫日志得到非分片字段的對應(yīng)信息,對應(yīng)信息包括非分片字段對應(yīng)的分片主鍵以及所在的分布式數(shù)據(jù)庫中的至少一項信息;

全局索引庫寫操作模塊606,用于將非分片字段及其對應(yīng)信息作為全局索引寫入全局索引庫。

下面結(jié)合圖7描述本發(fā)明另一個實施例的分布式數(shù)據(jù)庫非分片字段的索引服務(wù)器。

圖7示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的索引服務(wù)器的另一個實施例的結(jié)構(gòu)示意圖。如圖7所示,該實施例的分布式數(shù)據(jù)庫非分片字段的索引服務(wù)器60還包括:

索引稽核模塊708,用于從各個客戶端獲取寫入業(yè)務(wù)數(shù)據(jù)相關(guān)的索引隊列,索引隊列包括非分片字段,還包括非分片字段對應(yīng)的分片主鍵以及所在的分布式數(shù)據(jù)庫中的至少一項信息;并用于將各個客戶端的索引隊列與全局索引庫中存儲的全局索引進(jìn)行比對和稽核。

下面結(jié)合圖8描述本發(fā)明另一個實施例的分布式數(shù)據(jù)庫非分片字段的索引稽核模塊。

圖8示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的索引稽核模塊的一個實施例的結(jié)構(gòu)示意圖。如圖8所示,該實施例的分布式數(shù)據(jù)庫非分片字段的索引稽核模塊80包括:

索引隊列獲取單元802,用于從各個客戶端獲取寫入業(yè)務(wù)數(shù)據(jù)相關(guān)的索引隊列,索引隊列包括非分片字段,還包括非分片字段對應(yīng)的分片主鍵以及所在的分布式數(shù)據(jù)庫中的至少一項信息;

比對稽核單元804,用于將各個客戶端的索引隊列與全局索引庫中存儲的全局索引進(jìn)行比對和稽核。

下面結(jié)合圖9描述本發(fā)明另一個實施例的分布式數(shù)據(jù)庫非分片字段的索引系統(tǒng)。

圖9示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的索引系統(tǒng)的一個實施例的結(jié)構(gòu)示意圖。如圖9所示,該實施例的分布式數(shù)據(jù)庫非分片字段的索引系統(tǒng)90包括分布式數(shù)據(jù)庫非分片字段的查詢客戶端50、分布式數(shù)據(jù)庫非分片字段的索引服務(wù)器60或70。

下面結(jié)合圖10描述本發(fā)明另一個實施例的分布式數(shù)據(jù)庫非分片字段的索引系統(tǒng)。

圖10示出本發(fā)明分布式數(shù)據(jù)庫非分片字段的索引系統(tǒng)的另一個實施例的結(jié)構(gòu)示意圖。如圖10所示,在圖9所示實施例的基礎(chǔ)上,本實施例的分布式數(shù)據(jù)庫非分片字段的索引系統(tǒng)還包括分布式數(shù)據(jù)庫非分片字段的索引稽核模塊80。

本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。

以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
寻乌县| 龙井市| 隆林| 武鸣县| 巫溪县| 全椒县| 习水县| 图们市| 朝阳县| 抚远县| 门源| 武冈市| 乐昌市| 乌兰县| 通江县| 莒南县| 高台县| 绥棱县| 博乐市| 都江堰市| 萨迦县| 吉林市| 上栗县| 嘉兴市| 荆门市| 衡阳县| 资阳市| 潜山县| 萝北县| 白山市| 伊吾县| 宝丰县| 无极县| 丰顺县| 怀宁县| 吕梁市| 临江市| 玉林市| 利辛县| 庐江县| 鄂伦春自治旗|