国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于云服務(wù)的異構(gòu)數(shù)據(jù)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2018-02-13 01:38石明翔田濟(jì)瑋李文齊郭學(xué)節(jié)
計(jì)算機(jī)時(shí)代 2018年12期
關(guān)鍵詞:云服務(wù)

石明翔 田濟(jì)瑋 李文齊 郭學(xué)節(jié)

摘? 要: 為了解決企業(yè)中由于異構(gòu)數(shù)據(jù)庫(kù)增多而帶來(lái)的管理難度增加、運(yùn)維成本高漲等問題,設(shè)計(jì)實(shí)現(xiàn)了基于云服務(wù)的異構(gòu)數(shù)據(jù)庫(kù)管理系統(tǒng),采用面向服務(wù)的SOA架構(gòu),分為應(yīng)用層、云數(shù)據(jù)庫(kù)應(yīng)用服務(wù)接口、任務(wù)調(diào)度層、云數(shù)據(jù)庫(kù)數(shù)據(jù)處理接口和云數(shù)據(jù)庫(kù)等五層,能夠?qū)ocker環(huán)境下的異構(gòu)數(shù)據(jù)庫(kù)完成創(chuàng)建、管理、讀寫、分析等操作,為用戶提供了一種高效方便的異構(gòu)數(shù)據(jù)庫(kù)管理工具。

關(guān)鍵詞: 云服務(wù); 異構(gòu)數(shù)據(jù)庫(kù); Docker; 數(shù)據(jù)庫(kù)管理系統(tǒng)

中圖分類號(hào):TP391? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ?文章編號(hào):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 引言

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

本文主要依托于Docker技術(shù),將多種不同種類的主流數(shù)據(jù)庫(kù)(Oracle、SqlServer、Mysql)部署在云平臺(tái)上,并開發(fā)基于云服務(wù)的異構(gòu)數(shù)據(jù)庫(kù)管理系統(tǒng),能夠?qū)Ξ悩?gòu)數(shù)據(jù)庫(kù)完成快速創(chuàng)建、表數(shù)據(jù)快速錄入、全文檢索、一鍵查詢、查詢模版管理、多表查詢、統(tǒng)計(jì)分析、導(dǎo)入導(dǎo)出等操作。系統(tǒng)還設(shè)置了用戶管理、權(quán)限管理、選擇數(shù)據(jù)管理、分級(jí)數(shù)據(jù)管理等主要模塊,增加了系統(tǒng)安全性,不但為用戶提供了一種清晰、方便的異構(gòu)數(shù)據(jù)庫(kù)管理分析工具,還對(duì)提高數(shù)據(jù)庫(kù)的使用效率,降低企業(yè)人工成本有著很高的實(shí)際意義。

1 關(guān)鍵技術(shù)研究與介紹

本系統(tǒng)利用Java語(yǔ)言進(jìn)行開發(fā),采用面向服務(wù)的SOA架構(gòu),主要涉及云數(shù)據(jù)庫(kù)虛擬化、數(shù)據(jù)交換格式、云數(shù)據(jù)庫(kù)服務(wù)應(yīng)用接口開發(fā)等技術(shù)。

1.1 云數(shù)據(jù)庫(kù)虛擬化

將多種異構(gòu)數(shù)據(jù)庫(kù)部署到云端一般使用虛擬化技術(shù),傳統(tǒng)是將不同的數(shù)據(jù)庫(kù)安裝到對(duì)應(yīng)的虛擬機(jī)中,但虛擬機(jī)技術(shù)實(shí)際上是在原有操作系統(tǒng)中安裝獨(dú)立的OS并利用Hypervisor技術(shù)虛擬出CPU、內(nèi)存、IO等設(shè)備來(lái)達(dá)到資源隔絕的目的,因此,存在耗費(fèi)資源較大、訪問內(nèi)存效率較低等問題[1-2]。

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

1.2 數(shù)據(jù)交換格式

JSON(JavaScript Object Notation)是由歐洲計(jì)算機(jī)協(xié)會(huì)于1999年制定的ECMAScript中的一個(gè)子集,采用輕量級(jí)的“名值對(duì)”集合來(lái)表示和存儲(chǔ)數(shù)據(jù)[5],具備跨平臺(tái)、跨語(yǔ)言、易解析、體積小等優(yōu)點(diǎn),比傳統(tǒng)的XML更適合大數(shù)據(jù)量的網(wǎng)絡(luò)傳輸[6],因此本文選用JSON作為異構(gòu)數(shù)據(jù)庫(kù)結(jié)果的表示格式。

1.3 云數(shù)據(jù)庫(kù)服務(wù)接口開發(fā)

本文使用基于HTTP協(xié)議的輕量級(jí)架構(gòu)Restful WebService開發(fā)應(yīng)用服務(wù)層接口,相比于傳統(tǒng)的SOAP WebService具有簡(jiǎn)潔、高效、操作性強(qiáng)等優(yōu)勢(shì)[7],并且Restful是一種面向資源的服務(wù),其創(chuàng)建、獲取、修改、刪除資源的操作對(duì)應(yīng)著HTTP協(xié)議提供的PUT、GET、POST及DELETE方法,這種針對(duì)WEB應(yīng)用的設(shè)計(jì)方式,可以減小系統(tǒng)復(fù)雜度和耦合性,提升軟件的可擴(kuò)展性[8]。

2 系統(tǒng)架構(gòu)及工作流程

本系統(tǒng)由應(yīng)用服務(wù)層、云數(shù)據(jù)庫(kù)應(yīng)用服務(wù)接口、任務(wù)調(diào)度層、云數(shù)據(jù)庫(kù)處理接口和Docker化的云數(shù)據(jù)庫(kù)層等三層兩個(gè)接口構(gòu)成,系統(tǒng)架構(gòu)如圖1所示。

<E:\方正創(chuàng)藝5.1\Fit201812\圖\smx圖1.tif>

圖1? 系統(tǒng)架構(gòu)圖

用戶從應(yīng)用層發(fā)出的操作請(qǐng)求首先提交到云數(shù)據(jù)庫(kù)應(yīng)用服務(wù)接口,該接口會(huì)利用異構(gòu)語(yǔ)義解析技術(shù)將用戶請(qǐng)求解析成不同的邏輯操作集合并發(fā)送到任務(wù)調(diào)度層。任務(wù)調(diào)度層會(huì)將這些集合轉(zhuǎn)換為對(duì)應(yīng)的處理任務(wù)后發(fā)送給云數(shù)據(jù)庫(kù)處理接口,該接口會(huì)將不同的子任務(wù)按對(duì)應(yīng)數(shù)據(jù)源分發(fā)到不同數(shù)據(jù)庫(kù)進(jìn)行執(zhí)行,最后將返回結(jié)果利用異構(gòu)結(jié)果合成技術(shù)進(jìn)行轉(zhuǎn)換后以JSON格式發(fā)送至客戶端。

3 系統(tǒng)實(shí)現(xiàn)

3.1 應(yīng)用層

應(yīng)用層為系統(tǒng)前端,主要負(fù)責(zé)與用戶進(jìn)行直接交互,包括創(chuàng)建服務(wù)、創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建數(shù)據(jù)表、數(shù)據(jù)管理、分級(jí)表管理、選擇表管理、數(shù)據(jù)查詢、多表查詢、統(tǒng)計(jì)分析、用戶角色管理等功能,可以把用戶的操作請(qǐng)求通過Http協(xié)議發(fā)送到云數(shù)據(jù)庫(kù)應(yīng)用服務(wù)接口進(jìn)行處理,并將反饋結(jié)果呈現(xiàn)給用戶。

3.2 云數(shù)據(jù)庫(kù)應(yīng)用服務(wù)接口

云數(shù)據(jù)庫(kù)應(yīng)用服務(wù)接口位于服務(wù)器端,以Restful WebService形式統(tǒng)一向外提供調(diào)用服務(wù),主要包括用戶操作語(yǔ)句解析和查詢結(jié)果表示等功能。本接口的核心為操作語(yǔ)句解析模塊,當(dāng)模塊收到應(yīng)用層發(fā)來(lái)的操作請(qǐng)求后,會(huì)根據(jù)不同的數(shù)據(jù)源將請(qǐng)求解析成對(duì)應(yīng)的邏輯操作子集合(例如:選擇、連接、聚合等),并發(fā)送到任務(wù)調(diào)度層進(jìn)行執(zhí)行,待執(zhí)行結(jié)果返回后再以JSON格式回傳給應(yīng)用層。其工作流程如圖2所示。

3.3 任務(wù)調(diào)度層

任務(wù)調(diào)度層為系統(tǒng)緩沖層,主要負(fù)責(zé)接收云數(shù)據(jù)庫(kù)應(yīng)用服務(wù)接口發(fā)送來(lái)的邏輯操作子集合,并根據(jù)對(duì)應(yīng)的數(shù)據(jù)源將其轉(zhuǎn)換為處理任務(wù)后進(jìn)行判斷:如果是非實(shí)時(shí)任務(wù)則放入緩沖區(qū)等待;如果是實(shí)時(shí)任務(wù)則放入執(zhí)行區(qū),并依據(jù)先到先服務(wù)原則(FIFO)交由下一層進(jìn)行處理。其處理流程如圖3所示。

任務(wù)調(diào)度層的主要功能有以下。

⑴ 任務(wù)區(qū)管理

任務(wù)區(qū)主要包括執(zhí)行區(qū)(實(shí)時(shí)任務(wù)排隊(duì))和緩沖區(qū)(非實(shí)時(shí)任務(wù)排隊(duì))。操作任務(wù)被分類后加入相應(yīng)任務(wù)區(qū)中排隊(duì)等待,如有新的任務(wù)提交或處理,任務(wù)管理模塊會(huì)更新隊(duì)列結(jié)構(gòu)。

⑵ 任務(wù)提取

任務(wù)區(qū)中的數(shù)據(jù)結(jié)構(gòu)采用隊(duì)列(先進(jìn)先出)結(jié)構(gòu),每當(dāng)有新的請(qǐng)求到來(lái)時(shí),任務(wù)管理模塊會(huì)從對(duì)應(yīng)的隊(duì)列頭部提取任務(wù)并提交。

⑶ 處理非實(shí)時(shí)任務(wù)

所有的非實(shí)時(shí)任務(wù)都會(huì)有時(shí)間戳屬性,當(dāng)執(zhí)行時(shí)間到達(dá)時(shí),任務(wù)管理模塊會(huì)將該任務(wù)轉(zhuǎn)換為實(shí)時(shí)任務(wù)后提交給判斷模塊進(jìn)行處理。

⑷ 處理實(shí)時(shí)任務(wù)

為了降低下層數(shù)據(jù)庫(kù)處理接口的負(fù)載,所有實(shí)時(shí)任務(wù)在被處理前會(huì)加入任務(wù)執(zhí)行區(qū),任務(wù)管理模塊會(huì)依據(jù)下層接口的處理速度,從執(zhí)行區(qū)取出待處理任務(wù)進(jìn)行提交。

3.4 云數(shù)據(jù)庫(kù)數(shù)據(jù)處理接口

該層為整個(gè)系統(tǒng)的核心,負(fù)責(zé)將上層執(zhí)行任務(wù)解析成不同數(shù)據(jù)庫(kù)的sql語(yǔ)句并執(zhí)行,再將執(zhí)行結(jié)果合成后上傳到任務(wù)調(diào)度層。主要有異構(gòu)語(yǔ)義映射和查詢結(jié)果合成兩個(gè)模塊。

⑴ 異構(gòu)語(yǔ)義映射

目前對(duì)關(guān)系數(shù)據(jù)庫(kù)的操作主要通過結(jié)構(gòu)化查詢語(yǔ)言(SQL)來(lái)完成,但是不同數(shù)據(jù)庫(kù)產(chǎn)商在實(shí)現(xiàn)時(shí)并沒有嚴(yán)格執(zhí)行ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)化組織)標(biāo)準(zhǔn),這就導(dǎo)致不同數(shù)據(jù)庫(kù)所支持的SQL語(yǔ)句在很多細(xì)節(jié)方面有所差異,以查看表結(jié)構(gòu)為例,SqlServer語(yǔ)法是exec sp_help @tablename,Oracle語(yǔ)法為desc @tablename,MySql語(yǔ)法為describe @tablename。此外,三種數(shù)據(jù)庫(kù)還在修改表名、修改列名、添加約束以及各種函數(shù)使用上存在諸多差異[9]。

為了能讓用戶操作被不同數(shù)據(jù)庫(kù)正確執(zhí)行,異構(gòu)語(yǔ)義映射模塊可以將上層傳入的操作任務(wù)通過識(shí)別后轉(zhuǎn)換為對(duì)應(yīng)數(shù)據(jù)庫(kù)所支持的sql語(yǔ)句,并交由相應(yīng)的數(shù)據(jù)源進(jìn)行執(zhí)行。其核心類圖如圖4所示。

① DBConnection類:數(shù)據(jù)庫(kù)連接類。getConnection方法用于返回不同數(shù)據(jù)庫(kù)的連接。

② DBOperate接口:數(shù)據(jù)庫(kù)操作接口。convertSql用法用于將操作任務(wù)轉(zhuǎn)換為不同數(shù)據(jù)庫(kù)的sql語(yǔ)句,execQuery方法用于執(zhí)行查詢操作,execNonQuery方法用于執(zhí)行刪除、更新等非查詢操作。DBOperate接口的實(shí)現(xiàn)類為MySqlOperate、OracleOperate和SqlServerOperate,主要用于對(duì)MySql、Oracle、SqlServer等數(shù)據(jù)庫(kù)進(jìn)行操作。

③ SemanticMapping類:異構(gòu)語(yǔ)義映射類。receiveTask方法用于接收上一層發(fā)送的數(shù)據(jù)庫(kù)操作任務(wù),operate方法用于執(zhí)行操作任務(wù),sendResult方法用于將數(shù)據(jù)庫(kù)查詢結(jié)果返回任務(wù)調(diào)度層。

⑵ 查詢結(jié)果合成

查詢結(jié)果合成模塊主要將異構(gòu)數(shù)據(jù)庫(kù)返回的結(jié)果合成為具有相同格式的結(jié)果集,再以JSON形式返回給任務(wù)調(diào)度層。其主要步驟如下。

① 查詢結(jié)果合成模塊通過MySqlOperate、OracleOperate、SqlServerOperate等數(shù)據(jù)庫(kù)操作類獲取異構(gòu)數(shù)據(jù)源數(shù)據(jù)。

② 利用Mybatis框架中的ORM技術(shù)將數(shù)據(jù)庫(kù)表映射為Java的POJO對(duì)象,其中數(shù)據(jù)表的列被映射為對(duì)象屬性,數(shù)據(jù)表的各行記錄被轉(zhuǎn)換為各個(gè)持久化對(duì)象。

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

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;

}

④ 將最終結(jié)果表示為JSON格式,返回給任務(wù)調(diào)度層。

4 結(jié)束語(yǔ)

本文依托于云計(jì)算平臺(tái),利用Docker虛擬容器技術(shù)將三種不同的異構(gòu)數(shù)據(jù)庫(kù)部署到云端,并綜合應(yīng)用Java、JSON、Restful Webservice和Mybatis等技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了“基于云服務(wù)的異構(gòu)數(shù)據(jù)庫(kù)管理系統(tǒng)”,用于對(duì)異構(gòu)數(shù)據(jù)庫(kù)管理和操作。在系統(tǒng)實(shí)現(xiàn)過程中,重點(diǎn)解決了異構(gòu)語(yǔ)義映射、異構(gòu)結(jié)果合成、異構(gòu)數(shù)據(jù)信息表示等技術(shù)難題。通過測(cè)試對(duì)比分析證明了系統(tǒng)無(wú)論是在運(yùn)行效率還是可擴(kuò)展性上都有良好的表現(xiàn)。

參考文獻(xiàn)(References):

[1] 柯偉.異構(gòu)數(shù)據(jù)庫(kù)中表的相似性查詢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].華中科技大學(xué),2016.

[2] 汪青峰.面向多業(yè)務(wù)的異構(gòu)數(shù)據(jù)庫(kù)中間件的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2016.

[3] 杜寶麗.基于Docker的云數(shù)據(jù)庫(kù)服務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安電子科技大學(xué),2015.

[4] 王男.面向證券業(yè)務(wù)系統(tǒng)的虛擬化測(cè)試平臺(tái)的研究[D].吉林大學(xué),2015.

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

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

[7] 王曉瑞.基于SOA的分布式異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)信息同步系統(tǒng)的研究與應(yīng)用[D].河南大學(xué),2016.

[8] 萬(wàn)一東,謝俊岱.云計(jì)算環(huán)境下異構(gòu)數(shù)據(jù)庫(kù)整合技術(shù)的研究與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2013.5:3232-3235

[9] 熊現(xiàn).基于JAVA_XML 的異構(gòu)數(shù)據(jù)同步系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[D].上海交通大學(xué),2007.

猜你喜歡
云服務(wù)
淺析如何拓展教育管理信息化云服務(wù)
云會(huì)計(jì)在中小企業(yè)中的應(yīng)用研究
基于會(huì)計(jì)服務(wù)的SWOT分析
廣電網(wǎng)絡(luò)前端業(yè)務(wù)融合云服務(wù)平臺(tái)設(shè)計(jì)
互聯(lián)網(wǎng)背景下傳媒業(yè)的轉(zhuǎn)型
云服務(wù)環(huán)境中低碳型教育信息化模式研究
云服務(wù)環(huán)境下的高校協(xié)同創(chuàng)新研究
基于云服務(wù)的加密式門禁系統(tǒng)設(shè)計(jì)
云服務(wù)背景下的圖書館知識(shí)建構(gòu)管理模型
淺析大眾化的云計(jì)算服務(wù)
临朐县| 德钦县| 兴和县| 苍南县| 龙南县| 呼伦贝尔市| 浑源县| 桐梓县| 盘锦市| 鹤峰县| 旅游| 乐陵市| 桑日县| 涞源县| 湖口县| 新邵县| 临夏县| 阜阳市| 永丰县| 百色市| 隆安县| 驻马店市| 武穴市| 铅山县| 大石桥市| 长海县| 乌鲁木齐市| 东乡族自治县| 安顺市| 集安市| 巴楚县| 蒙阴县| 汽车| 安化县| 东光县| 郧西县| 仁寿县| 鹤庆县| 临潭县| 新河县| 文安县|