宋春紅,王佳斌,鄭力新
(1. 華僑大學(xué) 工學(xué)院,福建 泉州 362021; 2. 華僑大學(xué) 工業(yè)智能化技術(shù)與系統(tǒng)福建省高校工程研究中心,福建 泉州 362000)
?
一種MySQL到HBase的遷移策略的研究與實(shí)現(xiàn)*
宋春紅1,王佳斌2,鄭力新1
(1. 華僑大學(xué) 工學(xué)院,福建 泉州 362021; 2. 華僑大學(xué) 工業(yè)智能化技術(shù)與系統(tǒng)福建省高校工程研究中心,福建 泉州 362000)
摘要:隨著Web2.0的到來(lái),互聯(lián)網(wǎng)數(shù)據(jù)快速增長(zhǎng)。大規(guī)模數(shù)據(jù)的采集和處理及應(yīng)用直接影響著用戶體驗(yàn),決定著企業(yè)的發(fā)展。比較傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)和分布式非關(guān)系型數(shù)據(jù)庫(kù)兩者處理大數(shù)據(jù)的性能,將本地?cái)?shù)據(jù)遷移到分布式數(shù)據(jù)庫(kù)勢(shì)在必行。文章分析了現(xiàn)有遷移工具的利弊,基于HBase數(shù)據(jù)庫(kù)提出了一種有效的數(shù)據(jù)遷移策略,并依據(jù)提出的策略實(shí)現(xiàn)了一種半自動(dòng)化遷移工具。以美國(guó)城市和方言系統(tǒng)CityDetail數(shù)據(jù)庫(kù)數(shù)據(jù)為例,闡述了該遷移工具的工作原理并對(duì)遷移后的數(shù)據(jù)進(jìn)行多次查詢比較,證明了使用該工具進(jìn)行數(shù)據(jù)遷移的高效性。
關(guān)鍵詞:關(guān)系型數(shù)據(jù)庫(kù);HBase;遷移工具
引用格式:宋春紅,王佳斌,鄭力新. 一種MySQL到HBase的遷移策略的研究與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2016,35(13):82-85,89.
0引言
Web2.0時(shí)代,網(wǎng)絡(luò)技術(shù)飛速發(fā)展,個(gè)人與企業(yè)都在不斷地創(chuàng)造海量數(shù)據(jù),在新的掘金大潮中,如何利用數(shù)據(jù)以及將數(shù)據(jù)轉(zhuǎn)化為有價(jià)值信息的速度,越來(lái)越成為企業(yè)成功與否的決定性因素。實(shí)現(xiàn)數(shù)據(jù)的快速分析,并做出指導(dǎo),對(duì)數(shù)據(jù)存儲(chǔ)提出了更大的挑戰(zhàn)。雖然傳統(tǒng)數(shù)據(jù)庫(kù)已經(jīng)發(fā)展了很多年,在企業(yè)應(yīng)用方面也形成了很大的使用規(guī)模,但是其在處理大數(shù)據(jù)應(yīng)用方面仍然存在不足[1]。首先,傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)無(wú)法完成大規(guī)模水平拓展,盡管網(wǎng)絡(luò)解決方案在一定程度上解決了這個(gè)問(wèn)題,但網(wǎng)絡(luò)中仍無(wú)法動(dòng)態(tài)地創(chuàng)建集群;其次,關(guān)系型數(shù)據(jù)庫(kù)無(wú)法有效存儲(chǔ)Web2.0時(shí)代的半結(jié)構(gòu)及非結(jié)構(gòu)化數(shù)據(jù);此外傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)也無(wú)法滿足大數(shù)據(jù)時(shí)代對(duì)海量數(shù)據(jù)高效查詢的需求。
非關(guān)系型數(shù)據(jù)庫(kù)的出現(xiàn)彌補(bǔ)了傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)在處理大規(guī)模數(shù)據(jù)中的不足。非關(guān)系型數(shù)據(jù)庫(kù)是對(duì)Cassandra、MongoDB和HBase等眾多支持非關(guān)系化以及弱關(guān)系化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)的統(tǒng)稱。非關(guān)系型數(shù)據(jù)庫(kù)中的表主要采用聚合的存儲(chǔ)結(jié)構(gòu),這就使得數(shù)據(jù)管理更為方便[2];通過(guò)預(yù)分配空間機(jī)制輕松實(shí)現(xiàn)了海量數(shù)據(jù)存儲(chǔ);可通過(guò)連續(xù)添加服務(wù)節(jié)點(diǎn)來(lái)實(shí)現(xiàn)擴(kuò)展,不需要停機(jī)維護(hù)和數(shù)據(jù)遷移。此外,眾多的非關(guān)系型數(shù)據(jù)庫(kù)有著強(qiáng)大的業(yè)務(wù)針對(duì)性,在應(yīng)用性能上較傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)有著顛覆性的提升。其中HBase憑借著與Hadoop的無(wú)縫集成和強(qiáng)大的高擴(kuò)展性以及擁有巨大的多元化社區(qū)的優(yōu)勢(shì)[3],被各大互聯(lián)網(wǎng)企業(yè)爭(zhēng)相應(yīng)用。
HBase的廣泛應(yīng)用,使得存儲(chǔ)在傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)中的歷史數(shù)據(jù)向HBase的遷移成為當(dāng)下研究熱點(diǎn)。
1國(guó)內(nèi)外研究現(xiàn)狀
針對(duì)傳統(tǒng)關(guān)系型數(shù)據(jù)向HBase遷移的研究,目前,業(yè)界只提出了一些數(shù)據(jù)遷移的方法,卻很少有比較權(quán)威的數(shù)據(jù)遷移工具,更沒(méi)有可以遷移原有表模式或者自動(dòng)化的遷移工具。
現(xiàn)有的遷移工具如Hadoop的官方工具Sqoop只支持單表的增量加載,無(wú)法完成數(shù)據(jù)庫(kù)系統(tǒng)中眾多表模式的遷移;HBase的Importtsv工具只支持TSV等指定文件的遷移;Put方法雖然簡(jiǎn)單直接但也只是完成數(shù)據(jù)的遷移且遷移效率不佳。此外國(guó)內(nèi)外的大型互聯(lián)網(wǎng)公司如微軟、華為等也都爭(zhēng)相開(kāi)發(fā)自己的遷移工具,但多是基于自身的商業(yè)應(yīng)用[4]。
綜上所述,實(shí)現(xiàn)一個(gè)自動(dòng)化或半自動(dòng)化的數(shù)據(jù)遷移工具很有必要。這樣可以更大限度地利用業(yè)務(wù)存儲(chǔ)在原有關(guān)系型數(shù)據(jù)庫(kù)中的歷史數(shù)據(jù),減少數(shù)據(jù)之間關(guān)系等珍貴資源的浪費(fèi),此外,也將避免人工再次錄入。本文針對(duì)關(guān)系型數(shù)據(jù)庫(kù)MySQL和非關(guān)系型數(shù)據(jù)庫(kù)HBase的存儲(chǔ)原理和表結(jié)構(gòu)進(jìn)行了深入研究,并以CityDetail系統(tǒng)為例闡述了傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)向HBase遷移的思想,并設(shè)計(jì)實(shí)現(xiàn)了遷移工具。最終,驗(yàn)證了通過(guò)此方法進(jìn)行數(shù)據(jù)遷移后,對(duì)數(shù)據(jù)庫(kù)查詢的高效性。
2數(shù)據(jù)庫(kù)的存儲(chǔ)原理分析
2.1關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)原理
關(guān)系型數(shù)據(jù)庫(kù)[5]是一種建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù)。關(guān)系型數(shù)據(jù)庫(kù)中用一張二維表代表現(xiàn)實(shí)世界中的實(shí)體,用表中的字段代表實(shí)體的屬性,用外鍵等聯(lián)合操作代表實(shí)體之間的關(guān)系。表中的一行即一個(gè)記錄代表了一個(gè)實(shí)體,一個(gè)或多個(gè)這樣的表以及表之間的關(guān)系組成了一個(gè)關(guān)系型數(shù)據(jù)庫(kù)。
關(guān)系型數(shù)據(jù)庫(kù)MySQL中默認(rèn)安裝INFORMATION_SCHEMA數(shù)據(jù)庫(kù)。INFORMATION_SCHEMA數(shù)據(jù)庫(kù)中存儲(chǔ)著MySQL中所有數(shù)據(jù)庫(kù)的表名、列名、記錄條數(shù)、主鍵、外鍵以及過(guò)程和方法等信息。這些存儲(chǔ)在INFORMATION_SCHEMA中的數(shù)據(jù)就叫做數(shù)據(jù)庫(kù)系統(tǒng)的元數(shù)據(jù)。如圖1所示。
圖1 元數(shù)據(jù)圖例
元數(shù)據(jù)是用來(lái)描述數(shù)據(jù)的數(shù)據(jù)[6],用來(lái)支持如數(shù)據(jù)的存儲(chǔ)位置、歷史數(shù)據(jù)、資源查找等功能。元數(shù)據(jù)可以視為一種電子目錄,用來(lái)協(xié)助數(shù)據(jù)檢索。在關(guān)系型數(shù)據(jù)庫(kù)中利用DESCRIB等SQL語(yǔ)句進(jìn)行檢索時(shí)就是查詢的數(shù)據(jù)庫(kù)中的這些元數(shù)據(jù)。因此,在數(shù)據(jù)遷移的過(guò)程中,可以利用對(duì)關(guān)系型數(shù)據(jù)庫(kù)中元數(shù)據(jù)表的查詢快速獲取關(guān)系型數(shù)據(jù)庫(kù)中各個(gè)表的模式和各表之間的關(guān)系,然后進(jìn)行遷移。
2.2HBase的存儲(chǔ)原理
非關(guān)系型數(shù)據(jù)庫(kù)HBase是對(duì)Google的BigTable數(shù)據(jù)庫(kù)的開(kāi)源實(shí)現(xiàn)。它經(jīng)常被描述為是一種稀疏的、分布式的、持久化的多為映射[7]。HBase中的邏輯視圖如圖2所示。
圖2 HBase邏輯視圖
由圖2可以看出HBase的表是一個(gè)稀疏矩陣。HBase與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)表所不同的是:它可以存儲(chǔ)半結(jié)構(gòu)化數(shù)據(jù),即HBase中的表在設(shè)計(jì)上沒(méi)有嚴(yán)格的限制[8],數(shù)據(jù)記錄可能包含不一致的列、不確定大小等。此外,與關(guān)系型數(shù)據(jù)庫(kù)不同,HBase在存儲(chǔ)上基于列而非行,因此對(duì)同列中的數(shù)據(jù)具有較好的查詢性能。HBase表可以有數(shù)百萬(wàn)列和數(shù)十億行,因此可以用來(lái)存儲(chǔ)大規(guī)模數(shù)據(jù)。HBase中實(shí)際上定義了如下的思維數(shù)據(jù)模型[7],分別為:
(1)表。HBase用表來(lái)組織數(shù)據(jù),表名為字符串。
(2)行鍵。HBase表中,數(shù)據(jù)按行存儲(chǔ)。行由行鍵唯一標(biāo)志,行鍵沒(méi)有數(shù)據(jù)類(lèi)型,總是被視為字節(jié)數(shù)組。
(3)列族。表中的數(shù)據(jù)在行中被組織成列族,列族也影響到HBase數(shù)據(jù)的物理存放。系統(tǒng)會(huì)把列族存儲(chǔ)在HBase自己的數(shù)據(jù)庫(kù)中,所以列族要在建表時(shí)定義好并且不能輕易修改。此外,HBase中每行有相同的列族,相同列族下可以擁有不同的列限定符。
(4)列限定符。列族里的數(shù)據(jù)通過(guò)列限定符或列來(lái)定位。與列族不同,列限定符可以不必事前定義。列限定符也不必在不同行之間保持一致。列限定符沒(méi)有數(shù)據(jù)類(lèi)型,總是視為字節(jié)數(shù)組。
(5)單元。行鍵、列族和列限定符一起確定了一個(gè)單元。存儲(chǔ)在單元里的數(shù)據(jù)稱為單元值。值沒(méi)有數(shù)據(jù)類(lèi)型,視為字節(jié)數(shù)組byte[]。
(6)時(shí)間版本。HBase中用版本來(lái)存儲(chǔ)單元值在不同時(shí)間的值,默認(rèn)存儲(chǔ)3個(gè)版本。時(shí)間版本用時(shí)間戳來(lái)標(biāo)識(shí)。
在物理上,HBase的數(shù)據(jù)存儲(chǔ)在HDFS中,能夠很好地利用HDFS的分布式處理模式,并從Hadoop的MapReduce程序模型中獲益。HBase邏輯上的表在行的方向上分割成多個(gè)HRegion,HRegion按大小分割,每張表開(kāi)始只有一個(gè)Region,隨著記錄數(shù)的不斷增加,Region不斷增大,當(dāng)增大到一定程度時(shí),HRegion會(huì)被等分成兩個(gè)新的HRegion。HRegion是HBase中分布式存儲(chǔ)和負(fù)載均衡的最小單元,但卻不是存儲(chǔ)的最小單元。HRegion由一個(gè)或者多個(gè)Store組成,每個(gè)Store保存了表中的一個(gè)列族。每個(gè)Store又由一個(gè)Memstore和0至多個(gè)StoreFile(HFile)組成,StoreFile用來(lái)存儲(chǔ)數(shù)據(jù)并以HFile的形式保存在HDFS上[9]。
3遷移工具的主要模塊
本遷移系統(tǒng)的主要組成模塊為如下幾個(gè)部分。
3.1提取源數(shù)據(jù)庫(kù)中的表模式
通過(guò)對(duì)傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)中存儲(chǔ)結(jié)構(gòu)的分析可知,INFORMATION_SCHEMA數(shù)據(jù)庫(kù)存儲(chǔ)了MySQL中所有數(shù)據(jù)表的元數(shù)據(jù),因此可以通過(guò)對(duì)這些元數(shù)據(jù)的訪問(wèn),快速提取到要遷移的MySQL數(shù)據(jù)庫(kù)中所有源數(shù)據(jù)的表模式。
INFORMATION_SCHEMA數(shù)據(jù)庫(kù)中的SCHEMATA表提供了當(dāng)前MySQL實(shí)例中所有數(shù)據(jù)庫(kù)的信息,SQL查詢語(yǔ)言show datatables的結(jié)果就是出自此表。TABLES表提供了關(guān)于數(shù)據(jù)庫(kù)中的表信息,詳細(xì)描述了某個(gè)表屬于哪個(gè)SCHEMA以及表類(lèi)型、表名稱、每個(gè)表的記錄數(shù)以及創(chuàng)建時(shí)間等信息。COLUMNS表提供了表中的列信息,詳細(xì)表述了某張表的所有列以及每個(gè)列的信息。STATISTICS表提供了表中所有的索引信息,此外還有描述表的用戶權(quán)限等的元數(shù)據(jù)。通過(guò)對(duì)這些表的聯(lián)合訪問(wèn),可以快速提取源數(shù)據(jù)庫(kù)模式,避免因?qū)?shù)據(jù)庫(kù)中的數(shù)據(jù)表的訪問(wèn)而延長(zhǎng)響應(yīng)時(shí)間。
3.2表模式的轉(zhuǎn)換
通過(guò)對(duì)HBase數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)的研究可知,HBase數(shù)據(jù)庫(kù)中表的結(jié)構(gòu)與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)有所不同。HBase中的各表之間不存在關(guān)聯(lián)關(guān)系,也不存在關(guān)系型數(shù)據(jù)庫(kù)中的Join連接查詢等操作。要進(jìn)行表模式的遷移就必須將傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)中存在相互聯(lián)系的數(shù)據(jù)遷移到HBase中的同一行中??紤]到HBase數(shù)據(jù)庫(kù)的特殊表結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu),為了使遷移后的數(shù)據(jù)盡量不影響業(yè)務(wù)功能,對(duì)數(shù)據(jù)的表模式做以下轉(zhuǎn)換[10]:
(1)基本表的轉(zhuǎn)換
對(duì)CityDetail系統(tǒng)中的所有表進(jìn)行基本轉(zhuǎn)換就是直接將源數(shù)據(jù)表遷移到HBase端。把源數(shù)據(jù)表的表名作為HBase表的表名,主鍵作為行鍵,表名和列名的組合作為HBase端表中的列限定符,版本設(shè)置為1。
(2)內(nèi)嵌轉(zhuǎn)換
在CityDetail系統(tǒng)中存在Country表與City表之間的關(guān)聯(lián)關(guān)系,同時(shí)存在Country表與CountryLanguage表之間的關(guān)聯(lián)關(guān)系。HBase中的物理存儲(chǔ)結(jié)構(gòu)決定了HBase表的不同列族存儲(chǔ)在不同的Store文件中,又因?yàn)樵磾?shù)據(jù)中對(duì)不同表的連接查詢操作要遠(yuǎn)遠(yuǎn)少于單表的操作,因此將City表和CountryLanguage表分別作為Country表的一個(gè)列族進(jìn)行存儲(chǔ)即可。所以,要實(shí)現(xiàn)這類(lèi)表的遷移就要保留Country的表模式,然后對(duì)City表和CountryLanguage表進(jìn)行分割,作為Country表的一個(gè)列族添加在Country表中。
(3)遞歸轉(zhuǎn)換
在CityDetail系統(tǒng)中除存在Country表與City表之間的關(guān)聯(lián)關(guān)系外,還存在著下一級(jí)如Detail表和City表之間的關(guān)聯(lián)關(guān)系。要完成這一類(lèi)型表的遷移,就要在Country表和City表進(jìn)行內(nèi)嵌轉(zhuǎn)換的基礎(chǔ)上,對(duì)City表和Detail表也進(jìn)行深一級(jí)的內(nèi)嵌變換。根據(jù)遞歸原理,先將Detail表進(jìn)行分割,作為City表相應(yīng)行中的一個(gè)列族,然后再對(duì)City表進(jìn)行分割,作為Country表的一個(gè)列族進(jìn)行遷移。
(4)分割轉(zhuǎn)換
根據(jù)關(guān)系型數(shù)據(jù)庫(kù)的關(guān)系范式[11]可知,表之間還可能存在同一個(gè)表Describe是另外三個(gè)表Country、City和CountryLanguage的子表的情況,針對(duì)這類(lèi)關(guān)系的轉(zhuǎn)換可以通過(guò)對(duì)Describe表進(jìn)行分割,并分別添加到三個(gè)表對(duì)應(yīng)的列族下的方法來(lái)完成。
通過(guò)以上四種轉(zhuǎn)換方式的整合應(yīng)用,最終完成CityDetail系統(tǒng)的所有表模式的遷移。
4設(shè)計(jì)實(shí)現(xiàn)
本文設(shè)計(jì)的遷移系統(tǒng)流程圖如圖3所示。
圖3 遷移系統(tǒng)流程圖
(1)連接關(guān)系型數(shù)據(jù)庫(kù)MySQL
首先在Java程序中使用Class.forName()語(yǔ)句加載MySQL的JDBC驅(qū)動(dòng)程序,然后用語(yǔ)句“Connection conn = DriverManager.getConnection(url, user, password)”創(chuàng)建一個(gè)新的連接,進(jìn)而訪問(wèn)數(shù)據(jù)庫(kù)的元數(shù)據(jù),獲取表模式。
(2)模式轉(zhuǎn)換
遍歷(1)中獲取的所有表模式,利用前文提到的四種轉(zhuǎn)換方式轉(zhuǎn)換得到遷移后的HBase中的表模式。
(3)連接HBase數(shù)據(jù)庫(kù)
通過(guò)語(yǔ)句“Configuration conf=HBaseConfigurAtion.create()”獲取HBase數(shù)據(jù)庫(kù)中的配置信息,然后用語(yǔ)句“table=new HTable(conf,tablename)”在HBase中創(chuàng)建新表,根據(jù)(2)中轉(zhuǎn)換得到的表模式,用語(yǔ)句“byte[] family=Bytes.toBytes("n")”指定各列族的名稱。至此,遷移系統(tǒng)的表模式遷移完畢。
(4)數(shù)據(jù)遷移
在數(shù)據(jù)遷移模塊中要分別連接兩個(gè)數(shù)據(jù)庫(kù)。首先,連接MySQL數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)MySQL Object用于訪問(wèn)MySQL中指定的數(shù)據(jù)庫(kù),用SQL查詢語(yǔ)句循環(huán)遍歷數(shù)據(jù),獲取數(shù)據(jù)庫(kù)中的記錄,然后連接創(chuàng)建的HBase數(shù)據(jù)表,生成HBase Object,用Put方法依次將SELECT查詢獲取的數(shù)據(jù)記錄插入到HBase的表中,最終關(guān)閉數(shù)據(jù)對(duì)象,完成數(shù)據(jù)遷移。
5測(cè)試與結(jié)論
實(shí)驗(yàn)測(cè)試在Hadoop集群上進(jìn)行,集群包括4臺(tái)主機(jī),每臺(tái)主機(jī)都安裝了Hadoop、HBase和Zookeeper,集群信息如表1所示。
表1 集群配置信息
本試驗(yàn)分別用本文所提數(shù)據(jù)遷移工具與Apache為Hadoop配置的官方數(shù)據(jù)遷移工具Sqoop對(duì)CityDetail系統(tǒng)進(jìn)行遷移,并使用不同大小的數(shù)據(jù)集對(duì)兩種工具的遷移過(guò)程和結(jié)果進(jìn)行了對(duì)比。
首先,在遷移過(guò)程的繁簡(jiǎn)方面,Sqoop工具是在終端上通過(guò)指定參數(shù)包括連接數(shù)據(jù)庫(kù)的語(yǔ)句、遷移前后的數(shù)據(jù)表名、屬性名等來(lái)完成數(shù)據(jù)的遷移。在參數(shù)指定上比較繁瑣,不容易操作。而本文遷移工具從獲取表模式到建立HBase數(shù)據(jù)表和遷移數(shù)據(jù)均由系統(tǒng)自動(dòng)完成,比較而言,自動(dòng)化程度較高。
其次,在查詢性能上,由于本文遷移工具完成了表模型的轉(zhuǎn)換和遷移,而Sqoop只是機(jī)械化地遷移了特定表中的數(shù)據(jù),并沒(méi)有進(jìn)行表模式的遷移,兩者比較,前者遷移結(jié)果存在很大的優(yōu)勢(shì)。以典型的SQL查詢語(yǔ)句:“SELECT Name,Language where Country.CountryCode=Language.CountryCode” 為例,兩者的查詢結(jié)果如圖4。
圖4 查詢結(jié)果對(duì)比圖
從圖4可以看出,本文遷移工具較Sqoop在查詢性能上有了很大的改善。因?yàn)楸疚倪w移工具通過(guò)對(duì)表模式的轉(zhuǎn)換,將屬于同一條記錄的信息存儲(chǔ)在了一個(gè)HRegion中,同一表中的數(shù)據(jù)存儲(chǔ)在了同一個(gè)Store文件中,查詢時(shí),減少了多次尋址的過(guò)程,從而降低了系統(tǒng)響應(yīng)時(shí)間。
6結(jié)論
本文通過(guò)對(duì)CityDetail系統(tǒng)從MySQL數(shù)據(jù)庫(kù)到HBase數(shù)據(jù)庫(kù)的遷移案例分析,研究了MySQL數(shù)據(jù)庫(kù)和HBase數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的原理,提出通過(guò)訪問(wèn)MySQL數(shù)據(jù)庫(kù)元數(shù)據(jù)快速提取表模式并轉(zhuǎn)換遷移的方法,解決了以往遷移工具不能遷移表模式的問(wèn)題。在盡量保證數(shù)據(jù)完整性的前提下,提高了遷移速度、自動(dòng)化程度和遷移后數(shù)據(jù)的查詢性能。但是,由于HBase中存在唯一索引,在多條件查詢上的查詢性能肯定會(huì)較MySQL有較大的下降,因此關(guān)于索引的優(yōu)化還有待學(xué)習(xí)和研究。
參考文獻(xiàn)
[1] 莫扎特.大數(shù)據(jù)和NoSQL:關(guān)系型數(shù)據(jù)庫(kù)的不足之處[EB/OL].(2014-08-11)[2016-03-10].http://www.36dsj.com/archives/11078.
[2] 邱勝海,高成沖,王云霞,等.大數(shù)據(jù)時(shí)代非關(guān)系型數(shù)據(jù)庫(kù)教學(xué)與實(shí)驗(yàn)改革探索[J].電腦知識(shí)與技術(shù),2013(31):7046-7048.
[3] 唐長(zhǎng)城,楊峰,代棟,等.一種基于HBase的數(shù)據(jù)持久性和可用性研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(10):175-178.
[4] 蔣燚峰.HBase管理指南[M].北京:人民郵電出版社,2013.
[5] 黎明.昆明學(xué)院信息系統(tǒng)分析與設(shè)計(jì)[D].昆明:云南大學(xué),2013.
[6] 趙慶峰,鞠英杰.國(guó)內(nèi)元數(shù)據(jù)研究綜述[J].現(xiàn)代情報(bào),2003,23(11):42-45.
[7] DIMIDUK N, KAURANA A.HBase實(shí)戰(zhàn)[M].謝磊,譯.北京:人民郵電出版社,2013.
[8] 平利強(qiáng).基于云計(jì)算的海量時(shí)空數(shù)據(jù)存儲(chǔ)及挖掘方法的研究和應(yīng)用[D].杭州:杭州電子科技大學(xué),2014.
[9] 郝樹(shù)魁. 分布式存儲(chǔ)系統(tǒng)HBase原理解析[EB/OL].(2010-12-16)[2016-03-10].http://www.paper.edu.cn/releasepaper/content/201012-591.
[10] Fu Zhicheng,Liu Chen.A general research on database migration from RDBMS to HBase[EB/OL]. (2015-03-17)[2016-03-07].http://www.paper.edu.cn/releasepaper/content/201503-145.
[11] 百度百科.關(guān)系型范式[EB/OL].[2016-03-07]. http://baike.so. com/doc/4367825-4573590.html.
*基金項(xiàng)目:泉州市科技局項(xiàng)目(2013Z12);華僑大學(xué)研究生科研創(chuàng)新能力培育計(jì)劃資助項(xiàng)目 (1400222002)
中圖分類(lèi)號(hào):TP31
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.19358/j.issn.1674- 7720.2016.13.027
(收稿日期:2016-03-11)
作者簡(jiǎn)介:
宋春紅(1991-),女,碩士研究生,主要研究方向:大數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)遷移。
王佳斌(1974-),通信作者,男,碩士,副教授,主要研究方向:云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)、傳感器。E-mail:1535123813@qq.com。
鄭力新(1964-),男,博士,教授,主要研究方向:運(yùn)動(dòng)控制與機(jī)器視覺(jué)技術(shù)研究。
Study and realisation on the migration strategy from MySQL to HBase
Song Chunhong1, Wang Jiabin2,Zheng Lixin1
(1. College of Engineering, Huaqiao University, Quanzhou 362021, China; 2. Industrial Intelligent Technologyand the System Engineering Research Center in Fujian Province, Huaqiao University, Quanzhou 362000, China)
Abstract:With the coming of Web2.0,the data of Internet increases rapidly.The user experience is directly influenced by collection and processing of large scale data,which determines the development of the enterprise.Comparing RDBMS and distributed database in processing big data,it’s necessary to migrate data source from RDBMS to distributed database.This paper analyses the advantages and disadvantages of the existing migration tools,proposes an effective data migration strategy based on the HBase and implements a semi-automated migration tool.Finally,this paper takes the CityDetail database system as an example,shows the tool’s operating principles and proves the high effects of this tool by the test result.
Key words:RDBMS; HBase; migration tool
網(wǎng)絡(luò)安全與數(shù)據(jù)管理2016年13期