国产精品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>

      一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法及系統(tǒng)的制作方法

      文檔序號:6520855閱讀:763來源:國知局
      一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明涉及一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法及系統(tǒng),包括關(guān)系數(shù)據(jù)庫、HBase數(shù)據(jù)庫、SQL解析模塊、查詢轉(zhuǎn)換模塊和數(shù)據(jù)模式管理模塊;通過在HBase數(shù)據(jù)庫中設(shè)計(jì)映射關(guān)系表,存儲原關(guān)系數(shù)據(jù)庫中模式信息與HBase數(shù)據(jù)庫中模式信息的映射關(guān)系,完整保留了原關(guān)系數(shù)據(jù)庫中數(shù)據(jù)表格的模式信息,且可靈活配置映射方式,為用戶提供了更多的選擇,且HBase的高效數(shù)據(jù)組織方式,大大提高了訪問性能,節(jié)省了存儲空間,同時提供數(shù)據(jù)導(dǎo)出功能,實(shí)現(xiàn)與其他子系統(tǒng)的數(shù)據(jù)交互,另外,數(shù)據(jù)查詢功能支持SQL查詢,將SQL查詢語句轉(zhuǎn)換成HBase數(shù)據(jù)庫的查詢語句,使用戶更平滑地過渡到HBase數(shù)據(jù)庫。
      【專利說明】—種將關(guān)系型數(shù)據(jù)遷移至HBase的方法及系統(tǒng)
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及數(shù)據(jù)存儲與管理領(lǐng)域,尤其涉及一種將傳統(tǒng)關(guān)系型數(shù)據(jù)庫中的關(guān)系型數(shù)據(jù)遷移至HBase數(shù)據(jù)庫的方法及系統(tǒng)。
      【背景技術(shù)】
      [0002]隨著數(shù)據(jù)生成方式的多元化與數(shù)據(jù)接入方式的多樣化及便捷化,各種業(yè)務(wù)系統(tǒng)中的數(shù)據(jù)都急劇膨脹。相應(yīng)地,傳統(tǒng)方式下,使用關(guān)系型數(shù)據(jù)庫管理的數(shù)據(jù),在存儲容量與訪問量上不斷發(fā)生量級上的增加。傳統(tǒng)關(guān)系庫面臨嚴(yán)峻的挑戰(zhàn)。
      [0003]近年來,NoSQL數(shù)據(jù)庫在工業(yè)界和研究領(lǐng)域蓬勃發(fā)展。NoSQL數(shù)據(jù)庫天然的分布式架構(gòu),自動完成數(shù)據(jù)的水平劃分與訪問的并發(fā),在數(shù)據(jù)存儲量及讀寫性能較傳統(tǒng)關(guān)系型數(shù)據(jù)庫有了極大的提升。工業(yè)界與研究機(jī)構(gòu)都紛紛推出相關(guān)軟件,HBase即為其中的一員。HBase是一個分布式的、面向列存儲的數(shù)據(jù)庫,具有高可靠性、高可擴(kuò)展性,能在普通硬件環(huán)境基礎(chǔ)上支撐十億量級行,百萬量級列的“大表”,并支持在這樣規(guī)模數(shù)據(jù)上的隨機(jī)、實(shí)時讀寫操作。HBase提供類似于表格的存儲視圖,與普通二維表格不同的是,表的屬性列可以按需動態(tài)調(diào)整,表的記錄按照列方向而非行方向進(jìn)行組織。一行數(shù)據(jù)有行鍵與若干列簇組成,行鍵與列簇組成該表的schema,在表格創(chuàng)建后保持不變。而列簇則由若干列組成,可以在數(shù)據(jù)更新時動態(tài)增減列簇中的列。
      [0004]參照Google的BigTable實(shí)現(xiàn)的HBase,目前是Apache的頂級項(xiàng)目,該開源社區(qū)蓬勃發(fā)展的同時,HBase的應(yīng)用也越來越廣泛,已經(jīng)在Yahoo!, Facebook等多家公司成功應(yīng)用。應(yīng)用過程中,不可避免地涉及到數(shù)據(jù)遷移,即從從原有數(shù)據(jù)平臺遷移至HBasejn:從Mysql、Oracle等關(guān)系型數(shù)據(jù)庫移出。
      [0005]Apache出品的Sqoop系統(tǒng)即提供從關(guān)系數(shù)據(jù)庫讀取整庫的數(shù)據(jù),并指定列為行鍵,將數(shù)據(jù)記錄作為值存入HBase某一行的列簇中。這種遷移存在以下問題:1)丟失數(shù)據(jù)模式信息與數(shù)據(jù)唯一性保證,如數(shù)據(jù)類型、是否允許非空。2)列過多,對讀寫性能造成一定的影響。3)不恰當(dāng)?shù)男墟I的設(shè)計(jì),可能會造成空間的浪費(fèi)。

      【發(fā)明內(nèi)容】

      [0006]本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法及系統(tǒng),完整保留了原關(guān)系數(shù)據(jù)庫中數(shù)據(jù)表格的模式信息,可靈活配置映射方式,提高了訪問性能,節(jié)省了存儲空間。
      [0007]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法,包括如下步驟:
      [0008]步驟1:建立HBase數(shù)據(jù)庫,并建立用于存儲關(guān)系數(shù)據(jù)庫中數(shù)據(jù)表與HBase中相應(yīng)的數(shù)據(jù)存儲表間映射關(guān)系的映射關(guān)系表;
      [0009]步驟2:選定一個或一個以上的關(guān)系型數(shù)據(jù)表,并為選定的每個關(guān)系型數(shù)據(jù)表定義映射方式,記錄在映射關(guān)系表中;[0010]步驟3:導(dǎo)入數(shù)據(jù)時,查詢映射關(guān)系表中的映射方式,并根據(jù)映射方式建立相應(yīng)的數(shù)據(jù)存儲表;
      [0011]步驟4:將步驟2中所述一個或一個以上的關(guān)系型數(shù)據(jù)表中的數(shù)據(jù)按照步驟3中所述的映射關(guān)系遷移至建立的數(shù)據(jù)存儲表中;
      [0012]步驟5:判斷是否還有關(guān)系型數(shù)據(jù)要遷移到HBase數(shù)據(jù)庫中,如果有返回步驟2,否則結(jié)束。
      [0013]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
      [0014]進(jìn)一步,上述技術(shù)方案還包括當(dāng)要從HBase數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù)時,具體實(shí)現(xiàn)如下:首先,根據(jù)用戶提供的導(dǎo)出配置文件獲取待導(dǎo)出數(shù)據(jù)在原關(guān)系型數(shù)據(jù)表中的位置信息;其次,根據(jù)待導(dǎo)出數(shù)據(jù)在原關(guān)系型數(shù)據(jù)表中的位置信息,在映射關(guān)系表中查找出待導(dǎo)出數(shù)據(jù)在HBase數(shù)據(jù)庫的數(shù)據(jù)存儲表中相應(yīng)的位置信息;最后,按照關(guān)系映射表中定義的數(shù)據(jù)類型將待導(dǎo)出數(shù)據(jù)導(dǎo)出。
      [0015]進(jìn)一步,上述技術(shù)方案還包括當(dāng)要從HBase數(shù)據(jù)庫中查詢數(shù)據(jù)時,具體實(shí)現(xiàn)如下:首先,解析所述查詢語句,提取出查詢信息,并轉(zhuǎn)換成HBase數(shù)據(jù)庫的查詢語句;其次,根據(jù)已轉(zhuǎn)換的查詢語句在映射關(guān)系表中查找待查詢數(shù)據(jù)在數(shù)據(jù)存儲表中的位置信息;最后,根據(jù)查詢到的位置信息,查詢數(shù)據(jù)存儲表中的相應(yīng)數(shù)據(jù)。
      [0016]進(jìn)一步,步驟2中所述映射方式為包括表映射方式和列映射方式,
      [0017]所述表映射方式包括一對一映射和多對一映射,具體體現(xiàn)在表名的映射,所述表名的映射為根據(jù)表名轉(zhuǎn)換運(yùn)算進(jìn)行映射,表名轉(zhuǎn)換運(yùn)算包括一對一哈希運(yùn)算和多對一哈希運(yùn)算;
      [0018]所述列映射方式包 括默認(rèn)方式、時序方式和用戶自定義方式,所述默認(rèn)方式即關(guān)
      系數(shù)據(jù)庫中表格內(nèi)所有列與ffiase的數(shù)據(jù)存儲表格的一個列簇內(nèi)的所有列--對應(yīng);所述
      時序方式即將關(guān)系數(shù)據(jù)庫中表格內(nèi)所有時間值屬性列在HBase的數(shù)據(jù)存儲表中單獨(dú)定義一個列簇,該列簇包含一個列,將遷移的數(shù)據(jù)按照不同時間點(diǎn)對應(yīng)于該列不同的時間戳上;所述用戶自定義映射即根據(jù)用戶的需要進(jìn)行自定義。
      [0019]進(jìn)一步,步驟3中根據(jù)映射方式建立相應(yīng)的數(shù)據(jù)存儲表,所述數(shù)據(jù)存儲表中包括一個特殊的列即為行鍵列,所述行鍵列的映射方式包括單關(guān)鍵字型和多關(guān)鍵字型,所述單關(guān)鍵字型是以原關(guān)系數(shù)據(jù)庫中表格的一個列屬性直接作為行鍵,多關(guān)鍵字型是將原關(guān)系數(shù)據(jù)庫中表格的多個列屬性拼接為一個行鍵,所選列屬性、用于拼接各列屬性的連接字符或字符串,以及行鍵的排列順序由用戶自定義。
      [0020]進(jìn)一步,步驟4的具體實(shí)現(xiàn)包括數(shù)據(jù)讀取和數(shù)據(jù)寫入,其中數(shù)據(jù)讀取包括兩種方式,一是通過JDBC從關(guān)系數(shù)據(jù)庫中讀取數(shù)據(jù),二是通過中間文件從關(guān)系數(shù)據(jù)庫中讀取數(shù)據(jù);導(dǎo)入數(shù)據(jù)時,首先在映射關(guān)系表中查找相關(guān)的映射關(guān)系,將讀取的數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制串,根據(jù)映射關(guān)系將與入到相應(yīng)的數(shù)據(jù)存儲表中。
      [0021]本發(fā)明解決上述技術(shù)問題的另一技術(shù)方案如下:一種將關(guān)系型數(shù)據(jù)遷移至HBase的系統(tǒng),包括一個或一個以上的關(guān)系數(shù)據(jù)庫、HBase數(shù)據(jù)庫、SQL解析模塊、查詢轉(zhuǎn)換模塊和數(shù)據(jù)模式管理模塊;
      [0022]所述每個關(guān)系數(shù)據(jù)庫,其用于存儲關(guān)系型數(shù)據(jù),作為數(shù)據(jù)遷移的源端;
      [0023]所述HBase數(shù)據(jù)庫,其用于建立映射關(guān)系表來存儲關(guān)系數(shù)據(jù)庫中數(shù)據(jù)表與HBase中相應(yīng)的數(shù)據(jù)存儲表間的映射關(guān)系,并將從關(guān)系型數(shù)據(jù)庫中遷移來的數(shù)據(jù)按照預(yù)定的映射關(guān)系存儲在相應(yīng)的數(shù)據(jù)存儲表中;
      [0024]所述SQL解析模塊,其用于提供SQL查詢功能,對SQL查詢語句進(jìn)行解析,并將解析出的查詢信息傳送給查詢轉(zhuǎn)換模塊;
      [0025]所述查詢轉(zhuǎn)換模塊,其用于將接收的查詢信息轉(zhuǎn)換成HBase數(shù)據(jù)庫的查詢語句,并傳送給數(shù)據(jù)模式管理模塊;
      [0026]所述數(shù)據(jù)模式管理模塊,其用于在向HBase導(dǎo)入、導(dǎo)出和查詢數(shù)據(jù)時,調(diào)取相應(yīng)接口,在HBase的映射關(guān)系表中查詢映射關(guān)系,為數(shù)據(jù)導(dǎo)入、導(dǎo)出和查詢提供查詢依據(jù)。
      [0027]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
      [0028]進(jìn)一步,所述預(yù)定的映射關(guān)系包括表映射方式和列映射方式,
      [0029]所述表映射方式包括一對一映射和多對一映射,具體體現(xiàn)在表名的映射,所述表名的映射為根據(jù)表名轉(zhuǎn)換運(yùn)算進(jìn)行映射,表名轉(zhuǎn)換運(yùn)算包括一對一哈希運(yùn)算和多對一哈希運(yùn)算;
      [0030]所述列映射方式包括默認(rèn)方式、時序方式和用戶自定義方式,所述默認(rèn)方式即關(guān)
      系數(shù)據(jù)庫中表格內(nèi)所有列與ffiase的數(shù)據(jù)存儲表格的一個列簇內(nèi)的所有列--對應(yīng);所述
      時序方式即將關(guān)系數(shù)據(jù)庫中 表格內(nèi)所有時間值屬性列在HBase的數(shù)據(jù)存儲表中單獨(dú)定義一個列簇,該列簇包含一個列,將遷移的數(shù)據(jù)按照不同時間點(diǎn)對應(yīng)于該列不同的時間戳上;所述用戶自定義映射即根據(jù)用戶的需要進(jìn)行自定義。
      [0031]進(jìn)一步,所述關(guān)系數(shù)據(jù)庫提供JDBC接口以實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫中表格模式的獲取及待遷移數(shù)據(jù)的讀??;所述HBase數(shù)據(jù)庫提供接口以實(shí)現(xiàn)數(shù)據(jù)的讀寫。
      [0032]進(jìn)一步,所述SQL解析模塊包括語法解析單元和語義解析單元;
      [0033]所述語法解析單元,其用于通過正則表達(dá)式判斷SQL查詢語句的合法性;
      [0034]所述語義查詢單元,其用于提取具體的查詢信息。
      [0035]進(jìn)一步,所述映射關(guān)系表包括行鍵和一個列簇,所述列簇中包括若干列,分別為tOc、TN、aNULL、DT、DL、isK、CFN、CN、TS ;其中,tOc標(biāo)識所填內(nèi)容為表信息還是列信息,TN中所填內(nèi)容為表名,aNULL標(biāo)識能否允許為空,DT標(biāo)識數(shù)據(jù)類型,DL標(biāo)識數(shù)據(jù)長度,isK標(biāo)識是否主鍵,CFN標(biāo)識是否為時序映射、CN為主鍵名,TS為時間戳方式。
      [0036]本發(fā)明的有益效果是:本發(fā)明通過在HBase數(shù)據(jù)庫中設(shè)計(jì)映射關(guān)系表,存儲原關(guān)系數(shù)據(jù)庫中模式信息與HBase數(shù)據(jù)庫中模式信息的映射關(guān)系,完整保留了原關(guān)系數(shù)據(jù)庫中數(shù)據(jù)表格的模式信息,且可靈活配置映射方式,為用戶提供了更多的選擇,且HBase的高效數(shù)據(jù)組織方式,大大提高了訪問性能,節(jié)省了存儲空間,同時提供數(shù)據(jù)導(dǎo)出功能,實(shí)現(xiàn)與其他子系統(tǒng)的數(shù)據(jù)交互,另外,數(shù)據(jù)查詢功能支持SQL查詢,將SQL查詢語句轉(zhuǎn)換成HBase數(shù)據(jù)庫的查詢語句,使用戶更平滑地過渡到HBase數(shù)據(jù)庫。
      【專利附圖】

      【附圖說明】
      [0037]圖1為本發(fā)明所述一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法流程圖;
      [0038]圖2為本發(fā)明所述一種將關(guān)系型數(shù)據(jù)遷移至HBase的系統(tǒng)框圖;
      [0039]圖3為按關(guān)鍵字查詢關(guān)系數(shù)據(jù)庫與HBase數(shù)據(jù)庫時的查詢性能對比圖;
      [0040]圖4為按條件查詢關(guān)系數(shù)據(jù)庫與HBase數(shù)據(jù)庫時的查詢性能對比圖。[0041]附圖中,各標(biāo)號所代表的部件列表如下:
      [0042]1、關(guān)系數(shù)據(jù)庫,2、HBase數(shù)據(jù)庫,3、SQL解析模塊,4、查詢轉(zhuǎn)換模塊,5、數(shù)據(jù)模式管理模塊。
      【具體實(shí)施方式】
      [0043]以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
      [0044]如圖1所示,一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法,包括如下步驟:
      [0045]步驟1:建立HBase數(shù)據(jù)庫,并建立用于存儲關(guān)系數(shù)據(jù)庫中數(shù)據(jù)表與HBase中相應(yīng)的數(shù)據(jù)存儲表間映射關(guān)系的映射關(guān)系表;
      [0046]步驟2:選定一個或一個以上的關(guān)系型數(shù)據(jù)表,并為選定的每個關(guān)系型數(shù)據(jù)表定義映射方式,記錄在映射關(guān)系表中;
      [0047]步驟3:導(dǎo)入數(shù)據(jù)時,查詢映射關(guān)系表中的映射方式,并根據(jù)映射方式建立相應(yīng)的數(shù)據(jù)存儲表;
      [0048]步驟4:將步驟2中所述一個或一個以上的關(guān)系型數(shù)據(jù)表中的數(shù)據(jù)按照步驟3中所述的映射關(guān)系遷移至建立的數(shù)據(jù)存儲表中;
      [0049]步驟5:判斷是否還有關(guān)系型數(shù)據(jù)要遷移到HBase數(shù)據(jù)庫中,如果有返回步驟2,否則結(jié)束。
      [0050]其中,上述技術(shù)方案還包括當(dāng)要從HBase數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù)時,具體實(shí)現(xiàn)如下:首先,根據(jù)用戶提供的導(dǎo)出配置文件獲取待導(dǎo)出數(shù)據(jù)在原關(guān)系型數(shù)據(jù)表中的位置信息;其次,根據(jù)待導(dǎo)出數(shù)據(jù)在原關(guān)系型數(shù)據(jù)表中的位置信息,在映射關(guān)系表中查找出待導(dǎo)出數(shù)據(jù)在HBase數(shù)據(jù)庫的數(shù)據(jù)存儲表中相應(yīng)的位置信息;最后,按照關(guān)系映射表中定義的數(shù)據(jù)類型將待導(dǎo)出數(shù)據(jù)導(dǎo)出。
      [0051]其中,上述技術(shù)方案還包括當(dāng)要從HBase數(shù)據(jù)庫中查詢數(shù)據(jù)時,具體實(shí)現(xiàn)如下:首先,解析所述查詢語句,提取出查詢信息,并轉(zhuǎn)換成HBase數(shù)據(jù)庫的查詢語句;其次,根據(jù)已轉(zhuǎn)換的查詢語句在映射關(guān)系表中查找待查詢數(shù)據(jù)在數(shù)據(jù)存儲表中的位置信息;最后,根據(jù)查詢到的位置信息,查詢數(shù)據(jù)存儲表中的相應(yīng)數(shù)據(jù)。
      [0052]映射關(guān)系表邏輯上包括表名映射和列映射表。關(guān)系數(shù)據(jù)庫中通常包含庫、模式、表格或類似的三層視圖;而HBase數(shù)據(jù)庫中的表格是平坦化組織的,表格之上沒有模式、庫之類的概念。因此需要將關(guān)系數(shù)據(jù)庫的樹狀名字空間映射為平坦的名字空間,表名映射表中存儲的即是以上映射關(guān)系。關(guān)系數(shù)據(jù)庫與HBase更大的不同在于,關(guān)系數(shù)據(jù)庫的表格屬性是行、列二維的,而HBase是多維的,行方向?yàn)樾墟I維,列方向有列簇和列。為了提高訪問性能,Hbase中的數(shù)據(jù)存儲表的模式設(shè)計(jì)應(yīng)充分利用其特性進(jìn)行數(shù)據(jù)組織和存儲。
      [0053]所述原關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)表與HBase中數(shù)據(jù)存儲表的映射關(guān)系包括表映射方式和列映射方式,
      [0054]所述表映射方式包括一對一映射和多對一映射,具體體現(xiàn)在表名的映射,所述表名的映射為根據(jù)表名轉(zhuǎn)換運(yùn)算進(jìn)行映射,表名轉(zhuǎn)換運(yùn)算包括一對一哈希運(yùn)算和多對一哈希運(yùn)算。
      [0055]其中,一對一映射;將關(guān)系型數(shù)據(jù)庫中一個數(shù)據(jù)表映射到HBase數(shù)據(jù)庫中的一個數(shù)據(jù)存儲表中,原關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)表的表名經(jīng)過一致的hash計(jì)算得到映射后的表名,即為HBase中對應(yīng)的表名,此種一對一映射為本系統(tǒng)提供的默認(rèn)的表映射方式。
      [0056]而表的多對一的表映射方式,即對于表達(dá)相同業(yè)務(wù)且表格模式一致的多張表(來自同一關(guān)系型數(shù)據(jù)庫或多個關(guān)系型數(shù)據(jù)庫),允許用戶將其映射到HBase的一個數(shù)據(jù)存儲表中,原關(guān)系型數(shù)據(jù)庫中的多個數(shù)據(jù)表的表名經(jīng)過一致的hash計(jì)算得到映射后的表名,即為HBase中對應(yīng)的表名,此種多對一映射為本系統(tǒng)提供的多對一表映射方式。
      [0057]所述列映射方式包括默認(rèn)方式、時序方式和用戶自定義方式,所述默認(rèn)方式即關(guān)
      系數(shù)據(jù)庫中表格內(nèi)所有列與ffiase的數(shù)據(jù)存儲表格的一個列簇內(nèi)的所有列--對應(yīng);所述
      時序方式即將關(guān)系數(shù)據(jù)庫中表格內(nèi)所有時間值屬性列在HBase的數(shù)據(jù)存儲表中單獨(dú)定義一個列簇,該列簇包含一個列,將遷移的數(shù)據(jù)按照不同時間點(diǎn)對應(yīng)于該列不同的時間戳上;所述用戶自定義映射即根據(jù)用戶的需要進(jìn)行自定義。
      [0058]所述數(shù)據(jù)存儲表中包括一個特殊的列即為行鍵列,所述行鍵列的映射方式包括單關(guān)鍵字型和多關(guān)鍵字型,所述單關(guān)鍵字型是以原關(guān)系數(shù)據(jù)庫中表格的一個列屬性直接作為行鍵,多關(guān)鍵字型是將原關(guān)系數(shù)據(jù)庫中表格的多個列屬性拼接為一個行鍵,所選列屬性、用于拼接各列屬性的連接字符或字符串,以及行鍵的排列順序由用戶自定義。
      [0059]實(shí)施例1中,表映射采用一對一映射,列映射采用默認(rèn)方式,行鍵為多關(guān)鍵字型。如表1為關(guān)系數(shù)據(jù)庫中表名為tl的模式定義,表2、表3分別為映射到HBase中相應(yīng)的表名為hash(tl)的模式定義及數(shù)據(jù)存儲表格模式。
      [0060]表1
      【權(quán)利要求】
      1.一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法,其特征在于,包括如下步驟: 步驟1:建立HBase數(shù)據(jù)庫,并建立用于存儲關(guān)系數(shù)據(jù)庫中數(shù)據(jù)表與HBase中相應(yīng)的數(shù)據(jù)存儲表間映射關(guān)系的映射關(guān)系表; 步驟2:選定一個或一個以上的關(guān)系型數(shù)據(jù)表,并為選定的每個關(guān)系型數(shù)據(jù)表定義映射方式,記錄在映射關(guān)系表中; 步驟3:導(dǎo)入數(shù)據(jù)時,查詢映射關(guān)系表中的映射方式,并根據(jù)映射方式建立相應(yīng)的數(shù)據(jù)存儲表; 步驟4:將步驟2中所述一個或一個以上的關(guān)系型數(shù)據(jù)表中的數(shù)據(jù)按照步驟3中所述的映射關(guān)系遷移至建立的數(shù)據(jù)存儲表中; 步驟5:判斷是否還有關(guān)系型數(shù)據(jù)要遷移到HBase數(shù)據(jù)庫中,如果有返回步驟2,否則結(jié)束。
      2.根據(jù)權(quán)利要求1所述一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法,其特征在于,還包括當(dāng)要從HBase數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù)時,具體實(shí)現(xiàn)如下:首先,根據(jù)用戶提供的導(dǎo)出配置文件獲取待導(dǎo)出數(shù)據(jù)在原關(guān)系型數(shù)據(jù)表中的位置信息;其次,根據(jù)待導(dǎo)出數(shù)據(jù)在原關(guān)系型數(shù)據(jù)表中的位置信息,在映射關(guān)系表中查找出待導(dǎo)出數(shù)據(jù)在HBase數(shù)據(jù)庫的數(shù)據(jù)存儲表中相應(yīng)的位置信息;最后,按照關(guān)系映射表中定義的數(shù)據(jù)類型將待導(dǎo)出數(shù)據(jù)導(dǎo)出。
      3.根據(jù)權(quán)利要求1所述一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法,其特征在于,還包括當(dāng)要從HBase數(shù)據(jù)庫中查詢數(shù)據(jù)時,具體實(shí)現(xiàn)如下:首先,解析所述查詢語句,提取出查詢信息,并轉(zhuǎn)換成HBase數(shù)據(jù)庫的查詢語句;其次,根據(jù)已轉(zhuǎn)換的查詢語句在映射關(guān)系表中查找待查詢數(shù)據(jù)在數(shù)據(jù)存儲表中的位置信息;最后,根據(jù)查詢到的位置信息,查詢數(shù)據(jù)存儲表中的相應(yīng)數(shù)據(jù)。
      4.根據(jù)權(quán)利要求1所述一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法,其特征在于,步驟2中所述映射方式為包括表映射方式和列映射方式, 所述表映射方式包括一對一 映射和多對一映射,具體體現(xiàn)在表名的映射,所述表名的映射為根據(jù)表名轉(zhuǎn)換運(yùn)算進(jìn)行映射,表名轉(zhuǎn)換運(yùn)算包括一對一哈希運(yùn)算和多對一哈希運(yùn)算; 所述列映射方式包括默認(rèn)方式、時序方式和用戶自定義方式,所述默認(rèn)方式即關(guān)系數(shù)據(jù)庫中表格內(nèi)所有列與JlBase的數(shù)據(jù)存儲表格的一個列簇內(nèi)的所有列對應(yīng);所述時序方式即將關(guān)系數(shù)據(jù)庫中表格內(nèi)所有時間值屬性列在HBase的數(shù)據(jù)存儲表中單獨(dú)定義一個列簇,該列簇包含一個列,將遷移的數(shù)據(jù)按照不同時間點(diǎn)對應(yīng)于該列不同的時間戳上;所述用戶自定義映射即根據(jù)用戶的需要進(jìn)行自定義。
      5.根據(jù)權(quán)利要求4所述一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法,其特征在于,步驟3中根據(jù)映射方式建立相應(yīng)的數(shù)據(jù)存儲表,所述數(shù)據(jù)存儲表中包括一個特殊的列即為行鍵列,所述行鍵列的映射方式包括單關(guān)鍵字型和多關(guān)鍵字型,所述單關(guān)鍵字型是以原關(guān)系數(shù)據(jù)庫中表格的一個列屬性直接作為行鍵,多關(guān)鍵字型是將原關(guān)系數(shù)據(jù)庫中表格的多個列屬性拼接為一個行鍵,所選列屬性、用于拼接各列屬性的連接字符或字符串,以及行鍵的排列順序由用戶自定義。
      6.根據(jù)權(quán)利要求1所述一種將關(guān)系型數(shù)據(jù)遷移至HBase的方法,其特征在于,步驟4的具體實(shí)現(xiàn)包括數(shù)據(jù)讀取和數(shù)據(jù)寫入,其中數(shù)據(jù)讀取包括兩種方式,一是通過JDBC從關(guān)系數(shù)據(jù)庫中讀取數(shù)據(jù),二是通過中間文件從關(guān)系數(shù)據(jù)庫中讀取數(shù)據(jù);導(dǎo)入數(shù)據(jù)時,首先在映射關(guān)系表中查找相關(guān)的映射關(guān)系,將讀取的數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制串,根據(jù)映射關(guān)系將其寫入到相應(yīng)的數(shù)據(jù)存儲表中。
      7.一種將關(guān)系型數(shù)據(jù)遷移至HBase的系統(tǒng),其特征在于,包括一個或一個以上的關(guān)系數(shù)據(jù)庫、HBase數(shù)據(jù)庫、SQL解析模塊、查詢轉(zhuǎn)換模塊和數(shù)據(jù)模式管理模塊; 所述每個關(guān)系數(shù)據(jù)庫,其用于存儲關(guān)系型數(shù)據(jù),作為數(shù)據(jù)遷移的源端; 所述HBase數(shù)據(jù)庫,其用于建立映射關(guān)系表來存儲關(guān)系數(shù)據(jù)庫中數(shù)據(jù)表與HBase中相應(yīng)的數(shù)據(jù)存儲表間的映射關(guān)系,并將從關(guān)系型數(shù)據(jù)庫中遷移來的數(shù)據(jù)按照預(yù)定的映射關(guān)系存儲在相應(yīng)的數(shù)據(jù)存儲表中; 所述SQL解析模塊,其用于提供SQL查詢功能,對SQL查詢語句進(jìn)行解析,并將解析出的查詢信息傳送給查詢轉(zhuǎn)換模塊; 所述查詢轉(zhuǎn)換模塊,其用于將接收的查詢信息轉(zhuǎn)換成HBase數(shù)據(jù)庫的查詢語句,并傳送給數(shù)據(jù)模式管理模塊; 所述數(shù)據(jù)模式管理模塊,其用于在向HBase導(dǎo)入、導(dǎo)出和查詢數(shù)據(jù)時,調(diào)取相應(yīng)接口,在HBase的映射關(guān)系表中查詢映射關(guān)系,為數(shù)據(jù)導(dǎo)入、導(dǎo)出和查詢提供查詢依據(jù)。
      8.根據(jù)權(quán)利要求7所述一種將關(guān)系型數(shù)據(jù)遷移至HBase的系統(tǒng),其特征在于,所述預(yù)定的映射關(guān)系包括表映射方式和列映射方式, 所述表映射方式包括一對一映射和多對一映射,具體體現(xiàn)在表名的映射,所述表名的映射為根據(jù)表名轉(zhuǎn)換運(yùn)算進(jìn)行映射,表名轉(zhuǎn)換運(yùn)算包括一對一哈希運(yùn)算和多對一哈希運(yùn)算; 所述列映射方式包括默認(rèn)方式、時序方式和用戶自定義方式,所述默認(rèn)方式即關(guān)系數(shù)據(jù)庫中表格內(nèi)所有列與JlBase的數(shù)據(jù)存儲表格的一個列簇內(nèi)的所有列對應(yīng);所述時序方式即將關(guān)系數(shù)據(jù)庫中表格內(nèi)所有時間值屬性列在HBase的數(shù)據(jù)存儲表中單獨(dú)定義一個列簇,該列簇包含一個列,將遷移的數(shù)據(jù)按照不同時間點(diǎn)對應(yīng)于該列不同的時間戳上;用戶自定義映射即根據(jù)用戶的需要進(jìn)行自定義。
      9.根據(jù)權(quán)利要求7所述一種將關(guān)系型數(shù)據(jù)遷移至HBase的系統(tǒng),其特征在于,所述關(guān)系數(shù)據(jù)庫提供JDBC接口以實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫中表格模式的獲取及待遷移數(shù)據(jù)的讀??;所述HBase數(shù)據(jù)庫提供接口以實(shí)現(xiàn)數(shù)據(jù)的讀寫。
      10.根據(jù)權(quán)利要求7所述一種數(shù)據(jù)遷移的方法,其特征在于,所述SQL解析模塊包括語法解析單元和語義解析單元; 所述語法解析單元,其用于通過正則表達(dá)式判斷SQL查詢語句的合法性; 所述語義查詢單元,其用于提取具體的查詢信息。
      11.根據(jù)權(quán)利要求7所述一種將關(guān)系型數(shù)據(jù)遷移至HBase的系統(tǒng),其特征在于,所述映射關(guān)系表包括行鍵和一個列簇,所述列簇中包括若干列,分別為tOc、TN、aNULL、DT、DL、isK、CFN, CN,TS ;其中,tOc標(biāo)識所填內(nèi)容為表信息還是列信息,TN中所填內(nèi)容為表名,aNULL標(biāo)識能否允許為空,DT標(biāo)識數(shù)據(jù)類型,DL標(biāo)識數(shù)據(jù)長度,isK標(biāo)識是否主鍵,CFN標(biāo)識是否為時序映射、CN為主鍵名,TS為 時間戳方式。
      【文檔編號】G06F17/30GK103631907SQ201310612192
      【公開日】2014年3月12日 申請日期:2013年11月26日 優(yōu)先權(quán)日:2013年11月26日
      【發(fā)明者】戴嬌, 文杰, 韓冀中, 周薇 申請人:中國科學(xué)院信息工程研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1