国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      支持通過簡單SQL調(diào)用中間件數(shù)據(jù)庫特有功能的方法與流程

      文檔序號:11134032閱讀:672來源:國知局
      本發(fā)明涉及一種在分布式數(shù)據(jù)庫中間件中調(diào)用底層異構(gòu)數(shù)據(jù)庫特有功能的方法。
      背景技術(shù)
      ::隨著計算機(jī)和信息技術(shù)的迅猛發(fā)展以及在各行業(yè)應(yīng)用的日益普及化,人類已進(jìn)入大數(shù)據(jù)時代,大數(shù)據(jù)的海量特性、異構(gòu)性等“4V”特點對傳統(tǒng)數(shù)據(jù)庫技術(shù)帶來了巨大挑戰(zhàn)。為了彌補(bǔ)關(guān)系型數(shù)據(jù)庫在處理大數(shù)據(jù)方面的不足,各種非關(guān)系型數(shù)據(jù)庫應(yīng)運(yùn)而生。非關(guān)系型數(shù)據(jù)庫在實現(xiàn)基礎(chǔ)功能的前提下都在某一個或多個方面有著自己獨特的優(yōu)勢,如MongDB在存儲類型上支持文件存儲,在功能上原生支持MapReduce,AggregationPipeline等操作。另一方面,伴隨著數(shù)據(jù)規(guī)模的急劇增長,數(shù)據(jù)管理向分布式發(fā)展已成為趨勢。傳統(tǒng)的分布式數(shù)據(jù)庫構(gòu)造復(fù)雜,分布式管理集成于數(shù)據(jù)庫本身,難以對現(xiàn)有的數(shù)據(jù)庫系統(tǒng)進(jìn)行整合,而分布式數(shù)據(jù)庫中間件為用戶提供了透明的構(gòu)建數(shù)據(jù)庫集群的方案,能夠整合現(xiàn)有的單機(jī)集中式數(shù)據(jù)庫,建立“偽分布式”系統(tǒng)架構(gòu),成為一種重要的海量數(shù)據(jù)管理解決方案。與此同時,分布式數(shù)據(jù)庫中間件能夠?qū)⒉煌愋偷牡讓訑?shù)據(jù)庫和應(yīng)用集成,若在底層將關(guān)系型數(shù)據(jù)庫與NoSQL進(jìn)行統(tǒng)一集成,將有望高效實現(xiàn)異構(gòu)大數(shù)據(jù)管理。然而,目前在分布式數(shù)據(jù)庫中間件中,無法直接調(diào)用不同類型底層節(jié)點的特有功能。用戶若要調(diào)用則需要通過編程實現(xiàn),代價通常較大,且對于用戶而言門檻較高。如何為用戶提供一個簡潔明了的操作接口實現(xiàn)對各類型數(shù)據(jù)庫功能的可定制化調(diào)用成為了一個迫切需要解決的問題。技術(shù)實現(xiàn)要素:本發(fā)明的目的是通過對SQL語句的功能擴(kuò)展,在分布式數(shù)據(jù)庫中間件中實現(xiàn)借助簡單類SQL語句直接調(diào)用各數(shù)據(jù)庫特有的功能以更好的發(fā)揮該數(shù)據(jù)庫優(yōu)勢的效果。為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是提供了一種支持通過簡單SQL調(diào)用數(shù)據(jù)庫特有MapReduce功能的方法,其特征在于,包括如下步驟:步驟1、架構(gòu)搭建;在分布式數(shù)據(jù)庫中間件中接入關(guān)系型數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫;步驟2、索引文件創(chuàng)建,用戶指定字段r與數(shù)據(jù)庫db的對應(yīng)關(guān)系,以“r:db”形式保存為索引文件;步驟3、數(shù)據(jù)分庫存儲,以列為單位按指定數(shù)據(jù)與節(jié)點的對應(yīng)關(guān)系將數(shù)據(jù)存入對應(yīng)不同類型節(jié)點數(shù)據(jù)庫中,該步驟包括:步驟3.1、建表,檢索索引文件中字段與數(shù)據(jù)庫對應(yīng)關(guān)系,基于字段構(gòu)建作用于分庫的建表子語句,進(jìn)行路由分發(fā);步驟3.2、插入數(shù)據(jù),檢索索引文件中字段與數(shù)據(jù)庫對應(yīng)關(guān)系,基于字段構(gòu)建作用于分庫的插入數(shù)據(jù)子語句,進(jìn)行路由分發(fā),完成數(shù)據(jù)插入;步驟4、查詢擴(kuò)展,根據(jù)精簡和實用原則,設(shè)計調(diào)用指定方法的SQL語句;SQL語句設(shè)計為:SELECTexpression[ASoutput_name][,...]FROMfrom_item[(USINGMapReduceONcondition)]其中,expression表示字段名或一個表達(dá)式;from_item表示所要查詢的表或NoSQL數(shù)據(jù)庫中與表相對應(yīng)的單位,如MongDB的COLLECTION;括號內(nèi)USING標(biāo)識指示使用的執(zhí)行方法MapReduce;ON標(biāo)識指示用戶所限定的條件condition,通過設(shè)定與執(zhí)行函數(shù)相對應(yīng)的參數(shù)獲得執(zhí)行結(jié)果集;步驟5、查詢解析,根據(jù)用戶指定SQL語句進(jìn)行方法的調(diào)用,系統(tǒng)在路由分發(fā)前對指定SQL語句進(jìn)行解析,具體步驟如下:步驟5.1、指定關(guān)鍵字解析,判斷當(dāng)前SQL語句是否包含USING關(guān)鍵字,若是,則進(jìn)行步驟5.2;否則,根據(jù)路由配置直接進(jìn)行SQL語句的分發(fā),以默認(rèn)方式執(zhí)行,得到結(jié)果;步驟5.2、執(zhí)行方法解析,解析若包含則通過USING關(guān)鍵字獲得執(zhí)行方法名MapReduce,確定方法執(zhí)行所調(diào)用的函數(shù);步驟5.3、執(zhí)行參數(shù)解析,通過ON關(guān)鍵字獲得參數(shù)字符串,并從中解析得到參數(shù)鍵值對列表,同時解析待查表名,傳入步驟5.2所確定調(diào)用的函數(shù)中;步驟5.4、返回結(jié)果類型解析,確定SQL語句所請求內(nèi)容的最終返回形式,即步驟4所設(shè)計的查詢語句中的expression;步驟6、路由綁定與分發(fā),在MYCAT默認(rèn)路由分發(fā)前進(jìn)行路由綁定,檢索索引文件,判斷作用字段所在節(jié)點及數(shù)據(jù)庫,將SQL語句與待執(zhí)行節(jié)點綁定進(jìn)行路由分發(fā);步驟7、方法執(zhí)行,通過函數(shù)調(diào)用執(zhí)行腳本,獲得結(jié)果并返回,具體包括:步驟7.1、函數(shù)調(diào)用,在步驟5.2所調(diào)用的函數(shù)中執(zhí)行腳本函數(shù),其執(zhí)行步驟如下:步驟7.1.1、結(jié)果集映射,根據(jù)步驟5.3解析得到的執(zhí)行參數(shù)設(shè)定相應(yīng)類目,并選定規(guī)則通過map函數(shù)將結(jié)果集映射到對應(yīng)類目中;步驟7.1.2、結(jié)果集規(guī)約,將步驟7.1.1得到的映射結(jié)果集按照步驟5.4解析的內(nèi)容返回形式通過reduce函數(shù)進(jìn)行規(guī)約,并得到函數(shù)執(zhí)行結(jié)果集;步驟7.2、結(jié)果集返回,將步驟7.1.2規(guī)約結(jié)果集返回至函數(shù)調(diào)用處;步驟8、封裝結(jié)果并返回,根據(jù)步驟5.4中獲取的內(nèi)容返回形式,設(shè)置表頭信息,并將表頭信息與返回結(jié)果內(nèi)容對應(yīng)依次封裝為字節(jié)流的形式返回。優(yōu)選地,所述步驟1采用開源數(shù)據(jù)庫中間件MYCAT作為管理平臺,進(jìn)行搭建架構(gòu),包括以下步驟:步驟1.1、安裝數(shù)據(jù)庫,在單機(jī)或多機(jī)的環(huán)境下安裝關(guān)系型數(shù)據(jù)庫及NoSQL數(shù)據(jù)庫;步驟1.2、搭建MYCAT中間件平臺,在配置中將數(shù)據(jù)庫添加至各個節(jié)點,并指定各節(jié)點數(shù)據(jù)庫類型。優(yōu)選地,所述步驟1.2包括:步驟1.2.1、安裝MYCAT,通過將MYCAT開源代碼導(dǎo)入ECLIPSE中完成軟件的安裝;步驟1.2.2、設(shè)置環(huán)境變量,將指定數(shù)據(jù)庫訪問所必須的JAR包通過ECLIPSE中BUILDPATH添加到系統(tǒng)運(yùn)行環(huán)境中;步驟1.2.3、配置節(jié)點信息,向配置文件schema.xml中添加表table和節(jié)點dataNode信息,指定表table與節(jié)點dataNode的對應(yīng)關(guān)系;添加垂直分片規(guī)則,并將待加入的數(shù)據(jù)庫地址以及用戶名密碼信息添加到該配置文件中;優(yōu)選地,所述步驟3.1包括:步驟3.1.1、獲取配置信息,確定待操作表包含垂直分片配置;步驟3.1.2、解析拆分語句,讀取索引文件并對語句屬性進(jìn)行解析,分別構(gòu)建作用于分庫的建表子語句;步驟3.1.3、路由分發(fā),將步驟3.1.2中得到的子語句分別與配置對應(yīng)類型的數(shù)據(jù)庫綁定,并進(jìn)行路由分發(fā),完成創(chuàng)建表。本發(fā)明提供了一種通過分布式數(shù)據(jù)庫中間件調(diào)用底層數(shù)據(jù)庫特有功能的方法,其特點為用戶可以通過簡單的SQL語句指定需要操作的數(shù)據(jù)庫以及該數(shù)據(jù)庫特有的功能,以實現(xiàn)操作的便捷性和功能的可定制性。附圖說明圖1為異構(gòu)數(shù)據(jù)存儲的流程。具體實施方式為使本發(fā)明更明顯易懂,茲以優(yōu)選實施例作詳細(xì)說明如下。本發(fā)明提供了一種支持通過簡單SQL調(diào)用中間件數(shù)據(jù)庫特有功能的方法,本發(fā)明針對多種異構(gòu)數(shù)據(jù)庫并存的分布式數(shù)據(jù)庫環(huán)境下,用戶不能通過統(tǒng)一平臺以簡單的方式操作指定NoSQL數(shù)據(jù)庫特有執(zhí)行方式的問題,提供給用戶以簡單類SQL語句,使其通過中間平臺MYCAT可以直接調(diào)用MongDB節(jié)點數(shù)據(jù)庫指定MapReduce功能的方法,提高了分布式數(shù)據(jù)庫的靈活性,并為普通用戶對數(shù)據(jù)庫特有功能的使用提供了便捷途徑。以MongDB下MapReduce的count操作為例,具體操作步驟為:步驟1、架構(gòu)搭建,安裝數(shù)據(jù)庫,選擇MYCAT作為分布式數(shù)據(jù)庫管理平臺,將數(shù)據(jù)庫接入MYCAT中間件平臺,該步驟包括:步驟1.1、數(shù)據(jù)庫安裝,在單機(jī)或多機(jī)的環(huán)境下安裝MONGODB等數(shù)據(jù)庫;步驟1.2、搭建MYCAT中間件平臺,將步驟1.1MONGODB所在宿主機(jī)添加到節(jié)點配置中,并在該節(jié)點配置信息中添加MONGODB類型數(shù)據(jù)庫及表信息,具體步驟如下;步驟1.2.1、安裝MYCAT,通過將MYCAT開源代碼導(dǎo)入ECLIPSE中完成軟件的安裝;步驟1.2.2、設(shè)置環(huán)境變量,將指定數(shù)據(jù)庫訪問所必須的JAR包通過ECLIPSE中BUILDPATH添加到系統(tǒng)運(yùn)行環(huán)境中;步驟1.2.3、配置節(jié)點信息,向配置文件“schema.xml”中添加table(表)和dataNode(節(jié)點)信息,指定table與dataNode的對應(yīng)關(guān)系。添加垂直分片規(guī)則,并將待加入的數(shù)據(jù)庫地址以及用戶名密碼等信息添加到該配置文件中;步驟2、索引文件創(chuàng)建,用戶指定字段r與數(shù)據(jù)庫db的對應(yīng)關(guān)系,以“r:db”形式保存為索引文件;步驟3、數(shù)據(jù)分庫存儲,以列為單位按指定數(shù)據(jù)與節(jié)點的對應(yīng)關(guān)系將數(shù)據(jù)存入對應(yīng)不同類型節(jié)點數(shù)據(jù)庫中,該步驟包括:步驟3.1、建表,檢索索引文件中字段與數(shù)據(jù)庫對應(yīng)關(guān)系,基于字段構(gòu)建作用于分庫的建表子語句,進(jìn)行路由分發(fā),該步驟包括:步驟3.1.1、獲取配置信息,確定待操作表包含垂直分片配置;步驟3.1.2、解析拆分語句,讀取索引文件并對語句屬性進(jìn)行解析,分別構(gòu)建作用于分庫的建表子語句;步驟3.1.3、路由分發(fā),將步驟3.1.2中得到的子語句分別與配置對應(yīng)類型的數(shù)據(jù)庫綁定,并進(jìn)行路由分發(fā),完成創(chuàng)建表;步驟3.2、插入數(shù)據(jù),檢索索引文件中字段與數(shù)據(jù)庫對應(yīng)關(guān)系,基于字段構(gòu)建作用于分庫的插入數(shù)據(jù)子語句,進(jìn)行路由分發(fā),完成數(shù)據(jù)插入;以建表語句為例,展示異構(gòu)數(shù)據(jù)存儲的流程如圖1所示,其中索引為步驟2創(chuàng)建的索引文件。步驟4、查詢擴(kuò)展,MongDB下MapReduce的count操作的查詢語句如下所示:SELECTCOUNT(column)FROMfrom_item[(USINGMapReduceONLENGTH>3|CONTAIN=’str’)]該查詢語句中expression為COUNT(column),即MapReduce所統(tǒng)計字段記錄的計數(shù);from_item表示NoSQL數(shù)據(jù)庫中與表相對應(yīng)的單位,在這里為MongDB的COLLECTION;括號內(nèi)USING標(biāo)識指示使用的執(zhí)行方法MapReduce,即使用MapReduce執(zhí)行count操作;ON標(biāo)識指示用戶所限定的條件condition,這里提供兩種條件限制,分別為字段長度和包含字符串,詳細(xì)說明如表1所示:PARAM名功能描述VALUE類型LENGTH指定字段長度范圍INTCONTAIN指定包含某字符串STRING表1步驟5、查詢解析,根據(jù)步驟4中擴(kuò)展語句,對執(zhí)行方法名、參數(shù)及返回結(jié)果類型進(jìn)行解析,具體步驟如下:步驟5.1、指定關(guān)鍵字解析,判斷當(dāng)前SQL語句包含USING關(guān)鍵字,于是獲得執(zhí)行方法名MapReduce,即調(diào)用函數(shù)MapReduce;步驟5.2、執(zhí)行參數(shù)解析,通過ON關(guān)鍵字獲得參數(shù)字符串LENGTH>3|CONTAIN=’str’,同時解析待查表名,傳入步驟5.1所確定調(diào)用的函數(shù)中;步驟5.3、返回結(jié)果類型解析,確定SQL語句所請求內(nèi)容的最終返回形式,即步驟4所設(shè)計的查詢語句中的COUNT(column);步驟6、路由綁定與分發(fā),在MYCAT默認(rèn)路由分發(fā)前進(jìn)行路由綁定,檢索索引文件,判斷作用字段所在數(shù)據(jù)庫為MONGODB,將SQL語句與待執(zhí)行節(jié)點綁定進(jìn)行路由分發(fā)。步驟7、方法執(zhí)行,通過函數(shù)調(diào)用執(zhí)行腳本,獲得結(jié)果并返回,具體包括:步驟7.1、函數(shù)調(diào)用,根據(jù)步驟5.1解析得到的方法名調(diào)用對應(yīng)執(zhí)行腳本,腳本執(zhí)行步驟如下:步驟7.1.1、結(jié)果集映射,根據(jù)傳入?yún)?shù)為字段長度LENGTH還是包含字符串CONTAIN,設(shè)定相應(yīng)類目,并在查詢過程中通過map函數(shù)將結(jié)果集映射到對應(yīng)類目中。步驟7.1.2、結(jié)果集規(guī)約,將步驟7.1.1得到的映射結(jié)果集通過reduce函數(shù)按照步驟5.3解析的COUNT統(tǒng)計計數(shù)形式進(jìn)行規(guī)約,并得到函數(shù)執(zhí)行結(jié)果集。步驟7.2、結(jié)果集返回,將步驟7.1.2規(guī)約結(jié)果集返回至函數(shù)調(diào)用處;步驟8、封裝結(jié)果并返回,根據(jù)步驟5.3解析的COUNT統(tǒng)計計數(shù)形式,設(shè)置表頭信息,并將表頭信息與返回結(jié)果內(nèi)容對應(yīng)依次封裝為字節(jié)流的形式返回。由此可見,本技術(shù)對于用戶操作水平要求不高,提供給用戶的靈活性較大,且能夠充分發(fā)揮底層數(shù)據(jù)庫特有的功能。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1