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

基于云服務的異構數據庫管理系統的設計與實現

2018-02-13 01:38:12石明翔田濟瑋李文齊郭學節
計算機時代 2018年12期

石明翔 田濟瑋 李文齊 郭學節

摘? 要: 為了解決企業中由于異構數據庫增多而帶來的管理難度增加、運維成本高漲等問題,設計實現了基于云服務的異構數據庫管理系統,采用面向服務的SOA架構,分為應用層、云數據庫應用服務接口、任務調度層、云數據庫數據處理接口和云數據庫等五層,能夠對Docker環境下的異構數據庫完成創建、管理、讀寫、分析等操作,為用戶提供了一種高效方便的異構數據庫管理工具。

關鍵詞: 云服務; 異構數據庫; Docker; 數據庫管理系統

中圖分類號:TP391? ? ? ? ? 文獻標志碼:A? ? ?文章編號:1006-8228(2018)12-25-04

Abstract: In order to solve the problems such as increased management difficulty and high operation and maintenance cost caused by the increase of heterogeneous databases in enterprises, this paper designed and implemented a cloud service based heterogeneous database management system. The system adopts a service-oriented SOA architecture, which is divided into five layers, namely, application layer, cloud database application service interface, task scheduling layer, cloud database data processing interface and cloud database. It is able to complete the creation, management, reading and writing, analysis and other operations of heterogeneous database in Docker environment, providing users with an efficient and convenient heterogeneous database management.

Key words: cloud service; heterogeneous database; Docker; DBMS

0 引言

近年來,隨著信息化建設不斷深入,各企事業單位的數據信息呈幾何倍數增長,從一兩個數據庫增長為多個甚至幾十個不同種類、不同結構的數據庫,而庫與庫之間又有很多業務交叉點,一個數據庫的數據更新可能會影響到多個數據庫。同時,數據庫的多樣化帶來了諸多問題:一是不同種類的數據庫對系統的軟硬件環境有著不同要求;二是數據庫的異構也增加了管理難度,要求管理人員不僅要熟悉多種數據庫的接口,而且在管理不同數據庫時也要投入大量時間。這些問題導致了數據庫運維成本不斷增加,異構數據庫的整合和管理變得迫在眉睫。

本文主要依托于Docker技術,將多種不同種類的主流數據庫(Oracle、SqlServer、Mysql)部署在云平臺上,并開發基于云服務的異構數據庫管理系統,能夠對異構數據庫完成快速創建、表數據快速錄入、全文檢索、一鍵查詢、查詢模版管理、多表查詢、統計分析、導入導出等操作。系統還設置了用戶管理、權限管理、選擇數據管理、分級數據管理等主要模塊,增加了系統安全性,不但為用戶提供了一種清晰、方便的異構數據庫管理分析工具,還對提高數據庫的使用效率,降低企業人工成本有著很高的實際意義。

1 關鍵技術研究與介紹

本系統利用Java語言進行開發,采用面向服務的SOA架構,主要涉及云數據庫虛擬化、數據交換格式、云數據庫服務應用接口開發等技術。

1.1 云數據庫虛擬化

將多種異構數據庫部署到云端一般使用虛擬化技術,傳統是將不同的數據庫安裝到對應的虛擬機中,但虛擬機技術實際上是在原有操作系統中安裝獨立的OS并利用Hypervisor技術虛擬出CPU、內存、IO等設備來達到資源隔絕的目的,因此,存在耗費資源較大、訪問內存效率較低等問題[1-2]。

而近年出現的虛擬容器與虛擬機有著完全不同的實現原理,以Docker為例,它不必再安裝獨立的OS,而是使用更輕量級的LXC(Linux Containers)將虛擬機進程偽裝為HOST進程,并利用命名空間(NameSpace)和群組控制(Cgroups)完成各個Docker進程間的隔離及資源分配,并且所有Docker共享宿主機的內核與硬件[3]。虛擬容器相比虛擬機有著讀寫內存效率高、啟動時間快及資源利用率高等優勢,同時獨有的鏡像發布也使應用的安裝、備份和遷移變得更為便捷[4],因此本文使用Docker技術將Mysql、Oracle、SqlServer三種數據庫部署到云端。

1.2 數據交換格式

JSON(JavaScript Object Notation)是由歐洲計算機協會于1999年制定的ECMAScript中的一個子集,采用輕量級的“名值對”集合來表示和存儲數據[5],具備跨平臺、跨語言、易解析、體積小等優點,比傳統的XML更適合大數據量的網絡傳輸[6],因此本文選用JSON作為異構數據庫結果的表示格式。

1.3 云數據庫服務接口開發

本文使用基于HTTP協議的輕量級架構Restful WebService開發應用服務層接口,相比于傳統的SOAP WebService具有簡潔、高效、操作性強等優勢[7],并且Restful是一種面向資源的服務,其創建、獲取、修改、刪除資源的操作對應著HTTP協議提供的PUT、GET、POST及DELETE方法,這種針對WEB應用的設計方式,可以減小系統復雜度和耦合性,提升軟件的可擴展性[8]。

2 系統架構及工作流程

本系統由應用服務層、云數據庫應用服務接口、任務調度層、云數據庫處理接口和Docker化的云數據庫層等三層兩個接口構成,系統架構如圖1所示。

<E:\方正創藝5.1\Fit201812\圖\smx圖1.tif>

圖1? 系統架構圖

用戶從應用層發出的操作請求首先提交到云數據庫應用服務接口,該接口會利用異構語義解析技術將用戶請求解析成不同的邏輯操作集合并發送到任務調度層。任務調度層會將這些集合轉換為對應的處理任務后發送給云數據庫處理接口,該接口會將不同的子任務按對應數據源分發到不同數據庫進行執行,最后將返回結果利用異構結果合成技術進行轉換后以JSON格式發送至客戶端。

3 系統實現

3.1 應用層

應用層為系統前端,主要負責與用戶進行直接交互,包括創建服務、創建數據庫、創建數據表、數據管理、分級表管理、選擇表管理、數據查詢、多表查詢、統計分析、用戶角色管理等功能,可以把用戶的操作請求通過Http協議發送到云數據庫應用服務接口進行處理,并將反饋結果呈現給用戶。

3.2 云數據庫應用服務接口

云數據庫應用服務接口位于服務器端,以Restful WebService形式統一向外提供調用服務,主要包括用戶操作語句解析和查詢結果表示等功能。本接口的核心為操作語句解析模塊,當模塊收到應用層發來的操作請求后,會根據不同的數據源將請求解析成對應的邏輯操作子集合(例如:選擇、連接、聚合等),并發送到任務調度層進行執行,待執行結果返回后再以JSON格式回傳給應用層。其工作流程如圖2所示。

3.3 任務調度層

任務調度層為系統緩沖層,主要負責接收云數據庫應用服務接口發送來的邏輯操作子集合,并根據對應的數據源將其轉換為處理任務后進行判斷:如果是非實時任務則放入緩沖區等待;如果是實時任務則放入執行區,并依據先到先服務原則(FIFO)交由下一層進行處理。其處理流程如圖3所示。

任務調度層的主要功能有以下。

⑴ 任務區管理

任務區主要包括執行區(實時任務排隊)和緩沖區(非實時任務排隊)。操作任務被分類后加入相應任務區中排隊等待,如有新的任務提交或處理,任務管理模塊會更新隊列結構。

⑵ 任務提取

任務區中的數據結構采用隊列(先進先出)結構,每當有新的請求到來時,任務管理模塊會從對應的隊列頭部提取任務并提交。

⑶ 處理非實時任務

所有的非實時任務都會有時間戳屬性,當執行時間到達時,任務管理模塊會將該任務轉換為實時任務后提交給判斷模塊進行處理。

⑷ 處理實時任務

為了降低下層數據庫處理接口的負載,所有實時任務在被處理前會加入任務執行區,任務管理模塊會依據下層接口的處理速度,從執行區取出待處理任務進行提交。

3.4 云數據庫數據處理接口

該層為整個系統的核心,負責將上層執行任務解析成不同數據庫的sql語句并執行,再將執行結果合成后上傳到任務調度層。主要有異構語義映射和查詢結果合成兩個模塊。

⑴ 異構語義映射

目前對關系數據庫的操作主要通過結構化查詢語言(SQL)來完成,但是不同數據庫產商在實現時并沒有嚴格執行ANSI(美國國家標準化組織)標準,這就導致不同數據庫所支持的SQL語句在很多細節方面有所差異,以查看表結構為例,SqlServer語法是exec sp_help @tablename,Oracle語法為desc @tablename,MySql語法為describe @tablename。此外,三種數據庫還在修改表名、修改列名、添加約束以及各種函數使用上存在諸多差異[9]。

為了能讓用戶操作被不同數據庫正確執行,異構語義映射模塊可以將上層傳入的操作任務通過識別后轉換為對應數據庫所支持的sql語句,并交由相應的數據源進行執行。其核心類圖如圖4所示。

① DBConnection類:數據庫連接類。getConnection方法用于返回不同數據庫的連接。

② DBOperate接口:數據庫操作接口。convertSql用法用于將操作任務轉換為不同數據庫的sql語句,execQuery方法用于執行查詢操作,execNonQuery方法用于執行刪除、更新等非查詢操作。DBOperate接口的實現類為MySqlOperate、OracleOperate和SqlServerOperate,主要用于對MySql、Oracle、SqlServer等數據庫進行操作。

③ SemanticMapping類:異構語義映射類。receiveTask方法用于接收上一層發送的數據庫操作任務,operate方法用于執行操作任務,sendResult方法用于將數據庫查詢結果返回任務調度層。

⑵ 查詢結果合成

查詢結果合成模塊主要將異構數據庫返回的結果合成為具有相同格式的結果集,再以JSON形式返回給任務調度層。其主要步驟如下。

① 查詢結果合成模塊通過MySqlOperate、OracleOperate、SqlServerOperate等數據庫操作類獲取異構數據源數據。

② 利用Mybatis框架中的ORM技術將數據庫表映射為Java的POJO對象,其中數據表的列被映射為對象屬性,數據表的各行記錄被轉換為各個持久化對象。

③ 利用基于哈希表的集合差集算法去除記錄集中的重復值并進行合并。算法的核心代碼如下:

HashMap differenceFilter(HashMap<String, String>

map1,HashMap map2) {

HashMap resultMap=(HashMap)map1.clone();

//將map1中的所有記錄拷貝至resultMap

Iterator<Entry<String, Integer>> it1=

map1.entrySet().iterator();

while(it1.hasNext()) { //通過遍歷,找出存在于map2但不

存在于map1中的所有記錄,并添加到resultMap中

Entry<String, String> entry1=it1.next();

String value2=tempMap.get(entry1.getKey());

if(value2==null||(!value2.equals(entry1.getValue()))) {

resultMap.put(entry1.getKey(),entry1.getValue());

}

}

return resultMap;

}

④ 將最終結果表示為JSON格式,返回給任務調度層。

4 結束語

本文依托于云計算平臺,利用Docker虛擬容器技術將三種不同的異構數據庫部署到云端,并綜合應用Java、JSON、Restful Webservice和Mybatis等技術設計并實現了“基于云服務的異構數據庫管理系統”,用于對異構數據庫管理和操作。在系統實現過程中,重點解決了異構語義映射、異構結果合成、異構數據信息表示等技術難題。通過測試對比分析證明了系統無論是在運行效率還是可擴展性上都有良好的表現。

參考文獻(References):

[1] 柯偉.異構數據庫中表的相似性查詢系統設計與實現[D].華中科技大學,2016.

[2] 汪青峰.面向多業務的異構數據庫中間件的設計與實現[D].北京郵電大學,2016.

[3] 杜寶麗.基于Docker的云數據庫服務系統的設計與實現[D].西安電子科技大學,2015.

[4] 王男.面向證券業務系統的虛擬化測試平臺的研究[D].吉林大學,2015.

[5] JSON[EB/OL].http://json.org/json-zh.html

[6] XML[EB/OL].https://en.wikipedia.org/wiki/XML

[7] 王曉瑞.基于SOA的分布式異構數據庫數據信息同步系統的研究與應用[D].河南大學,2016.

[8] 萬一東,謝俊岱.云計算環境下異構數據庫整合技術的研究與實現[J].電腦知識與技術,2013.5:3232-3235

[9] 熊現.基于JAVA_XML 的異構數據同步系統的設計和實現[D].上海交通大學,2007.

主站蜘蛛池模板: 热这里只有精品国产热门精品| 亚洲中文字幕在线观看| 谁有在线观看日韩亚洲最新视频 | 欧美专区在线观看| 亚洲全网成人资源在线观看| 青青青视频91在线 | 日韩国产一区二区三区无码| 一本大道东京热无码av| 婷婷六月激情综合一区| 久久中文字幕av不卡一区二区| 2021天堂在线亚洲精品专区| 毛片在线看网站| 成人福利在线视频| 黄片一区二区三区| 亚洲国产精品无码久久一线| 试看120秒男女啪啪免费| 国产肉感大码AV无码| 午夜欧美理论2019理论| 91精品情国产情侣高潮对白蜜| 亚洲人妖在线| AV熟女乱| 亚洲大尺码专区影院| 国产黑丝一区| 成人无码一区二区三区视频在线观看| 丁香婷婷激情网| 亚洲色图综合在线| 久久久久夜色精品波多野结衣| 国产SUV精品一区二区| 亚洲国产天堂在线观看| 四虎国产精品永久一区| 国产激情第一页| 好吊色妇女免费视频免费| 国产一区二区影院| 99热国产在线精品99| 91视频99| 天堂成人在线视频| 亚洲国语自产一区第二页| 国产亚洲一区二区三区在线| 日韩区欧美区| 极品国产在线| 国产一区二区网站| 国产精品一区二区在线播放| 色久综合在线| 国产v欧美v日韩v综合精品| 精品一区二区三区视频免费观看| 日韩欧美中文字幕在线韩免费| 亚洲乱码在线播放| 又爽又黄又无遮挡网站| 国产迷奸在线看| 91在线高清视频| 日本黄色不卡视频| 日本成人精品视频| 久久精品国产亚洲麻豆| 国产亚洲高清在线精品99| 国产成人久视频免费| 亚洲欧美色中文字幕| 欧美一级视频免费| 亚洲欧美在线综合图区| 色婷婷丁香| 高清色本在线www| 四虎永久免费地址| 久久综合九色综合97婷婷| 最新午夜男女福利片视频| 波多野结衣视频一区二区| 久久久国产精品无码专区| 亚洲AV人人澡人人双人| 亚洲永久精品ww47国产| 最新亚洲人成网站在线观看| 欧美精品伊人久久| 亚洲精品国产日韩无码AV永久免费网| 国产黄在线观看| 午夜精品久久久久久久2023| 国产在线自揄拍揄视频网站| 自拍偷拍欧美| hezyo加勒比一区二区三区| 91精品在线视频观看| 国产精品手机在线观看你懂的| 国产精品永久不卡免费视频| 国产亚洲欧美日韩在线观看一区二区| 日韩福利在线视频| 免费一级大毛片a一观看不卡| 精品第一国产综合精品Aⅴ|