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

一種RDBMS到MongoDB數據遷移方法

2017-09-20 03:13:01趙艷妮郭華磊
現代計算機 2017年22期
關鍵詞:數據庫

趙艷妮,郭華磊

(1.陜西職業技術學院計算機科學系,西安710100;2.西安通信學院信息服務系,西安710106)

一種RDBMS到MongoDB數據遷移方法

趙艷妮1,郭華磊2

(1.陜西職業技術學院計算機科學系,西安710100;2.西安通信學院信息服務系,西安710106)

隨著物聯網、云計算技術出現,大數據廣泛存在,關系數據庫處理海量數據力不從心,無法滿足高并發性、高吞吐量和低延時等,基于NoSQL技術的MongoDB數據庫憑借高并發、非結構化存儲和高可拓展性等優點得到青睞。提出一種把關系數據庫表映射為集合、記錄映射為文檔、表列屬性映射為字段,“父表-子表”連接采用文檔嵌套結構將子表數據直接嵌入到父表中,實現數據從關系數據庫平滑過渡到MongoDB數據庫的數據遷移方法。實驗結果表明,隨著數據規模不斷增大,該方法查詢效率顯著提高,對關系數據庫向NoSQL數據庫數據遷移具有參考性。

數據遷移;集合;文檔;字段映射

0 引言

隨著計算機技術普及和發展,呈現了電子政務、電子商務、社交網絡、移動服務等基于網絡的新型模式,數以億計的網絡用戶每天產生海量數據,數據也日趨復雜,越來越多半結構化、非結構化數據不斷涌現,所占比例越來越高,傳統關系數據庫(Relation Database Manager System,RDBMS)在處理海量數據方面逐漸力不從心,難以滿足物聯網、云計算時代的高并發性、高吞吐量和低延遲等要求[1-2],如圖1所示。NoSQL(Not only SQL,NoSQL)技術以低延遲高并發讀寫,支持非結構化數據存儲,海量數據訪問,依靠廉價集群模式克服服務器硬件縱向擴展成本高瓶頸等特點較好地解決上述問題[3]。傳統關系數據庫長期運行,積累了海量歷史數據,如何將歷史數據平滑遷移到NoSQL數據庫中,進一步挖掘數據價值,實現數據價值最大化,是大數據時代亟待解決的問題[4],本文以NoSQL典型數據庫MongoDB為例,實現關系數據庫向NoSQL數據庫數據遷移。

1 SQL與NoSQL性能對比

基于SQL的關系數據庫中表存儲結構化數據,在存儲數據前先定義表結構,同一字段數據類型統一,每條記錄都需要所有字段,便于表間連接查詢。基于NoSQL的非關系數據庫以“鍵-值”對存儲,具有靈活的數據模型,增加列無須修改表結構,可以存儲半結構化/非結構化數據,容易實現可伸縮性,滿足用戶頻繁且并發地訪問數據[5-6]。關系數據庫擴展性主要是采用縱向擴展,購買高性能服務器,更好的CPU、更多內存、更大磁盤來提高性能。然而,高性能服務器結構復雜,價格昂貴。非關系數據庫擴展主要采用橫向擴展,即通過同時運行多臺廉價服務器來擴大存儲容量,提高并發性和訪問速度,僅僅變更程序,成本低廉。對于流行的敏捷軟件開發模式來說,關系數據庫是一種瓶頸,開發過程中想將客戶喜歡的特性加到數據庫,數據庫的表結構都需要改變,向表結構中添加這一列屬性,然后將整個數據庫表數據遷移到新的表結構上,假如表中已有幾百萬、上千萬條數據,簡直是一場災難[7]。基于SQL數據庫經過幾十年發展,日趨成熟,標準統一,支持多表連接復雜查詢查詢和數據強一致性。而NoSQL數據庫最近幾年才出現,產品不成熟,不支持SQL,支持特性不豐富,功能有限。SQL與NoSQL特性對比如表1所示。

圖1 海量數據發展趨勢

2 RDBMS到MongoDB數據遷移方法

2.1 基本思路

表1 SQL與NoSQL性能對比

RDBMS到MongoDB數據遷移框架圖如圖2所示,基本思路如下:

(1)深入研究源關系數據庫和目標MongoDB數據庫,建立源表和目標集合、源表記錄和目標文檔、源表列屬性和目標字段之間映射關系[8],制定數據遷移方案,如圖3所示;

(2)根據數據遷移方案,生成XML格式的映射模型文件;

(3)解析映射模型文件,獲取源關系數據庫和目標MongoDB數據庫的映射關系,從源關系數據庫抽取數據,根據數據遷移方案對數據進行預處理(數據驗證和數據清洗),然后對預處理后數據進行轉換操作(字段合并、字段拆分、類型轉換、值替換、字段計算等)[9],生成集合,裝載到目標MongoDB數據庫中。

圖2 RDBMS到MongoDB數據遷移框架圖

圖3 關系數據庫與MongoDB映射圖

2.2 數據遷移預處理

源關系數據庫中數據無法保證完美無缺,可能存在錯誤或格式不符合目標數據庫要求,在數據遷移過程中如果不進行預處理,可能存在隱患,造成新系統無法正常運行。因此,抽取數據后要對數據進行預處理,驗證數據有效性,更正存在的錯誤,清洗無效數據,盡可能把數據對新系統影響降到最低。

(1)數據驗證

數據驗證階段主要考慮以下兩個因素[10]:

①防止異常錯誤造成數據遷移中止,例如,數字中存在字母、字符串截斷、非法日期類型等;

②審核數據是否滿足目標數據庫要求。采用正則表達式驗證數據數字、字符、連字符、空格、取值范圍等[11]。例如,驗證輸入文本文件名稱以“txt”開始,后面緊跟日期格式“yyyy-mm-dd”,正則表達式可以設置為“txt(20)dd-(0[1-9]|1[012])-([01][1-9]|3[01]). txt”。“txt2016-12-15.txt”為符合規則文件名稱,“txt5016-24-35.txt”為不符合規則文件名稱。

(2)數據清洗

數據清洗對象不僅包含無效數據,也包含違反規則數據和精度不符合指定范圍數據[12]。例如,數字類型數據包含字母、數值超出范圍、非法日期等。

在數據驗證階段確定不符合規則數據,進行清洗或更正,減少數據冗余,提高數據質量,在數據轉換過程中最大程度避免由數據質量造成的異常中止,保障數據遷移的順利實施。

2.3 表與集合映射模型

RDBMS到MongoDB數據遷移成敗關鍵在RD?BMS表與MongoDB數據庫集合映射關系的建立。源表與目標集合映射關系如圖4所示。

圖4 表與集合映射關系圖

根據數據遷移方案讀取源關系數據庫數據字典,獲取源表和源列屬性信息,確定源表和目標集合之間映射類型,建立源列屬性與目標字段間的映射關系,生成XML格式的映射模型文件。表與集合映射分為“一對一”、“多對一”、“一對多”和“多對多”四種形式[13]。其中“一對多”可以拆分為多個“一對一”,“多對多”可以拆分為多個“多對一”,因此,本文主要研究“一對一”和“多對一”兩種映射關系。

(1)“一對一”映射

在RDBMS到MongoDB數據遷移過程中,源表與目標集合“一對一”映射關系最普遍,映射模型XML文件根元素為ETL,屬性“type”的值為“1”,表示該映射模型為“一對一”。元素“sdb”為源數據庫,屬性“type”值為源數據庫類型,元素“sdb”值為源數據庫名稱。元素“tdb”為目標數據庫,屬性“type”值為目標數據庫類型,元素“tdb”值為目標數據庫名稱。元素“stable”的屬性“name”值為源表名稱,元素“stable”的子元素為源字段名稱,值為目標MongoDB數據庫信息,“.”前為目標集合名稱,后是目標字段名稱。元素“where”值為數據遷移條件,用于生成“where”語句。下面以源數據庫“mysqldb”中“student”表的“id”、“name”、“gender”字段遷移到目標數據庫“mydb”中“xuesheng”集合的“bian?hao”、“xingming”和“xingbie”字段為例,描述“一對一”

映射模型。

-

-

-

-

-//遷移條件

(2)“多對一”映射

“多對一”映射模型XML文件描述說明同“一對一”映射相同。下面以源數據庫“mysqldb”中“student”表、“mark”表和“lesson”表合并遷移到目標數據庫“mydb”的“xuesheng”集合為例,描述“多對一”的映射模型。其中“student”表中字段“id”、“name”、“gender”,“mark”表中字段“id”、“lessonid”、“score”,“lesson”表中字段“lessonid”、“lessonname”、,遷移到目標數據庫“mydb”中“xuesheng”集合表的“bianhao”、“xingming”、“xingbie”、“kcbh”、“kcmc”和“chengji”字段,多表連接方法為等值內連接,連接條件為“mark.id=student.id andmark.lessonid=lesson.lessonid”。

-

-

-

-

-

-//遷移條件

2.4 數據轉換

關系數據庫為了減少存儲冗余度,通過“父表-子表”方式建立大量連接查詢,付出查詢效率顯著下降的代價[14]。本文提出的遷移方法利用MongoDB靈活的文檔嵌套結構將子表數據直接嵌入到父表中,以犧牲存儲空間為代價,避免了大量的連接查詢,提高查詢速度[15]。

(1)“一對一”單表遷移

關系數據庫中表與其它表不存在外鍵關聯時,直接將關系數據庫中表到MongoDB文檔的轉換。表2為學生信息表“student”,“id”為主鍵,“student”表與其它表不存在關聯,直接數據轉換。基本方法:將源表名稱字作為MongoDB中集合名稱,源表中每條記錄轉換成MongoDB集合中的一個文檔,文檔的“鍵-值”對應源關系數據庫中的“列屬性-列值”。系統為每個生成的文檔自動分配一個唯一“_id”,對應值為ObjectId()對象,在集合中唯一標識一個文檔,也可以把源表主鍵值插入“_id”。

表2 student

下面為轉換后的集合“student”:

student=({“_id”:ObjectID(…),id:2017001,name:“張曉強”,gender:“男”},{“_id”:ObjectID(…),id: 2017002,name:“李艷紅”,gender:“女”},{“_id”:ObjectID(…),id:2017003,name:“王寶軍”,gender:“男”})

(2)“多對一”多表遷移

表3為存儲課程信息表“lesson”,“lessonid”為主鍵。表4以“父表-子表”模式存儲成績的成績表“mark”,“id”和“lesson”為復合主鍵,“id”為外鍵,關聯表2“student”表的主鍵“id”,“lessonid”為外鍵,關聯“lesson”表的主鍵“lessonid”。

表3 lesson

表4 mark

下面為轉換后的集合“student”:

student=({“_id”:ObjectID(…),id:2017001,id:“張曉強”,gender:“男”,mark:[{“_id”:ObjectID(…),id: 2017001,lessoned:101,score:85,lesson:{“_id”:ObjectID(…),lessonid:101,lessonname:“Java編程技術”}},{“_id”: ObjectID(…),id:2017001,lessoned:102,score:90,lesson: {“_id”:ObjectID(…),lessonid:102,lessonname:“數據庫技術”}}]},{“_id”:ObjectID(…),id:2017002,id:“李艷紅”, gender:“女”,mark:[{“_id”:ObjectID(…),id:2017002,les?soned:101,score:91,lesson:{“_id”:ObjectID(…),lesso?nid:101,lessonname:“Java編程技術”}},{“_id”:ObjectID(…),id:2017002,lessoned:103,score:78,lesson:{“_id”: ObjectID(…),lessonid:103,lessonname:“數據結構”}}]}, {“_id”:ObjectID(…),id:2017003,id:“王寶軍”,gender:“男”,mark:[{“_id”:ObjectID(…),id:2017003,lessoned: 102,score:75,lesson:{“_id”:ObjectID(…),lessonid:101, lessonname:“數據庫技術”}}]})

3 性能對比分析

為了驗證該方法有效性,以上述復雜的“多對一”模式的三表連接查詢為例,本實驗設定25門課程,每個學生都有25門課程成績,學生人數分別為500、1000、2000、5000、10000、20000人,采用MySQL 5.6關系數據庫、MongoDB自帶工具MongoVUE、和本文方法分別從數據空間存儲量和查詢速度兩個方面進行比較。實驗環境:i5-3210M處理器、4G內存、Windows 7操作系統、MySQL 5.6、MongoDB 3.4.1,在Eclipse3.7集成開發環境下采用Java以JDBC方式連接MySQL,以mongo-2.0連接MongoDB實現,圖表顯示采用開源插件org.swtchart_0.9.0。性能對比如圖5、圖6所示。

通過對圖5、圖6分析比較,在數據規模較小時,關系數據庫、MongoVUE和本文方法的數據空間存儲量和訪問時間相差較小,但隨著學生數量增加,數據規模逐漸增加,本文方法由于采取“文檔嵌套”模式存儲數據,數據冗余急劇增加,數據空間存儲量遠高于關系數據庫、MongoVUE,付出巨大存儲代價,但由于取消多表連接查詢,避免表之間查詢鎖定,訪問時間相比關系數據庫、MongoVUE優勢明顯,在海量數據查詢方面,這種以犧牲空間存儲量換取查詢效率的折中方法對于半結構化、非結構化數據是可行的。

圖5 空間存儲量對比圖

圖6 訪問時間對比圖

4 結語

針對大數據時代半結構化、非結構化數據急劇增加,傳統關系數據庫無法滿足高并發性、高吞吐量和低延時等海量數據實時處理要求,亟待把數據從關系數據庫遷移到NoSQL數據庫。提出一種把關系數據庫表映射為MongoDB集合、記錄映射為文檔、表列屬性映射為字段,“父表-子表”連接采用文檔嵌套結構將子表數據直接嵌入到父表,實現數據從關系數據庫平滑過渡到MongoDB數據庫的數據遷移方法,實驗結果表明,該方法雖然犧牲數據空間存儲量,但查詢時間大幅度壓縮,符合大數據時代對數據實時處理的性能要求。下一步研究方向是在保證查詢效率不降低基礎上,減少數據空間存儲量,降低硬件存儲成本。

[1]孟小峰,杜治娟.大數據融合研究:問題與挑戰[J].計算機研究與發展,2016,(02):231-246.

[2]陳文藝,閆灑灑,宋亞紅.基于MongoDB的物聯網開放平臺數據存儲設計[J].西安郵電大學學報,2016,(02):78-82.

[3]Khan S,Mane V.SQLSupportOverMongoDBUsingMetadata[J].International Journalof Scientific and Research Publications,2013,3(10):1-5.

[4]何杭鋒.基于FODO算法MongoDB自動分片的改進[J].計算機技術與發展,2013,23(7):127-130.

[5]Wu CM,Huang Y F,Lee J.Comparisons Between MongoDB and MS-SQLDatabaseson the TwcWebsite[J].American Journalof Software Engineeringand Applications,2015,4(2):35-41.

[6]潘明陽,高立佳,宋平亮,等.基于MongoDB的船舶數據庫構建與數據批量遷移技術[J].大連海事大學學報:自然科學版,2016(1): 39-44.

[7]Hou B,Qian K,Li L,etal.MongoDBNoSQL Injection Analysisand Detection[C]//Cyber Security and Cloud Computing(CSCloud),2016 IEEE 3rd InternationalConference on.IEEE,2016:75-78.

[8]田野,袁博,李廷力.物聯網海量異構數據存儲與共享策略研究[J].電子學報,2016,44(2):247-257.

[9]Long Y.Research on SocialRelationship Network System based on MongoDB[J].International JournalofSimulation-Systems,Science &Technology,2016,17(7):1-6.

[10]王照清.大數據環境下數據查詢優化技術應用研究[D].北方工業大學,2016.

[11]Stanescu L,Brezovan M,Burdescu DD.Automatic MappingofMySQLDatabases to NoSQLMongoDB[C].Computer Scienceand Information Systems(FedCSIS),2016 Federated Conference on.IEEE,2016:837-840.

[12]Kang Y S,Park IH,Rhee J,etal.Mongodb-based Repository Design for Iot-Generated RFID/Sensor Big Data[J].IEEESensors Journal,2016,16(2):485-497.

[13]梁海.MongoDB數據庫中Sharding技術應用研究[J].計算機技術與發展,2014,24(7):60-67.

[14]郭昆,宋杰,王潔萍,朱志良.NoSQL數據庫間數據交換代價研究[J].計算機工程與科學,2016(01):33-40.

[15]曾強,繆力,秦拯.面向大數據處理的Hadoop與MongoDB整合技術研究[J].計算機應用與軟件,2016(02):21-24.

A Data Migration Method for RDBMS to MongoDB

ZHAOYan-ni1,GUOHua-lei2
(1.DepartmentofComputer Science,ShannxiVocational&TechnicalCollege,Xi'an 710100;2.Departmentof Information Service,Xi'an Communication College,Xi'an 710016)

趙艷妮(1982-),女,陜西藍田人,博士研究生,副教授,研究方向為信息集成、軟件工程等

郭華磊(1981-),男,漢族,河南泌陽人,碩士,講師,研究方向為信息集成

陜西省教育廳自然科學專項(No.16JK1192)

1007-1423(2017)22-0018-06

10.3969/j.issn.1007-1423.2017.22.005

As the Internet of things,cloud computing,big data iswidespread,relational database handle huge amounts of data and cannotmeet the high concurrency,high throughputand low delay,etc.,the MongoDB databasewith high concurrency,unstructured storage and the advan?tages ofhigh scalable based on the NoSQL technology.Proposes a relational database tablemapping collection,recordmapping document, table column propertiesmapping field,parent table-child table documentnested structure is used to connect the child table data directly embedded into the parent tablemethod,implement the data from a relationaldatabase is smooth transition into themongo database datami?grationmethod.The experimental results show thatwith the increasing ofdata size,the query efficiency is improved significantly,there is a reference to the datamigration of relationaldatabase toNoSQL database.

Abstract:

DataMigration;Collection;Document;Field Mapping

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 中国国产高清免费AV片| 亚洲无码高清一区二区| 国产黄在线观看| 免费A级毛片无码无遮挡| 日韩麻豆小视频| 一本久道久久综合多人| 99精品热视频这里只有精品7| 欧美激情一区二区三区成人| 国产sm重味一区二区三区| 美女无遮挡拍拍拍免费视频| 国产a v无码专区亚洲av| 国产无码高清视频不卡| 国产永久在线视频| 亚洲天堂首页| 成年网址网站在线观看| 激情亚洲天堂| 秋霞午夜国产精品成人片| 国产在线八区| av在线手机播放| 人妻少妇乱子伦精品无码专区毛片| 色婷婷色丁香| 无码又爽又刺激的高潮视频| 青青国产成人免费精品视频| 中日无码在线观看| 国产精品分类视频分类一区| 欧美日韩一区二区在线免费观看| 欧美无遮挡国产欧美另类| 99精品福利视频| 亚洲动漫h| 国产女人在线| 一本大道AV人久久综合| 日韩精品成人网页视频在线| 免费99精品国产自在现线| 99无码中文字幕视频| 亚洲国产中文精品va在线播放| 小蝌蚪亚洲精品国产| 一级爱做片免费观看久久| 一区二区午夜| 国产福利免费观看| 四虎成人精品在永久免费| 欧美日韩理论| 亚洲欧美成人| 污视频日本| 99色亚洲国产精品11p| 日韩福利在线观看| 国产一区免费在线观看| 婷婷亚洲综合五月天在线| 97精品久久久大香线焦| 99视频只有精品| 中文字幕第4页| 国产AV毛片| 免费一级无码在线网站| 手机在线国产精品| 免费观看三级毛片| 天天综合网色中文字幕| 999国产精品永久免费视频精品久久| 一级做a爰片久久免费| 午夜视频在线观看区二区| 麻豆a级片| 91福利一区二区三区| 黄色不卡视频| 亚州AV秘 一区二区三区| 亚洲视频在线观看免费视频| 在线另类稀缺国产呦| 亚洲大学生视频在线播放| 91亚洲视频下载| 久久久久九九精品影院| 99在线视频免费| 亚洲成人网在线观看| 国产91麻豆免费观看| 欧美精品在线免费| 成人年鲁鲁在线观看视频| 免费欧美一级| 亚洲av无码片一区二区三区| 欧美一级大片在线观看| 欧美a在线看| 极品国产在线| 91麻豆国产视频| 日本少妇又色又爽又高潮| 亚洲第一视频区| a级毛片在线免费| 日本一区高清|