两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種在數(shù)據(jù)庫間遷移數(shù)據(jù)的方法和系統(tǒng)的制作方法

文檔序號:8905253閱讀:315來源:國知局
一種在數(shù)據(jù)庫間遷移數(shù)據(jù)的方法和系統(tǒng)的制作方法【
技術(shù)領(lǐng)域
】[0001]本發(fā)明涉及數(shù)據(jù)迀移領(lǐng)域,具體涉及一種在數(shù)據(jù)庫間迀移數(shù)據(jù)的方法和系統(tǒng),更加具體涉及無版本Key-Value數(shù)據(jù)數(shù)據(jù)庫平滑迀移至HBase的方法和系統(tǒng)。【
背景技術(shù)
】[0002]Key-Value(鍵-值)數(shù)據(jù)庫是一種非常常見的數(shù)據(jù)庫類型,又稱作NoSQL數(shù)據(jù)庫,特點(diǎn)是查詢速度快、存放數(shù)據(jù)量大、支持高并發(fā),非常適合通過主鍵進(jìn)行查詢,但不能進(jìn)行復(fù)雜的條件查詢。以MemcacheDB、TokyoTyrant為代表的key-value分布式存儲,在上萬并發(fā)連接下,輕松地完成高速查詢。進(jìn)年來因?yàn)樯缃黄脚_興起,移動互聯(lián)網(wǎng)的爆發(fā),數(shù)據(jù)量大幅增加,傳統(tǒng)的Key-Value數(shù)據(jù)庫往往只能作為數(shù)據(jù)存儲引擎存在,在大數(shù)據(jù)的背景下,進(jìn)行分析計(jì)算處理工具鏈薄弱,計(jì)算框架比較少,對此HBase的前景優(yōu)勢十分明顯。[0003]HBase(HadoopDatabase),是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術(shù)可在廉價PCServer上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。HBase是GoogleBigtable的開源實(shí)現(xiàn),類似GoogleBigtable利用GFS作為其文件存儲系統(tǒng),HBase利用HadoopHDFS作為其文件存儲系統(tǒng)。并且HBase可便捷的利用HadoopMapReduce來處理HBase中的海量數(shù)據(jù),這種便利對于其他Key-Value數(shù)據(jù)而言是不可同日而語的。[0004]HBase與其他Key-Value數(shù)據(jù)庫,因?yàn)椴⒉皇桥缮苌P(guān)系,所以在各種數(shù)據(jù)庫間轉(zhuǎn)移數(shù)據(jù)的工作,往往不能使用現(xiàn)成存在的工具包去處理,需要結(jié)合實(shí)際情況去開發(fā)和實(shí)現(xiàn),在實(shí)際生產(chǎn)環(huán)境中,以MemcacheDB為例,可能作為一種基礎(chǔ)服務(wù)存在,服務(wù)于各種線上環(huán)境,當(dāng)計(jì)算能力不足時需要將數(shù)據(jù)迀移至HBase,現(xiàn)存的技術(shù)中如要進(jìn)行數(shù)據(jù)迀移,往往米取如下辦法:[0005]1、停止MemcacheDB數(shù)據(jù)服務(wù);[0006]2、進(jìn)行MemcacheDB到HBase的數(shù)據(jù)遷移工作;[0007]3、啟用HBase數(shù)據(jù)服務(wù),完成。[0008]在實(shí)現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題:[0009]現(xiàn)有技術(shù)中需要將MemcacheDB這種Key-Value數(shù)據(jù)庫停止服務(wù),而后進(jìn)行迀移,因?yàn)閿?shù)據(jù)規(guī)模的大小并不確定,決定了迀移時間的長短不一,這點(diǎn)對于用戶體驗(yàn)來說會比較差,并且對于某些線上系統(tǒng),停止服務(wù)是不可接受的,所以需要進(jìn)行不停服務(wù)的平滑迀移?!?br/>發(fā)明內(nèi)容】[0010]本發(fā)明的實(shí)施例提供一種數(shù)據(jù)庫間迀移數(shù)據(jù)的方法和系統(tǒng),不停止服務(wù)實(shí)現(xiàn)數(shù)據(jù)平滑迀移。[0011]為達(dá)上述目的,一方面,本發(fā)明的實(shí)施例提供了一種在數(shù)據(jù)庫間迀移數(shù)據(jù)的方法,包括:[0012]迀移程序從第二數(shù)據(jù)庫向第一數(shù)據(jù)庫迀移數(shù)據(jù);[0013]在數(shù)據(jù)迀移期間如果有讀取數(shù)據(jù)的需求,數(shù)據(jù)客戶端優(yōu)先讀取所述第一數(shù)據(jù)庫,當(dāng)所述第一數(shù)據(jù)庫讀取失敗時讀取所述第二數(shù)據(jù)庫;[0014]數(shù)據(jù)迀移完成后關(guān)閉所述第二數(shù)據(jù)庫,由所述第一數(shù)據(jù)庫提供數(shù)據(jù)服務(wù)。[0015]另一方面,本發(fā)明實(shí)施例提供了一種在數(shù)據(jù)庫間迀移數(shù)據(jù)的系統(tǒng),包括:[0016]迀移設(shè)備,用于從第二數(shù)據(jù)庫向所述第一數(shù)據(jù)庫迀移數(shù)據(jù),并在數(shù)據(jù)迀移完成后關(guān)閉所述第二數(shù)據(jù)庫,由所述第一數(shù)據(jù)庫提供數(shù)據(jù)服務(wù);[0017]數(shù)據(jù)訪問設(shè)備,用于在數(shù)據(jù)迀移期間如果有讀取數(shù)據(jù)的需求,優(yōu)先讀取所述第一數(shù)據(jù)庫,當(dāng)所述第一數(shù)據(jù)庫讀取失敗時讀取所述第二數(shù)據(jù)庫。[0018]上述技術(shù)方案具有如下有益效果:本發(fā)明的實(shí)施例的方法新增加了數(shù)據(jù)的雙讀,使得將數(shù)據(jù)可以成功迀移過去,支持不停止服務(wù)迀移?!靖綀D說明】[0019]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0020]圖1是本發(fā)明的實(shí)施例的一種在數(shù)據(jù)庫間平滑迀移數(shù)據(jù)的方法的整體流程圖;[0021]圖2是本發(fā)明的實(shí)施例的作為一個舉例的平滑迀移數(shù)據(jù)的流程圖;[0022]圖3是本發(fā)明的實(shí)施例的作為一個舉例的迀移過程中寫入操作可能造成的數(shù)據(jù)覆蓋的不意圖;[0023]圖4是本發(fā)明的實(shí)施例的數(shù)據(jù)客戶端的讀寫操作和迀移程序的迀移寫入操作的示意圖;[0024]圖5是本發(fā)明的實(shí)施例的數(shù)據(jù)客戶端有無寫入過新版本數(shù)據(jù)的對比示意圖;[0025]圖6是本發(fā)明的實(shí)施例的在數(shù)據(jù)庫間平滑迀移數(shù)據(jù)的系統(tǒng)的功能框圖。【具體實(shí)施方式】[0026]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。[0027]如圖1所示,本發(fā)明的實(shí)施例提供了一種在數(shù)據(jù)庫間迀移數(shù)據(jù)的方法,以實(shí)現(xiàn)在不停止服務(wù)的情況下實(shí)現(xiàn)數(shù)據(jù)庫間的數(shù)據(jù)平滑迀移。該方法包括如下步驟:[0028]步驟101:迀移程序從第二數(shù)據(jù)庫向第一數(shù)據(jù)庫迀移數(shù)據(jù);[0029]步驟102:在數(shù)據(jù)迀移期間如果有讀取數(shù)據(jù)的需求,數(shù)據(jù)客戶端優(yōu)先讀取第一數(shù)據(jù)庫,當(dāng)所述第一數(shù)據(jù)庫讀取失敗時讀取第二數(shù)據(jù)庫;[0030]步驟103:數(shù)據(jù)迀移完成后關(guān)閉所述第二數(shù)據(jù)庫,由所述第一數(shù)據(jù)庫提供數(shù)據(jù)服務(wù)。[0031]在本實(shí)施例中,數(shù)據(jù)迀移開始后,即打開了雙讀機(jī)制,但是否發(fā)生雙讀要看實(shí)際情況。換言之,雙讀只發(fā)生在迀移數(shù)據(jù)期間,正常服務(wù)及迀移完成后是不會出現(xiàn)雙讀的。[0032]可選地,在步驟101之前該方法還可包括步驟:啟動數(shù)據(jù)庫雙讀機(jī)制。[0033]與現(xiàn)有技術(shù)的方法相比,本發(fā)明的實(shí)施例的方法新增加了數(shù)據(jù)的雙讀,使得將數(shù)據(jù)可以成功迀移過去,支持不停止服務(wù)迀移。[0034]可選地,在步驟103之前,該方法還可包括步驟:驗(yàn)證并確認(rèn)所述第二數(shù)據(jù)庫的所有數(shù)據(jù)被迀移成功。[0035]可選地,圖1所示方法還可包括如下步驟:在數(shù)據(jù)迀移期間如果有寫入數(shù)據(jù)的需求,數(shù)據(jù)客戶端僅對所述第一數(shù)據(jù)庫寫入數(shù)據(jù)。[0036]作為一種可選的實(shí)施方式,在數(shù)據(jù)迀移期間,所述數(shù)據(jù)客戶端對所述第一數(shù)據(jù)庫讀取最高版本數(shù)據(jù),所述數(shù)據(jù)客戶端對所述第一數(shù)據(jù)庫寫入除最低版本數(shù)據(jù)以外的高版本數(shù)據(jù),所述迀移程序向所述第一數(shù)據(jù)庫寫入最低版本數(shù)據(jù)。[0037]作為另一種可選的實(shí)施方式,所述數(shù)據(jù)客戶端對所述第一數(shù)據(jù)庫讀取、寫入最高版本數(shù)據(jù)。[0038]以下以第一數(shù)據(jù)庫為HBase數(shù)據(jù)庫,第二數(shù)據(jù)庫為任何無版本的Key-Value數(shù)據(jù)庫(具體采用MemcacheDB)為例進(jìn)行說明:[0039]如圖2所示,本發(fā)明的實(shí)施例的方法包括:[0040]步驟1、啟用MemcacheDB和HBase雙讀機(jī)制,雙讀機(jī)制是指優(yōu)先讀取HBase,HBase讀取失敗則讀取MemcacheDB,兩者都讀取失敗,則返回失敗,任意一者讀取成功,則返回數(shù)據(jù);[0041]步驟2、啟動迀移程序從MemcacheDB向HBase迀移數(shù)據(jù);[0042]步驟3、迀移程序完成,啟動迀移驗(yàn)證程序,驗(yàn)證確認(rèn)所有的MemcacheDB數(shù)據(jù)都被迀移成功;[0043]步驟4、關(guān)閉MemcacheDB,由HBase提供數(shù)據(jù)服務(wù)。[0044]本發(fā)明的實(shí)施例的方法新增加了當(dāng)前第1頁1 2 
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
泸州市| 微博| 获嘉县| 修水县| 湖州市| 卢氏县| 凤冈县| 中卫市| 平定县| 滨海县| 新郑市| 西安市| 宜宾市| 临桂县| 乌鲁木齐市| 阳城县| 达孜县| 康定县| 溧阳市| 安陆市| 甘洛县| 丰宁| 德兴市| 济南市| 九台市| 大英县| 阿克苏市| 泾源县| 青神县| 乌鲁木齐县| 化隆| 彭泽县| 枣阳市| 蓬溪县| 临猗县| 新建县| 彭泽县| 锡林浩特市| 德清县| 革吉县| 马龙县|