999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種MySQL到HBase的遷移策略的研究與實現*

2016-08-04 02:08:09宋春紅王佳斌鄭力新
網絡安全與數據管理 2016年13期

宋春紅,王佳斌,鄭力新

(1. 華僑大學 工學院,福建 泉州 362021; 2. 華僑大學 工業智能化技術與系統福建省高校工程研究中心,福建 泉州 362000)

?

一種MySQL到HBase的遷移策略的研究與實現*

宋春紅1,王佳斌2,鄭力新1

(1. 華僑大學 工學院,福建 泉州 362021; 2. 華僑大學 工業智能化技術與系統福建省高校工程研究中心,福建 泉州 362000)

摘要:隨著Web2.0的到來,互聯網數據快速增長。大規模數據的采集和處理及應用直接影響著用戶體驗,決定著企業的發展。比較傳統關系型數據庫和分布式非關系型數據庫兩者處理大數據的性能,將本地數據遷移到分布式數據庫勢在必行。文章分析了現有遷移工具的利弊,基于HBase數據庫提出了一種有效的數據遷移策略,并依據提出的策略實現了一種半自動化遷移工具。以美國城市和方言系統CityDetail數據庫數據為例,闡述了該遷移工具的工作原理并對遷移后的數據進行多次查詢比較,證明了使用該工具進行數據遷移的高效性。

關鍵詞:關系型數據庫;HBase;遷移工具

引用格式:宋春紅,王佳斌,鄭力新. 一種MySQL到HBase的遷移策略的研究與實現[J].微型機與應用,2016,35(13):82-85,89.

0引言

Web2.0時代,網絡技術飛速發展,個人與企業都在不斷地創造海量數據,在新的掘金大潮中,如何利用數據以及將數據轉化為有價值信息的速度,越來越成為企業成功與否的決定性因素。實現數據的快速分析,并做出指導,對數據存儲提出了更大的挑戰。雖然傳統數據庫已經發展了很多年,在企業應用方面也形成了很大的使用規模,但是其在處理大數據應用方面仍然存在不足[1]。首先,傳統關系型數據庫無法完成大規模水平拓展,盡管網絡解決方案在一定程度上解決了這個問題,但網絡中仍無法動態地創建集群;其次,關系型數據庫無法有效存儲Web2.0時代的半結構及非結構化數據;此外傳統的關系型數據庫也無法滿足大數據時代對海量數據高效查詢的需求。

非關系型數據庫的出現彌補了傳統關系型數據庫在處理大規模數據中的不足。非關系型數據庫是對Cassandra、MongoDB和HBase等眾多支持非關系化以及弱關系化數據存儲的數據庫的統稱。非關系型數據庫中的表主要采用聚合的存儲結構,這就使得數據管理更為方便[2];通過預分配空間機制輕松實現了海量數據存儲;可通過連續添加服務節點來實現擴展,不需要停機維護和數據遷移。此外,眾多的非關系型數據庫有著強大的業務針對性,在應用性能上較傳統關系型數據庫有著顛覆性的提升。其中HBase憑借著與Hadoop的無縫集成和強大的高擴展性以及擁有巨大的多元化社區的優勢[3],被各大互聯網企業爭相應用。

HBase的廣泛應用,使得存儲在傳統關系型數據庫中的歷史數據向HBase的遷移成為當下研究熱點。

1國內外研究現狀

針對傳統關系型數據向HBase遷移的研究,目前,業界只提出了一些數據遷移的方法,卻很少有比較權威的數據遷移工具,更沒有可以遷移原有表模式或者自動化的遷移工具。

現有的遷移工具如Hadoop的官方工具Sqoop只支持單表的增量加載,無法完成數據庫系統中眾多表模式的遷移;HBase的Importtsv工具只支持TSV等指定文件的遷移;Put方法雖然簡單直接但也只是完成數據的遷移且遷移效率不佳。此外國內外的大型互聯網公司如微軟、華為等也都爭相開發自己的遷移工具,但多是基于自身的商業應用[4]。

綜上所述,實現一個自動化或半自動化的數據遷移工具很有必要。這樣可以更大限度地利用業務存儲在原有關系型數據庫中的歷史數據,減少數據之間關系等珍貴資源的浪費,此外,也將避免人工再次錄入。本文針對關系型數據庫MySQL和非關系型數據庫HBase的存儲原理和表結構進行了深入研究,并以CityDetail系統為例闡述了傳統關系型數據庫向HBase遷移的思想,并設計實現了遷移工具。最終,驗證了通過此方法進行數據遷移后,對數據庫查詢的高效性。

2數據庫的存儲原理分析

2.1關系型數據庫存儲原理

關系型數據庫[5]是一種建立在關系模型基礎上的數據庫。關系型數據庫中用一張二維表代表現實世界中的實體,用表中的字段代表實體的屬性,用外鍵等聯合操作代表實體之間的關系。表中的一行即一個記錄代表了一個實體,一個或多個這樣的表以及表之間的關系組成了一個關系型數據庫。

關系型數據庫MySQL中默認安裝INFORMATION_SCHEMA數據庫。INFORMATION_SCHEMA數據庫中存儲著MySQL中所有數據庫的表名、列名、記錄條數、主鍵、外鍵以及過程和方法等信息。這些存儲在INFORMATION_SCHEMA中的數據就叫做數據庫系統的元數據。如圖1所示。

圖1 元數據圖例

元數據是用來描述數據的數據[6],用來支持如數據的存儲位置、歷史數據、資源查找等功能。元數據可以視為一種電子目錄,用來協助數據檢索。在關系型數據庫中利用DESCRIB等SQL語句進行檢索時就是查詢的數據庫中的這些元數據。因此,在數據遷移的過程中,可以利用對關系型數據庫中元數據表的查詢快速獲取關系型數據庫中各個表的模式和各表之間的關系,然后進行遷移。

2.2HBase的存儲原理

非關系型數據庫HBase是對Google的BigTable數據庫的開源實現。它經常被描述為是一種稀疏的、分布式的、持久化的多為映射[7]。HBase中的邏輯視圖如圖2所示。

圖2 HBase邏輯視圖

由圖2可以看出HBase的表是一個稀疏矩陣。HBase與傳統關系型數據庫表所不同的是:它可以存儲半結構化數據,即HBase中的表在設計上沒有嚴格的限制[8],數據記錄可能包含不一致的列、不確定大小等。此外,與關系型數據庫不同,HBase在存儲上基于列而非行,因此對同列中的數據具有較好的查詢性能。HBase表可以有數百萬列和數十億行,因此可以用來存儲大規模數據。HBase中實際上定義了如下的思維數據模型[7],分別為:

(1)表。HBase用表來組織數據,表名為字符串。

(2)行鍵。HBase表中,數據按行存儲。行由行鍵唯一標志,行鍵沒有數據類型,總是被視為字節數組。

(3)列族。表中的數據在行中被組織成列族,列族也影響到HBase數據的物理存放。系統會把列族存儲在HBase自己的數據庫中,所以列族要在建表時定義好并且不能輕易修改。此外,HBase中每行有相同的列族,相同列族下可以擁有不同的列限定符。

(4)列限定符。列族里的數據通過列限定符或列來定位。與列族不同,列限定符可以不必事前定義。列限定符也不必在不同行之間保持一致。列限定符沒有數據類型,總是視為字節數組。

(5)單元。行鍵、列族和列限定符一起確定了一個單元。存儲在單元里的數據稱為單元值。值沒有數據類型,視為字節數組byte[]。

(6)時間版本。HBase中用版本來存儲單元值在不同時間的值,默認存儲3個版本。時間版本用時間戳來標識。

在物理上,HBase的數據存儲在HDFS中,能夠很好地利用HDFS的分布式處理模式,并從Hadoop的MapReduce程序模型中獲益。HBase邏輯上的表在行的方向上分割成多個HRegion,HRegion按大小分割,每張表開始只有一個Region,隨著記錄數的不斷增加,Region不斷增大,當增大到一定程度時,HRegion會被等分成兩個新的HRegion。HRegion是HBase中分布式存儲和負載均衡的最小單元,但卻不是存儲的最小單元。HRegion由一個或者多個Store組成,每個Store保存了表中的一個列族。每個Store又由一個Memstore和0至多個StoreFile(HFile)組成,StoreFile用來存儲數據并以HFile的形式保存在HDFS上[9]。

3遷移工具的主要模塊

本遷移系統的主要組成模塊為如下幾個部分。

3.1提取源數據庫中的表模式

通過對傳統關系型數據庫中存儲結構的分析可知,INFORMATION_SCHEMA數據庫存儲了MySQL中所有數據表的元數據,因此可以通過對這些元數據的訪問,快速提取到要遷移的MySQL數據庫中所有源數據的表模式。

INFORMATION_SCHEMA數據庫中的SCHEMATA表提供了當前MySQL實例中所有數據庫的信息,SQL查詢語言show datatables的結果就是出自此表。TABLES表提供了關于數據庫中的表信息,詳細描述了某個表屬于哪個SCHEMA以及表類型、表名稱、每個表的記錄數以及創建時間等信息。COLUMNS表提供了表中的列信息,詳細表述了某張表的所有列以及每個列的信息。STATISTICS表提供了表中所有的索引信息,此外還有描述表的用戶權限等的元數據。通過對這些表的聯合訪問,可以快速提取源數據庫模式,避免因對數據庫中的數據表的訪問而延長響應時間。

3.2表模式的轉換

通過對HBase數據庫存儲結構的研究可知,HBase數據庫中表的結構與傳統關系型數據庫有所不同。HBase中的各表之間不存在關聯關系,也不存在關系型數據庫中的Join連接查詢等操作。要進行表模式的遷移就必須將傳統關系型數據庫中存在相互聯系的數據遷移到HBase中的同一行中。考慮到HBase數據庫的特殊表結構和存儲結構,為了使遷移后的數據盡量不影響業務功能,對數據的表模式做以下轉換[10]:

(1)基本表的轉換

對CityDetail系統中的所有表進行基本轉換就是直接將源數據表遷移到HBase端。把源數據表的表名作為HBase表的表名,主鍵作為行鍵,表名和列名的組合作為HBase端表中的列限定符,版本設置為1。

(2)內嵌轉換

在CityDetail系統中存在Country表與City表之間的關聯關系,同時存在Country表與CountryLanguage表之間的關聯關系。HBase中的物理存儲結構決定了HBase表的不同列族存儲在不同的Store文件中,又因為源數據中對不同表的連接查詢操作要遠遠少于單表的操作,因此將City表和CountryLanguage表分別作為Country表的一個列族進行存儲即可。所以,要實現這類表的遷移就要保留Country的表模式,然后對City表和CountryLanguage表進行分割,作為Country表的一個列族添加在Country表中。

(3)遞歸轉換

在CityDetail系統中除存在Country表與City表之間的關聯關系外,還存在著下一級如Detail表和City表之間的關聯關系。要完成這一類型表的遷移,就要在Country表和City表進行內嵌轉換的基礎上,對City表和Detail表也進行深一級的內嵌變換。根據遞歸原理,先將Detail表進行分割,作為City表相應行中的一個列族,然后再對City表進行分割,作為Country表的一個列族進行遷移。

(4)分割轉換

根據關系型數據庫的關系范式[11]可知,表之間還可能存在同一個表Describe是另外三個表Country、City和CountryLanguage的子表的情況,針對這類關系的轉換可以通過對Describe表進行分割,并分別添加到三個表對應的列族下的方法來完成。

通過以上四種轉換方式的整合應用,最終完成CityDetail系統的所有表模式的遷移。

4設計實現

本文設計的遷移系統流程圖如圖3所示。

圖3 遷移系統流程圖

(1)連接關系型數據庫MySQL

首先在Java程序中使用Class.forName()語句加載MySQL的JDBC驅動程序,然后用語句“Connection conn = DriverManager.getConnection(url, user, password)”創建一個新的連接,進而訪問數據庫的元數據,獲取表模式。

(2)模式轉換

遍歷(1)中獲取的所有表模式,利用前文提到的四種轉換方式轉換得到遷移后的HBase中的表模式。

(3)連接HBase數據庫

通過語句“Configuration conf=HBaseConfigurAtion.create()”獲取HBase數據庫中的配置信息,然后用語句“table=new HTable(conf,tablename)”在HBase中創建新表,根據(2)中轉換得到的表模式,用語句“byte[] family=Bytes.toBytes("n")”指定各列族的名稱。至此,遷移系統的表模式遷移完畢。

(4)數據遷移

在數據遷移模塊中要分別連接兩個數據庫。首先,連接MySQL數據庫,創建一個MySQL Object用于訪問MySQL中指定的數據庫,用SQL查詢語句循環遍歷數據,獲取數據庫中的記錄,然后連接創建的HBase數據表,生成HBase Object,用Put方法依次將SELECT查詢獲取的數據記錄插入到HBase的表中,最終關閉數據對象,完成數據遷移。

5測試與結論

實驗測試在Hadoop集群上進行,集群包括4臺主機,每臺主機都安裝了Hadoop、HBase和Zookeeper,集群信息如表1所示。

表1 集群配置信息

本試驗分別用本文所提數據遷移工具與Apache為Hadoop配置的官方數據遷移工具Sqoop對CityDetail系統進行遷移,并使用不同大小的數據集對兩種工具的遷移過程和結果進行了對比。

首先,在遷移過程的繁簡方面,Sqoop工具是在終端上通過指定參數包括連接數據庫的語句、遷移前后的數據表名、屬性名等來完成數據的遷移。在參數指定上比較繁瑣,不容易操作。而本文遷移工具從獲取表模式到建立HBase數據表和遷移數據均由系統自動完成,比較而言,自動化程度較高。

其次,在查詢性能上,由于本文遷移工具完成了表模型的轉換和遷移,而Sqoop只是機械化地遷移了特定表中的數據,并沒有進行表模式的遷移,兩者比較,前者遷移結果存在很大的優勢。以典型的SQL查詢語句:“SELECT Name,Language where Country.CountryCode=Language.CountryCode” 為例,兩者的查詢結果如圖4。

圖4 查詢結果對比圖

從圖4可以看出,本文遷移工具較Sqoop在查詢性能上有了很大的改善。因為本文遷移工具通過對表模式的轉換,將屬于同一條記錄的信息存儲在了一個HRegion中,同一表中的數據存儲在了同一個Store文件中,查詢時,減少了多次尋址的過程,從而降低了系統響應時間。

6結論

本文通過對CityDetail系統從MySQL數據庫到HBase數據庫的遷移案例分析,研究了MySQL數據庫和HBase數據庫存儲數據的原理,提出通過訪問MySQL數據庫元數據快速提取表模式并轉換遷移的方法,解決了以往遷移工具不能遷移表模式的問題。在盡量保證數據完整性的前提下,提高了遷移速度、自動化程度和遷移后數據的查詢性能。但是,由于HBase中存在唯一索引,在多條件查詢上的查詢性能肯定會較MySQL有較大的下降,因此關于索引的優化還有待學習和研究。

參考文獻

[1] 莫扎特.大數據和NoSQL:關系型數據庫的不足之處[EB/OL].(2014-08-11)[2016-03-10].http://www.36dsj.com/archives/11078.

[2] 邱勝海,高成沖,王云霞,等.大數據時代非關系型數據庫教學與實驗改革探索[J].電腦知識與技術,2013(31):7046-7048.

[3] 唐長城,楊峰,代棟,等.一種基于HBase的數據持久性和可用性研究[J].計算機系統應用,2013,22(10):175-178.

[4] 蔣燚峰.HBase管理指南[M].北京:人民郵電出版社,2013.

[5] 黎明.昆明學院信息系統分析與設計[D].昆明:云南大學,2013.

[6] 趙慶峰,鞠英杰.國內元數據研究綜述[J].現代情報,2003,23(11):42-45.

[7] DIMIDUK N, KAURANA A.HBase實戰[M].謝磊,譯.北京:人民郵電出版社,2013.

[8] 平利強.基于云計算的海量時空數據存儲及挖掘方法的研究和應用[D].杭州:杭州電子科技大學,2014.

[9] 郝樹魁. 分布式存儲系統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] 百度百科.關系型范式[EB/OL].[2016-03-07]. http://baike.so. com/doc/4367825-4573590.html.

*基金項目:泉州市科技局項目(2013Z12);華僑大學研究生科研創新能力培育計劃資助項目 (1400222002)

中圖分類號:TP31

文獻標識碼:A

DOI:10.19358/j.issn.1674- 7720.2016.13.027

(收稿日期:2016-03-11)

作者簡介:

宋春紅(1991-),女,碩士研究生,主要研究方向:大數據、數據庫、數據遷移。

王佳斌(1974-),通信作者,男,碩士,副教授,主要研究方向:云計算、大數據、物聯網、傳感器。E-mail:1535123813@qq.com。

鄭力新(1964-),男,博士,教授,主要研究方向:運動控制與機器視覺技術研究。

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

主站蜘蛛池模板: 无码高潮喷水专区久久| 日韩精品一区二区三区大桥未久 | 国产亚洲高清视频| 国产精品xxx| 久久婷婷色综合老司机| 亚洲二三区| 久久精品66| 黄色国产在线| 欧美a级在线| 国产在线精品美女观看| 亚洲精品成人片在线观看| 日本欧美在线观看| 国产日韩丝袜一二三区| 日本欧美成人免费| 91精品国产情侣高潮露脸| 蝌蚪国产精品视频第一页| 中文字幕有乳无码| 国产高清又黄又嫩的免费视频网站| 成人免费一区二区三区| 人妻丰满熟妇αv无码| 91午夜福利在线观看| 色哟哟精品无码网站在线播放视频| 18禁高潮出水呻吟娇喘蜜芽| 18禁不卡免费网站| 成人久久18免费网站| 国产一级视频久久| 久久国产亚洲偷自| 午夜爽爽视频| 亚洲免费福利视频| 99久久精品国产麻豆婷婷| 欧美在线视频不卡| 国产一级在线播放| 一本大道东京热无码av| 国产综合精品一区二区| 亚洲男人在线天堂| 久久黄色免费电影| 毛片网站观看| 日韩精品一区二区三区大桥未久 | 国产成人盗摄精品| 亚洲永久免费网站| 欧洲亚洲欧美国产日本高清| 在线免费观看AV| 亚洲成人网在线播放| 亚洲人成色在线观看| 日韩精品成人在线| 欧美在线视频不卡第一页| 久久婷婷五月综合色一区二区| 国产色爱av资源综合区| 国产在线麻豆波多野结衣| 女高中生自慰污污网站| 国产精品不卡片视频免费观看| 日本精品影院| 国产91九色在线播放| 欧美高清三区| 91麻豆久久久| 在线精品亚洲一区二区古装| 97免费在线观看视频| 久久伊人久久亚洲综合| 婷婷丁香在线观看| 国产成年女人特黄特色大片免费| 国产手机在线小视频免费观看 | 99re精彩视频| 日韩欧美一区在线观看| 国产精品无码AV片在线观看播放| 国产成人精品视频一区二区电影 | 自拍欧美亚洲| 91精品久久久无码中文字幕vr| 精品乱码久久久久久久| 亚洲精品国产成人7777| 99爱在线| 日韩在线2020专区| 91青青草视频| 一本无码在线观看| 蜜桃视频一区二区| 国产91小视频| 欧美特级AAAAAA视频免费观看| 激情网址在线观看| 亚洲Av综合日韩精品久久久| 99国产精品一区二区| 三上悠亚一区二区| 国产网站免费看| 在线国产毛片|