亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種異構(gòu)數(shù)據(jù)庫遷移系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2020-02-01 03:24:24韓世杰張記強(qiáng)馮帆
        電子技術(shù)與軟件工程 2020年9期
        關(guān)鍵詞:數(shù)據(jù)庫信息系統(tǒng)

        韓世杰 張記強(qiáng) 馮帆

        (中國航天科工集團(tuán)第二研究院706 所 北京市 100854)

        當(dāng)前國產(chǎn)數(shù)據(jù)庫迎來蓬勃發(fā)展的時(shí)期,以武漢達(dá)夢、人大金倉、神州通用、天熠數(shù)據(jù)庫為代表的一大批優(yōu)秀的國產(chǎn)數(shù)據(jù)庫產(chǎn)品得到了迅猛的發(fā)展[1][2]。隨著黨政軍領(lǐng)域中信息系統(tǒng)的國產(chǎn)化,采用國產(chǎn)數(shù)據(jù)庫替換國外數(shù)據(jù)庫后,原先存放在國外數(shù)據(jù)庫中的歷史數(shù)據(jù),無法直接使用。為了在新的數(shù)據(jù)庫管理系統(tǒng)中使用這些歷史數(shù)據(jù),需要將數(shù)據(jù)從國外數(shù)據(jù)庫遷移到國產(chǎn)數(shù)據(jù)庫中,如何快速有效地將歷史數(shù)據(jù)進(jìn)行異構(gòu)數(shù)據(jù)庫遷移已經(jīng)成為當(dāng)前數(shù)據(jù)庫領(lǐng)域的一個(gè)重要研究方向。

        本文對異構(gòu)數(shù)據(jù)庫遷移系統(tǒng)的異構(gòu)性進(jìn)行分析,從數(shù)據(jù)庫模式遷移和數(shù)據(jù)遷移兩方面對異構(gòu)數(shù)據(jù)庫遷移過程進(jìn)行描述,實(shí)現(xiàn)了一種通用的異構(gòu)數(shù)據(jù)庫遷移方法,解決異構(gòu)數(shù)據(jù)庫遷移問題,通用性和可擴(kuò)展性好,且便于操作。最后,在QT 框架下,設(shè)計(jì)實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移系統(tǒng)。實(shí)驗(yàn)驗(yàn)證表明,本系統(tǒng)達(dá)到了較好的數(shù)據(jù)遷移效果。

        1 異構(gòu)數(shù)據(jù)庫遷移系統(tǒng)概述

        異構(gòu)數(shù)據(jù)庫遷移系統(tǒng)是將源數(shù)據(jù)庫中的數(shù)據(jù)遷移到目標(biāo)數(shù)據(jù)庫中,異構(gòu)數(shù)據(jù)庫的異構(gòu)性主要表現(xiàn)在以下三個(gè)方面。

        (1)硬件平臺的異構(gòu)性[4]。數(shù)據(jù)庫管理系統(tǒng)運(yùn)行的硬件平臺不同,其運(yùn)行平臺可能是X86、MIPS 或ARM 平臺;

        (2)操作系統(tǒng)平臺的異構(gòu)性。異構(gòu)數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫管理系統(tǒng)運(yùn)行的操作系統(tǒng)種類較多,例如Windows、Linux、VxWorks與中標(biāo)麒麟等;

        (3)數(shù)據(jù)庫引擎的異構(gòu)性。常見國外數(shù)據(jù)庫有Oracle、SQLServer、Mysql 與Postgre 等,常見國產(chǎn)數(shù)據(jù)庫管理系統(tǒng)有達(dá)夢、金倉、神通等。

        異構(gòu)數(shù)據(jù)庫遷移包括模式遷移與數(shù)據(jù)遷移兩部分。

        1.1 模式遷移

        模式遷移是指為數(shù)據(jù)庫數(shù)據(jù)搭建了數(shù)據(jù)存在的框架形式,在數(shù)據(jù)庫中定義了數(shù)據(jù)存在的形式,包括數(shù)據(jù)庫中的表和表中各字段的屬性、表間依賴關(guān)系、字段依賴關(guān)系等信息。

        由于設(shè)計(jì)理念不同,各數(shù)據(jù)庫管理系統(tǒng)中數(shù)據(jù)庫模式的表現(xiàn)形式也大相徑庭,數(shù)據(jù)庫模式遷移的關(guān)鍵點(diǎn)在于數(shù)據(jù)類型映射[5]。數(shù)據(jù)類型差異表現(xiàn)以下四個(gè)方面。

        (1)異構(gòu)數(shù)據(jù)庫支持的數(shù)據(jù)類型種類不完全相同。例如A 數(shù)據(jù)庫有時(shí)間類型,B 數(shù)據(jù)庫不一定有時(shí)間類型。

        (2)異構(gòu)數(shù)據(jù)庫相同數(shù)據(jù)類型的名稱可能不同。例如存儲整型數(shù)據(jù),A 數(shù)據(jù)庫類型名稱為integer,B 數(shù)據(jù)庫類型名稱為int。

        圖1:異構(gòu)數(shù)據(jù)庫遷移系統(tǒng)架構(gòu)圖

        圖2:數(shù)據(jù)源表儲結(jié)構(gòu)

        (3)在不同場景下,一個(gè)數(shù)據(jù)庫的同一數(shù)據(jù)類型對應(yīng)其它數(shù)據(jù)庫的數(shù)據(jù)類型不同。例如A 數(shù)據(jù)庫的varchar 類型根據(jù)實(shí)際數(shù)據(jù)長度,可能對應(yīng)B 數(shù)據(jù)庫的varchar 或blob 數(shù)據(jù)類型。

        (4)類型映射往往為單向映射。例如A 數(shù)據(jù)庫支持money 類型,B 數(shù)據(jù)庫不支持money 但是支持double 類型。此時(shí)A 數(shù)據(jù)庫的money 類型對應(yīng)B 數(shù)據(jù)庫double 類型,但是B 數(shù)據(jù)庫的double類型一般不能直接轉(zhuǎn)換為A 數(shù)據(jù)庫money 類型。

        圖3:數(shù)據(jù)字典信息表存儲結(jié)構(gòu)

        圖4:數(shù)據(jù)類型存儲結(jié)構(gòu)

        圖5:異構(gòu)數(shù)據(jù)庫遷移流程圖

        1.2 數(shù)據(jù)遷移

        數(shù)據(jù)遷移則是將原數(shù)據(jù)庫中的數(shù)據(jù)填充到已搭建完成的目標(biāo)數(shù)據(jù)庫框架中。數(shù)據(jù)遷移具體實(shí)施是整個(gè)體系中關(guān)鍵的部分,需確定數(shù)據(jù)轉(zhuǎn)換的細(xì)節(jié)、數(shù)據(jù)遷移的詳細(xì)步驟以及完成遷移后的反饋等。

        2 異構(gòu)數(shù)據(jù)庫遷移系統(tǒng)架構(gòu)設(shè)計(jì)

        2.1 設(shè)計(jì)原則

        本系統(tǒng)的設(shè)計(jì)原則有三點(diǎn)。

        (1)可擴(kuò)展性。系統(tǒng)應(yīng)具備較強(qiáng)的可擴(kuò)展性,支持常見的國內(nèi)外關(guān)系型數(shù)據(jù)庫產(chǎn)品,例如Oracle、SQLServer、Mysql、Postgre、達(dá)夢、金倉、神通、天熠數(shù)據(jù)庫等。

        (2)通用性[6]。對異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)庫結(jié)構(gòu)不做要求,做到數(shù)據(jù)庫的“即插即用”,即數(shù)據(jù)庫接入后就可以使用本軟件進(jìn)行遷移。

        (3)可配置。用戶可對目標(biāo)數(shù)據(jù)庫表名、源數(shù)據(jù)庫管理系統(tǒng)和目標(biāo)數(shù)據(jù)庫管理系統(tǒng)中的數(shù)據(jù)類型的映射關(guān)系等進(jìn)行配置。

        2.2 架構(gòu)設(shè)計(jì)

        異構(gòu)數(shù)據(jù)庫遷移系統(tǒng)的架構(gòu)如圖 1所示,系統(tǒng)分為應(yīng)用層、業(yè)務(wù)邏輯層與數(shù)據(jù)層。

        (1)應(yīng)用層。該層為用戶提供操作界面,接收用戶輸入信息。包含數(shù)據(jù)源注冊、模式映射與數(shù)據(jù)庫遷移功能。數(shù)據(jù)源注冊是將數(shù)據(jù)源注冊到系統(tǒng)中,解決異構(gòu)數(shù)據(jù)庫的硬件平臺異構(gòu)、操作系統(tǒng)平臺的異構(gòu);模式映射用于管理源數(shù)據(jù)庫管理系統(tǒng)和目標(biāo)數(shù)據(jù)庫管理系統(tǒng)中的元數(shù)據(jù)對應(yīng)關(guān)系,主要數(shù)據(jù)字典元數(shù)據(jù)映射,數(shù)據(jù)類型元數(shù)據(jù)映射兩個(gè)方面;數(shù)據(jù)庫遷移用于為用戶提供遷移源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫選擇。

        (2)業(yè)務(wù)邏輯層。該層位于應(yīng)用層和數(shù)據(jù)層之間,是數(shù)據(jù)庫遷移的核心層。該層處理應(yīng)用層中提供的功能。包括數(shù)據(jù)源管理、模式映射管理、數(shù)據(jù)庫遷移流程管理模塊。

        (3)數(shù)據(jù)層。該層包括接入到系統(tǒng)中的所有異構(gòu)數(shù)據(jù)庫以及數(shù)據(jù)庫遷移的源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫。本系統(tǒng)中使用各異構(gòu)數(shù)據(jù)庫提供的ODBC 標(biāo)準(zhǔn)接口訪問各數(shù)據(jù)庫管理系統(tǒng)。

        3 關(guān)鍵模塊實(shí)現(xiàn)

        按照模塊化設(shè)計(jì)思想進(jìn)行異構(gòu)數(shù)據(jù)遷移系統(tǒng)的設(shè)計(jì),分為數(shù)據(jù)源注冊、模式映射與數(shù)據(jù)遷移流程設(shè)計(jì)三個(gè)模塊。

        3.1 數(shù)據(jù)源注冊模塊

        數(shù)據(jù)源注冊分為兩步,首先通過加載數(shù)據(jù)庫廠商提供的驅(qū)動連接數(shù)據(jù)源,然后將數(shù)據(jù)源注冊信息寫入到本地SQLite 數(shù)據(jù)庫中。數(shù)據(jù)源注冊需要的信息包括數(shù)據(jù)源類型、注冊名稱、IP 地址、端口號、DNS 信息、默認(rèn)連接數(shù)據(jù)庫名稱、用戶名與密碼,數(shù)據(jù)源注冊信息的表結(jié)構(gòu)圖如圖 2所示。

        3.2 模式映射模塊

        3.2.1 建立數(shù)據(jù)字典信息

        建立數(shù)據(jù)庫信息、數(shù)據(jù)庫內(nèi)表信息、表內(nèi)字段信息三類數(shù)據(jù)字典信息,并保存到本地SQLite 中,數(shù)據(jù)字典存儲結(jié)構(gòu)如圖3所示。

        (1)獲取數(shù)據(jù)源數(shù)據(jù)庫信息,并且寫入到SQLite 的“數(shù)據(jù)庫表”(T_DATABASEINFO)。以O(shè)racle 數(shù)據(jù)庫為例,在Qt 下獲取數(shù)據(jù)源數(shù)據(jù)庫信息的方式為QsqlQuery::exec(“SELECT * FROM USER_USERS”)。

        (2)獲取表的信息,并且寫入到SQLite 的“數(shù)據(jù)表表”(T_TABLEINFO)。以O(shè)racle 數(shù)據(jù)庫為例,在Qt 下獲取數(shù)據(jù)源內(nèi)表的信息的方式為:QsqlQuery::exec(“SELECT * FROM USER_TABLES”)。

        (3)獲取字段信息,并且寫入到SQLite 的“數(shù)據(jù)字段表”(T_FIELDINFO)。以O(shè)racle 數(shù)據(jù)庫為例,在Qt 下獲取數(shù)據(jù)源內(nèi)字段信息的方式為:QsqlQuery::exec(“SELECT COLUMN_NAME,DATA_TYPE,DATA_LENGTH FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '%1'").arg(strtable)”),其中strtable 為表的名稱。

        3.2.2 建立數(shù)據(jù)類型映射關(guān)系

        數(shù)據(jù)類型管理對各異構(gòu)數(shù)據(jù)庫中支持的數(shù)據(jù)類型進(jìn)行統(tǒng)一管理,重點(diǎn)根據(jù)各數(shù)據(jù)庫數(shù)據(jù)類型的含義構(gòu)建多元數(shù)據(jù)類型映射關(guān)系,解決從源數(shù)據(jù)庫到目標(biāo)數(shù)據(jù)庫數(shù)據(jù)模式轉(zhuǎn)換時(shí)的類型映射問題。

        針對接入到系統(tǒng)中的各異構(gòu)數(shù)據(jù)庫數(shù)據(jù)源,提取其支持的所有數(shù)據(jù)類型,保存到本地SQLite 數(shù)據(jù)庫進(jìn)行統(tǒng)一管理。針對各異構(gòu)數(shù)據(jù)庫中的數(shù)據(jù)類型,按照語義接近的原則在各異構(gòu)數(shù)據(jù)庫間建立數(shù)據(jù)類型映射關(guān)系,解決異構(gòu)數(shù)據(jù)庫模式遷移過程中從源數(shù)據(jù)庫到目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)類型映射問題。根據(jù)異構(gòu)數(shù)據(jù)數(shù)據(jù)類型映射特點(diǎn),將各數(shù)據(jù)源中的通用數(shù)據(jù)類型按照字符型、浮點(diǎn)型、整形、時(shí)間和日期、blob 型分類映射,并將當(dāng)前系統(tǒng)中的映射關(guān)系存儲在本地SQLite 數(shù)據(jù)庫中,各數(shù)據(jù)類型的映射關(guān)系存儲結(jié)構(gòu)如圖 4所示。

        3.3 數(shù)據(jù)庫遷移流程設(shè)計(jì)

        異構(gòu)數(shù)據(jù)庫遷移系統(tǒng)包括數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)裝載三部分,如圖 5所示為異構(gòu)數(shù)據(jù)庫遷移流程。

        (1)數(shù)據(jù)抽取。通過數(shù)據(jù)庫訪問接口獲取源數(shù)據(jù)庫A 數(shù)據(jù)字典信息和數(shù)據(jù)信息。

        (2)數(shù)據(jù)轉(zhuǎn)換。根據(jù)映射關(guān)系,將數(shù)據(jù)抽取獲取到的源數(shù)據(jù)庫中的數(shù)據(jù)模式和數(shù)據(jù)轉(zhuǎn)換為符合目標(biāo)數(shù)據(jù)庫規(guī)則的數(shù)據(jù)模式和數(shù)據(jù)。

        表1:Oracle 到達(dá)夢/天熠數(shù)據(jù)類型映射關(guān)系

        表2:遷移系統(tǒng)試驗(yàn)結(jié)果

        圖6:異構(gòu)數(shù)據(jù)庫遷移界面

        (3)數(shù)據(jù)裝載。將數(shù)據(jù)轉(zhuǎn)換后形成的數(shù)據(jù)模式和數(shù)據(jù)加載到目標(biāo)數(shù)據(jù)庫管理系統(tǒng)中,在目標(biāo)數(shù)據(jù)庫管理系統(tǒng)中形成數(shù)據(jù)庫B,且B 和A 在語義和數(shù)據(jù)上是等價(jià)的。

        數(shù)據(jù)遷移模塊將要遷移的數(shù)據(jù)庫數(shù)據(jù)從源數(shù)據(jù)庫中讀出,轉(zhuǎn)換為可被目標(biāo)數(shù)據(jù)庫識別的形式,然后寫入到目標(biāo)數(shù)據(jù)庫中。數(shù)據(jù)遷移位于模式遷移之后,目標(biāo)數(shù)據(jù)庫管理系統(tǒng)中具備了和源數(shù)據(jù)庫管理系統(tǒng)中數(shù)據(jù)模式相同的數(shù)據(jù)庫后,才能進(jìn)行數(shù)據(jù)遷移。對于關(guān)系數(shù)據(jù)庫來說,使用ODBC 標(biāo)準(zhǔn)接口從源數(shù)據(jù)庫中獲取數(shù)據(jù),并按照目標(biāo)數(shù)據(jù)庫所支持的SQL 語句類型生成通用SQL 插入語句,使用ODBC接口執(zhí)行生成的SQL語句,可將數(shù)據(jù)寫入到目標(biāo)數(shù)據(jù)庫中。

        4 實(shí)驗(yàn)與分析

        實(shí)驗(yàn)采取將Oracle 數(shù)據(jù)遷移到國產(chǎn)數(shù)據(jù)庫達(dá)夢數(shù)據(jù)庫和天熠數(shù)據(jù)庫中,來驗(yàn)證本系統(tǒng)的功能。選取Oracle 中數(shù)據(jù)量超過1000 萬條的18 張表遷移到達(dá)夢數(shù)據(jù)庫中,另外再選取Oracle 中數(shù)據(jù)量不超過1000 萬條的5 張表遷移到天熠數(shù)據(jù)庫中。用戶界面如圖 6所示,在該界面中選擇源數(shù)據(jù)庫、目標(biāo)數(shù)據(jù)庫、數(shù)據(jù)類型映射,系統(tǒng)根據(jù)這些信息完成數(shù)據(jù)庫遷移。

        如表1所示為數(shù)據(jù)庫遷移時(shí)設(shè)定的數(shù)據(jù)類型映射關(guān)系。

        4.1 遷移驗(yàn)證

        遷移驗(yàn)證是將目標(biāo)數(shù)據(jù)庫中的數(shù)據(jù)與源數(shù)據(jù)庫進(jìn)行核對,以確保遷移后的數(shù)據(jù)的完整性和正確性。包括核驗(yàn)數(shù)據(jù)總數(shù)與核驗(yàn)記錄內(nèi)容兩個(gè)方面。

        (1)核驗(yàn)數(shù)據(jù)總數(shù)。分別查詢源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫中各表中的數(shù)據(jù)記錄總數(shù)量,確認(rèn)目標(biāo)數(shù)據(jù)庫和源數(shù)據(jù)庫中各表數(shù)據(jù)總數(shù)的比值,即完整率。

        (2)核驗(yàn)記錄內(nèi)容。對源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫中的數(shù)據(jù)按照主鍵依次進(jìn)行查詢,確認(rèn)目標(biāo)數(shù)據(jù)庫和源數(shù)據(jù)庫中各表數(shù)據(jù)內(nèi)容一致的比率,即準(zhǔn)確率。

        使用上述兩種方法,對數(shù)據(jù)遷移前后的源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫數(shù)據(jù)進(jìn)行驗(yàn)證,具體結(jié)果如表2所示。

        4.2 實(shí)驗(yàn)結(jié)果分析

        從實(shí)驗(yàn)結(jié)果可以看出,數(shù)據(jù)遷移過程中數(shù)據(jù)的完整性保持的較好,準(zhǔn)確率略有欠缺,即所有數(shù)據(jù)記錄都進(jìn)行了遷移,但存在部分記錄的數(shù)據(jù)遷移不完整的情況。對從源數(shù)據(jù)庫到目標(biāo)數(shù)據(jù)庫產(chǎn)生偏差的數(shù)據(jù)記錄進(jìn)行分析,發(fā)現(xiàn)錯誤發(fā)生時(shí)Oracle 和達(dá)夢數(shù)據(jù)庫的數(shù)據(jù)類型不完全匹配,達(dá)夢數(shù)據(jù)庫數(shù)據(jù)類型對應(yīng)的數(shù)據(jù)長度偏小,在數(shù)據(jù)載入時(shí)未能將全部數(shù)據(jù)寫入數(shù)據(jù)庫中,但此偏差在系統(tǒng)的允許范圍內(nèi)。

        5 結(jié)束語

        本文針對異構(gòu)數(shù)據(jù)庫環(huán)境下,數(shù)據(jù)庫數(shù)據(jù)共享共用難的問題,對異構(gòu)數(shù)據(jù)庫遷移系統(tǒng)的異構(gòu)性進(jìn)行分析,從數(shù)據(jù)庫模式遷移和數(shù)據(jù)遷移兩方面對異構(gòu)數(shù)據(jù)庫遷移過程進(jìn)行描述,實(shí)現(xiàn)了一種通用的異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移方法,解決異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移問題,最后本文對設(shè)計(jì)的異構(gòu)數(shù)據(jù)庫遷移系統(tǒng)進(jìn)行了實(shí)驗(yàn)和分析。實(shí)驗(yàn)結(jié)果表明,本設(shè)計(jì)有效解決異構(gòu)數(shù)據(jù)庫遷移問題。

        猜你喜歡
        數(shù)據(jù)庫信息系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        展會信息
        中外會展(2014年4期)2014-11-27 07:46:46
        国产免费爽爽视频在线观看| 国产成人久久精品77777综合| 吃下面吃胸在线看无码| 手机av在线观看视频| 国产成人精品久久二区二区91| av日韩一区二区三区四区| 久久精品国产亚洲av麻豆长发| 超级碰碰色偷偷免费视频| 国产成人久久777777| 亚洲精品有码在线观看| 久久99国产亚洲高清观看首页| 国产熟妇一区二区三区网站| 亚洲色图专区在线观看| 极品粉嫩嫩模大尺度无码视频| 日韩乱码人妻无码中文字幕久久| 免费人成视频x8x8| 日本韩国一区二区三区| 东京热加勒比日韩精品| 日本高清一区二区在线播放| 变态另类手机版av天堂看网| 成人午夜福利视频| 成人白浆超碰人人人人| 亚洲男人天堂2017| 欧美日韩国产在线人成dvd| 国产午夜精品综合久久久| 国产成年人毛片在线99| 亚洲中文字幕无码中文字| 成人综合网亚洲伊人| 天天狠天天透天干天天| 国产精品亚洲一区二区三区正片| 精品久久一品二品三品| 亚洲国产婷婷六月丁香| 中国丰满熟妇xxxx性| 色一情一乱一伦一区二区三欧美| 青青青伊人色综合久久亚洲综合| 日韩一区二区,亚洲一区二区视频| 中文资源在线一区二区三区av| 国产精品免费一区二区三区四区| 国产美女在线精品免费观看| 丰满岳乱妇在线观看中字无码 | 69sex久久精品国产麻豆|