亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法及裝置與流程

文檔序號(hào):11261999閱讀:197來(lái)源:國(guó)知局
海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法及裝置與流程

本發(fā)明涉及一種數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其涉及一種海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法及裝置。



背景技術(shù):

目前,當(dāng)前互聯(lián)網(wǎng)快速發(fā)展的時(shí)代,對(duì)于大型應(yīng)用系統(tǒng),隨著業(yè)務(wù)的訪問(wèn)量增大,面向服務(wù)的治理能力,系統(tǒng)的瓶頸已經(jīng)不再服務(wù)層,海量數(shù)據(jù)的存儲(chǔ)和訪問(wèn)成為了系統(tǒng)設(shè)計(jì)的瓶頸問(wèn)題。隨著企業(yè)業(yè)務(wù)的增長(zhǎng),訪問(wèn)量和用戶等數(shù)據(jù)的增加,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)已經(jīng)難以滿足需求。傳統(tǒng)的數(shù)據(jù)庫(kù)服務(wù)存儲(chǔ)量小,并且數(shù)據(jù)庫(kù)連接數(shù)有限;無(wú)法有效地提供高并發(fā)訪問(wèn)等難題。而采用多數(shù)據(jù)庫(kù)勢(shì)必會(huì)提高應(yīng)用開發(fā)采用的復(fù)雜度。

有鑒于此,有必要提出對(duì)目前的數(shù)據(jù)庫(kù)技術(shù)進(jìn)行進(jìn)一步的改進(jìn)。



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

為解決上述至少一技術(shù)問(wèn)題,本發(fā)明的主要目的是提供一種海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法。

為實(shí)現(xiàn)上述目的,本發(fā)明采用的一個(gè)技術(shù)方案為:提供一種海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法,所述數(shù)據(jù)庫(kù)配置有分庫(kù)分表中間件,所述分庫(kù)分表中間件由基于多mysql數(shù)據(jù)庫(kù)實(shí)例分庫(kù)分表構(gòu)建而成,該海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法,包括如下步驟:

獲取調(diào)用分庫(kù)分表中間件的數(shù)據(jù)調(diào)用請(qǐng)求,其中,所述數(shù)據(jù)調(diào)用請(qǐng)求中包含sql調(diào)用數(shù)據(jù);

對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行解析,得到sql調(diào)用數(shù)據(jù);

根據(jù)對(duì)分庫(kù)分表中間件預(yù)設(shè)的分片算法,計(jì)算出sql調(diào)用數(shù)據(jù)的分片路由;

根據(jù)分片的會(huì)話狀態(tài)及事務(wù)狀態(tài)獲取后端數(shù)據(jù)庫(kù)的鏈接;以及

調(diào)用指定mysql數(shù)據(jù)庫(kù)實(shí)例,以并發(fā)執(zhí)行sql操作。

在一些實(shí)施例中,所述獲取調(diào)用數(shù)據(jù)庫(kù)分庫(kù)分表中間件的數(shù)據(jù)調(diào)用請(qǐng)求的步驟之后,還包括:

根據(jù)sql協(xié)議對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行協(xié)議解析,并對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行鑒權(quán)處理。

在一些實(shí)施例中,所述根據(jù)對(duì)分庫(kù)分表中間件預(yù)設(shè)的分片算法,計(jì)算出sql調(diào)用數(shù)據(jù)的分片路由的步驟之后,還包括:

獲取廣播語(yǔ)句路由索引,并計(jì)算出sql調(diào)用數(shù)據(jù)的二次分片路由。

在一些實(shí)施例中,所述調(diào)用指定mysql數(shù)據(jù)庫(kù)實(shí)例,以并發(fā)執(zhí)行sql操作的步驟之后,還包括:

匯聚多個(gè)路由節(jié)點(diǎn)的結(jié)果,并根據(jù)匯聚結(jié)果重新歸納出匯聚函數(shù)或匯聚關(guān)鍵字。

在一些實(shí)施例中,所述匯聚多路由節(jié)點(diǎn)的結(jié)果,并根據(jù)匯聚結(jié)果重新歸納出匯聚函數(shù)或匯聚關(guān)鍵字的步驟之后,還包括:

監(jiān)控mysql數(shù)據(jù)庫(kù)產(chǎn)生的binlog日志文件是否更新,

當(dāng)監(jiān)控到binlog日志文件有更新時(shí),獲取并解析最近更新的binlog日志文件,以及

更新路由索引數(shù)據(jù)。。

為實(shí)現(xiàn)上述目的,本發(fā)明采用的另一個(gè)技術(shù)方案為:提供一種海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,所述數(shù)據(jù)庫(kù)配置有分庫(kù)分表中間件,所述分庫(kù)分表中間件由基于多mysql數(shù)據(jù)庫(kù)實(shí)例分庫(kù)分表構(gòu)建而成,該海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,包括:

獲取模塊,用于獲取調(diào)用分庫(kù)分表中間件的數(shù)據(jù)調(diào)用請(qǐng)求,其中,所述數(shù)據(jù)調(diào)用請(qǐng)求中包含sql調(diào)用數(shù)據(jù);

解析模塊,用于對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行解析,得到sql調(diào)用數(shù)據(jù);

第一計(jì)算模塊,用于根據(jù)對(duì)分庫(kù)分表中間件預(yù)設(shè)的分片算法,計(jì)算出sql調(diào)用數(shù)據(jù)的分片路由;

建立模塊,用于根據(jù)分片的會(huì)話狀態(tài)及事務(wù)狀態(tài)獲取后端數(shù)據(jù)庫(kù)的鏈接;以及

調(diào)用執(zhí)行模塊,用于調(diào)用指定mysql數(shù)據(jù)庫(kù)實(shí)例,以并發(fā)執(zhí)行sql操作。

在一些實(shí)施例中,所述海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,還包括鑒權(quán)模塊,用于:

根據(jù)sql協(xié)議對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行協(xié)議解析,并對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行鑒權(quán)處理。

在一些實(shí)施例中所述海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,還包括第二計(jì)算模塊,用于:

獲取廣播語(yǔ)句路由索引,并計(jì)算出sql調(diào)用數(shù)據(jù)的二次分片路由。

在一些實(shí)施例中,所述海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,還包括匯聚模塊,用于:

匯聚多個(gè)路由節(jié)點(diǎn)的結(jié)果,并根據(jù)匯聚結(jié)果重新歸納出匯聚函數(shù)或匯聚關(guān)鍵字。

在一些實(shí)施例中,所述海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,還包括索引生成模塊,用于:

監(jiān)控mysql數(shù)據(jù)庫(kù)產(chǎn)生的binlog日志文件是否更新,

當(dāng)監(jiān)控到binlog日志文件有更新時(shí),獲取并解析最近更新的binlog日志文件,以及

更新路由索引數(shù)據(jù)。根據(jù)歸納出匯聚函數(shù)或匯聚關(guān)鍵字生成索引,并更新路由索引。

本發(fā)明的技術(shù)方案主要通過(guò)獲取調(diào)用分庫(kù)分表中間件的數(shù)據(jù)調(diào)用請(qǐng)求,該數(shù)據(jù)調(diào)用請(qǐng)求中包含sql調(diào)用數(shù)據(jù);對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行解析,得到sql調(diào)用數(shù)據(jù);根據(jù)對(duì)分庫(kù)分表中間件預(yù)設(shè)的分片算法,計(jì)算出sql調(diào)用數(shù)據(jù)的分片路由;根據(jù)分片的會(huì)話狀態(tài)及事務(wù)狀態(tài)獲取后端數(shù)據(jù)庫(kù)的鏈接;以及調(diào)用指定mysql數(shù)據(jù)庫(kù)實(shí)例,以并發(fā)執(zhí)行sql操作,區(qū)別于傳統(tǒng)的數(shù)據(jù)庫(kù)服務(wù)存儲(chǔ)量小,并且數(shù)據(jù)庫(kù)連接數(shù)有限,無(wú)法有效地提供高并發(fā)訪問(wèn)的問(wèn)題,本方案的數(shù)據(jù)庫(kù)分庫(kù)分表后可以通過(guò)非主鍵的sql調(diào)用數(shù)據(jù)查詢需要廣播所有數(shù)據(jù)庫(kù)節(jié)點(diǎn),能夠?qū)崿F(xiàn)數(shù)據(jù)庫(kù)高并發(fā)訪問(wèn),能夠提高數(shù)據(jù)調(diào)用效率和訪問(wèn)能力。

附圖說(shuō)明

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

圖1為本發(fā)明一實(shí)施例海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法的方法流程圖;

圖2為本發(fā)明另一實(shí)施例海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法的方法流程圖;

圖3為本發(fā)明一實(shí)施例海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置的模塊方框圖;

圖4為本發(fā)明另一實(shí)施例海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法的模塊方框圖。

本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

需要說(shuō)明,本發(fā)明中涉及“第一”、“第二”等的描述僅用于描述目的,而不能理解為指示或暗示其相對(duì)重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括至少一個(gè)該特征。另外,各個(gè)實(shí)施例之間的技術(shù)方案可以相互結(jié)合,但是必須是以本領(lǐng)域普通技術(shù)人員能夠?qū)崿F(xiàn)為基礎(chǔ),當(dāng)技術(shù)方案的結(jié)合出現(xiàn)相互矛盾或無(wú)法實(shí)現(xiàn)時(shí)應(yīng)當(dāng)認(rèn)為這種技術(shù)方案的結(jié)合不存在,也不在本發(fā)明要求的保護(hù)范圍之內(nèi)。

鑒于目前數(shù)據(jù)庫(kù)儲(chǔ)量小,接入鏈接有限,無(wú)法實(shí)現(xiàn)高并發(fā)的數(shù)據(jù)訪問(wèn)問(wèn)題,可以通過(guò)數(shù)據(jù)切分來(lái)提高數(shù)據(jù)庫(kù)性能,橫向擴(kuò)展數(shù)據(jù)層成了節(jié)省成本和良好擴(kuò)展性的選擇。于本方案而言,海量關(guān)系型數(shù)據(jù)庫(kù)分可以分成分庫(kù)分表中間件及存儲(chǔ)層,該分庫(kù)分表中間件,可以同時(shí)對(duì)多個(gè)調(diào)用或訪問(wèn)請(qǐng)求進(jìn)行處理。存儲(chǔ)層包括oracle、db2、sqlserve,其通過(guò)jdbc連接具體的數(shù)據(jù)庫(kù),將其模擬為mysqlserver使用。上述的分片算法能夠?qū)崿F(xiàn)把一個(gè)數(shù)據(jù)庫(kù)切分成多個(gè)部分放到不同的數(shù)據(jù)庫(kù)(server)上,從而緩解單一數(shù)據(jù)庫(kù)的性能問(wèn)題。對(duì)于海量數(shù)據(jù)的數(shù)據(jù)庫(kù),如果是因?yàn)楸矶喽鴶?shù)據(jù)多,這時(shí)候適合使用垂直切分,即把關(guān)系緊密(比如同一模塊)的表切分出來(lái)放在一個(gè)server上。如果表并不多,但每張表的數(shù)據(jù)非常多,這時(shí)候適合水平切分,即把表的數(shù)據(jù)按某種規(guī)則(比如按id散列)切分到多個(gè)數(shù)據(jù)庫(kù)(server)上。

請(qǐng)參照?qǐng)D1,在本發(fā)明實(shí)施例中,該海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法,所述數(shù)據(jù)庫(kù)配置有分庫(kù)分表中間件,所述分庫(kù)分表中間件由基于多mysql數(shù)據(jù)庫(kù)實(shí)例分庫(kù)分表構(gòu)建而成,該海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用方法,包括如下步驟:

步驟s10、獲取調(diào)用分庫(kù)分表中間件的數(shù)據(jù)調(diào)用請(qǐng)求,其中,所述數(shù)據(jù)調(diào)用請(qǐng)求中包含sql調(diào)用數(shù)據(jù);

步驟s20、對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行解析,得到sql調(diào)用數(shù)據(jù);

步驟s30、根據(jù)對(duì)分庫(kù)分表中間件預(yù)設(shè)的分片算法,計(jì)算出sql調(diào)用數(shù)據(jù)的分片路由;

步驟s40、根據(jù)分片的會(huì)話狀態(tài)及事務(wù)狀態(tài)獲取后端數(shù)據(jù)庫(kù)的鏈接;以及

步驟s50、調(diào)用指定mysql數(shù)據(jù)庫(kù)實(shí)例,以并發(fā)執(zhí)行sql操作。

本實(shí)施例中,分庫(kù)分表中間件由基于多mysql數(shù)據(jù)庫(kù)實(shí)例分按照分片算法構(gòu)建而成,該分片算法可以是根據(jù)業(yè)務(wù)場(chǎng)景和數(shù)據(jù)特點(diǎn)而制定,具體如下:1、按散列分片,對(duì)某些表,基本上很少會(huì)涉及到范圍查詢的,只根據(jù)某個(gè)字段(最常見是主鍵)進(jìn)行查找定位,則可以用散列的方式,隨機(jī)分配到其中一個(gè)節(jié)點(diǎn)上;2、取模分片,對(duì)某些表,基本上很少會(huì)涉及到范圍查詢的,只根據(jù)某個(gè)字段(最常見是主鍵)進(jìn)行查找定位,則可以用求余的方式,隨機(jī)分配到其中一個(gè)節(jié)點(diǎn)上;3、映射分片,按照分片字段值所在區(qū)間進(jìn)行分片,如某些分片字段為非整數(shù)型,為了效率,字段編碼被映射為數(shù)字進(jìn)行分片;4、按時(shí)間分片,主要是針對(duì)歷史記錄存放;5、支持庫(kù)內(nèi)分表:類似tddl分表方式(與分庫(kù)重疊)。獲取數(shù)據(jù)調(diào)用請(qǐng)求后,需要在分庫(kù)分表中間件進(jìn)行sql的路由解析,查詢需要能明確的定位具體的分片,避免進(jìn)行多分片的查詢,消耗網(wǎng)絡(luò)io與內(nèi)存。在計(jì)算出sql調(diào)用數(shù)據(jù)的分片路由路徑之后,分片的會(huì)話狀態(tài)及事務(wù)狀態(tài)獲取后端數(shù)據(jù)庫(kù)的鏈接,最后調(diào)用指定的數(shù)據(jù),執(zhí)行對(duì)應(yīng)的sql操作。

本發(fā)明的技術(shù)方案主要通過(guò)獲取調(diào)用分庫(kù)分表中間件的數(shù)據(jù)調(diào)用請(qǐng)求,該數(shù)據(jù)調(diào)用請(qǐng)求中包含sql調(diào)用數(shù)據(jù);對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行解析,得到sql調(diào)用數(shù)據(jù);根據(jù)對(duì)分庫(kù)分表中間件預(yù)設(shè)的分片算法,計(jì)算出sql調(diào)用數(shù)據(jù)的分片路由;根據(jù)分片的會(huì)話狀態(tài)及事務(wù)狀態(tài)獲取后端數(shù)據(jù)庫(kù)的鏈接;以及調(diào)用指定mysql數(shù)據(jù)庫(kù)實(shí)例,以并發(fā)執(zhí)行sql操作,區(qū)別于傳統(tǒng)的數(shù)據(jù)庫(kù)服務(wù)存儲(chǔ)量小,并且數(shù)據(jù)庫(kù)連接數(shù)有限,無(wú)法有效地提供高并發(fā)訪問(wèn)的問(wèn)題,本方案的數(shù)據(jù)庫(kù)分庫(kù)分表后可以通過(guò)非主鍵的sql調(diào)用數(shù)據(jù)查詢需要廣播所有數(shù)據(jù)庫(kù)節(jié)點(diǎn),能夠?qū)崿F(xiàn)數(shù)據(jù)庫(kù)高并發(fā)訪問(wèn),能夠提高數(shù)據(jù)調(diào)用效率和訪問(wèn)能力。

請(qǐng)參照?qǐng)D2,在一些實(shí)施例中,所述獲取調(diào)用數(shù)據(jù)庫(kù)分庫(kù)分表中間件的數(shù)據(jù)調(diào)用請(qǐng)求的步驟之后,還包括步驟s11:

根據(jù)sql協(xié)議對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行協(xié)議解析,并對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行鑒權(quán)處理。

本實(shí)施例中,通過(guò)該步驟可以對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行協(xié)議解析,旨在鑒定用戶的身份,如果用戶為注冊(cè)用戶則繼續(xù)進(jìn)行數(shù)據(jù)調(diào)用請(qǐng)求的數(shù)據(jù)解析,如果用戶為未注冊(cè)用戶則返回注冊(cè)失敗的消息。

請(qǐng)繼續(xù)參照?qǐng)D2,在一些實(shí)施例中,所述根據(jù)對(duì)分庫(kù)分表中間件預(yù)設(shè)的分片算法,計(jì)算出sql調(diào)用數(shù)據(jù)的分片路由的步驟之后,還包括步驟s31:

獲取廣播語(yǔ)句路由索引,并計(jì)算出sql調(diào)用數(shù)據(jù)的二次分片路由。

本實(shí)施例中,通過(guò)該步驟在sql數(shù)據(jù)上獲取到與路由字段有對(duì)應(yīng)索引的字段數(shù)據(jù),查詢索引存儲(chǔ),獲取到相關(guān)路由字段的值,然后根據(jù)路由字段重新計(jì)算分片路由。

請(qǐng)繼續(xù)參照?qǐng)D2,在一些實(shí)施例中,所述調(diào)用指定mysql數(shù)據(jù)庫(kù)實(shí)例,以并發(fā)執(zhí)行sql操作的步驟之后,還包括步驟s60:

匯聚多個(gè)路由節(jié)點(diǎn)的結(jié)果,并根據(jù)匯聚結(jié)果重新歸納出匯聚函數(shù)或匯聚關(guān)鍵字。

本實(shí)施例中,通過(guò)該步驟可以實(shí)現(xiàn)數(shù)據(jù)匯聚功能,上述的匯聚關(guān)鍵字包括groupby、orderby及distinct;匯聚函數(shù)包括max()、min()、avg()、count()、sum(),還能夠提供單數(shù)據(jù)分片的關(guān)聯(lián)查詢,以及提供跨庫(kù)聚合操作的報(bào)錯(cuò)功能等;另外,mysql執(zhí)行成功后會(huì)生成對(duì)應(yīng)的binlog日志文件。

請(qǐng)繼續(xù)參照?qǐng)D2,在一些實(shí)施例中,所述匯聚多路由節(jié)點(diǎn)的結(jié)果,并根據(jù)匯聚結(jié)果重新歸納出匯聚函數(shù)或匯聚關(guān)鍵字的步驟之后,還包括步驟s70:

監(jiān)控mysql數(shù)據(jù)庫(kù)產(chǎn)生的binlog日志文件是否更新,

當(dāng)監(jiān)控到binlog日志文件有更新時(shí),獲取并解析最近更新的binlog日志文件,以及

更新路由索引數(shù)據(jù)。

本實(shí)施例中,索引生成是一個(gè)單獨(dú)的服務(wù)進(jìn)程,與海量關(guān)系型數(shù)據(jù)存取的分庫(kù)分表中間件服務(wù)進(jìn)程是獨(dú)立開來(lái)的,當(dāng)binlog日志文件更新時(shí),獲取并解析最近更新的binlog日志文件,并更新路由索引數(shù)據(jù),新的路由索引數(shù)據(jù)可存儲(chǔ)于數(shù)據(jù)庫(kù)中。當(dāng)binlog日志文件么有更新時(shí),不做更新處理,并繼續(xù)對(duì)binlog日志文件是否更新進(jìn)行監(jiān)控。

請(qǐng)參照?qǐng)D3,在本發(fā)明的實(shí)施例中,該海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,所述數(shù)據(jù)庫(kù)配置有分庫(kù)分表中間件,所述分庫(kù)分表中間件由基于多mysql數(shù)據(jù)庫(kù)實(shí)例分庫(kù)分表構(gòu)建而成,該海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,包括:

獲取模塊10,用于獲取調(diào)用分庫(kù)分表中間件的數(shù)據(jù)調(diào)用請(qǐng)求,其中,所述數(shù)據(jù)調(diào)用請(qǐng)求中包含sql調(diào)用數(shù)據(jù);

解析模塊20,用于對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行解析,得到sql調(diào)用數(shù)據(jù);

第一計(jì)算模塊30,用于根據(jù)對(duì)分庫(kù)分表中間件預(yù)設(shè)的分片算法,計(jì)算出sql調(diào)用數(shù)據(jù)的分片路由;

建立模塊40,用于根據(jù)分片的會(huì)話狀態(tài)及事務(wù)狀態(tài)獲取后端數(shù)據(jù)庫(kù)的鏈接;以及

調(diào)用執(zhí)行模塊50,用于調(diào)用指定mysql數(shù)據(jù)庫(kù)實(shí)例,以并發(fā)執(zhí)行sql操作。

本實(shí)施例中,分庫(kù)分表中間件由基于多mysql數(shù)據(jù)庫(kù)實(shí)例分按照分片算法構(gòu)建而成,該分片算法可以是根據(jù)業(yè)務(wù)場(chǎng)景和數(shù)據(jù)特點(diǎn)而制定,通過(guò)獲取模塊10,獲取數(shù)據(jù)調(diào)用請(qǐng)求后,以及由解析模塊20需要在分庫(kù)分表中間件進(jìn)行sql的路由解析,查詢需要能明確的定位具體的分片,避免進(jìn)行多分片的查詢,消耗網(wǎng)絡(luò)io與內(nèi)存;由第一計(jì)算模塊30計(jì)算出sql調(diào)用數(shù)據(jù)的分片路由路徑之后,通過(guò)建立模塊40,根據(jù)分片的會(huì)話狀態(tài)及事務(wù)狀態(tài)獲取后端數(shù)據(jù)庫(kù)的鏈接,最后由調(diào)用執(zhí)行模塊50調(diào)用指定的數(shù)據(jù),執(zhí)行對(duì)應(yīng)的sql操作,實(shí)現(xiàn)高并發(fā)處理。

請(qǐng)參照?qǐng)D4,在一些實(shí)施例中,所述海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,還包括鑒權(quán)模塊11,用于:

根據(jù)sql協(xié)議對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行協(xié)議解析,并對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行鑒權(quán)處理。

本實(shí)施例中,通過(guò)鑒權(quán)模塊11,可以對(duì)數(shù)據(jù)調(diào)用請(qǐng)求進(jìn)行協(xié)議解析,旨在鑒定用戶的身份,如果用戶為注冊(cè)用戶則繼續(xù)進(jìn)行數(shù)據(jù)調(diào)用請(qǐng)求的數(shù)據(jù)解析,如果用戶為未注冊(cè)用戶則返回注冊(cè)失敗的消息。

請(qǐng)繼續(xù)參照?qǐng)D4,在一些實(shí)施例中所述海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,還包括第二計(jì)算模塊31,用于:

獲取廣播語(yǔ)句路由索引,并計(jì)算出sql調(diào)用數(shù)據(jù)的二次分片路由。

本實(shí)施例中,該第二計(jì)算模塊31通過(guò)在sql數(shù)據(jù)上獲取到與路由字段有對(duì)應(yīng)索引的字段數(shù)據(jù),查詢索引存儲(chǔ),獲取到相關(guān)路由字段的值,然后根據(jù)路由字段重新計(jì)算分片路由。

請(qǐng)繼續(xù)參照?qǐng)D4,在一些實(shí)施例中,所述海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,還包括匯聚模塊60,用于:

匯聚多個(gè)路由節(jié)點(diǎn)的結(jié)果,并根據(jù)匯聚結(jié)果重新歸納出匯聚函數(shù)或匯聚關(guān)鍵字。

本實(shí)施例中,通過(guò)該匯聚模塊60,可以實(shí)現(xiàn)數(shù)據(jù)匯聚功能,上述的匯聚關(guān)鍵字包括groupby、orderby及distinct;匯聚函數(shù)包括max()、min()、avg()、count()、sum(),還能夠提供單數(shù)據(jù)分片的關(guān)聯(lián)查詢,以及提供跨庫(kù)聚合操作的報(bào)錯(cuò)功能等。另外,mysql執(zhí)行成功后會(huì)生成對(duì)應(yīng)的binlog日志文件。

請(qǐng)繼續(xù)參照?qǐng)D4,在一些實(shí)施例中,所述海量關(guān)系型數(shù)據(jù)庫(kù)的調(diào)用裝置,還包括索引生成模塊70,用于:

監(jiān)控mysql數(shù)據(jù)庫(kù)產(chǎn)生的binlog日志文件是否更新,

當(dāng)監(jiān)控到binlog日志文件有更新時(shí),獲取并解析最近更新的binlog日志文件,以及

更新路由索引數(shù)據(jù)。

本實(shí)施例中,該索引生成模塊70,當(dāng)檢測(cè)待binlog日志文件更新時(shí),獲取并解析最近更新的binlog日志文件,并更新路由索引數(shù)據(jù),以生成路由索引,新的路由索引數(shù)據(jù)可存儲(chǔ)于數(shù)據(jù)庫(kù)中。當(dāng)binlog日志文件沒有更新時(shí),繼續(xù)對(duì)binlog日志文件進(jìn)行監(jiān)控。

以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是在本發(fā)明的發(fā)明構(gòu)思下,利用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)變換,或直接/間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域均包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1