摘 要:Web Service是新興的技術(shù),將Web Service技術(shù)運(yùn)用到數(shù)據(jù)抽取中,可以快速、準(zhǔn)確地將數(shù)據(jù)抽取出來(lái),并且能夠在不同網(wǎng)絡(luò)環(huán)境下進(jìn)行數(shù)據(jù)處理。闡述Web Service 的優(yōu)點(diǎn)和結(jié)構(gòu),從Web Service的原理入手,以網(wǎng)格項(xiàng)目做背景,設(shè)計(jì)數(shù)據(jù)抽取的模型,討論Web Service在數(shù)據(jù)抽取中的設(shè)計(jì)方法,并進(jìn)行通過(guò)Web Service進(jìn)行數(shù)據(jù)抽取的相關(guān)實(shí)驗(yàn)。
關(guān)鍵詞:Web Service;數(shù)據(jù)抽??;抽取線程;數(shù)據(jù)庫(kù)
中圖分類號(hào):TP392文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2008)08-100-03
Research and Design of Data Extraction Based on Web Service
SUN Weijian1,WANG Yuding2,JIA Li1,ZHANG Xiaofang1
(1.School of Information Control Engineering,Xi′an University of Architecture Technology,Xi′an,710055,China;
2.Xi′an Communication Institute,Xi′an,710106,China)
Abstract:Web Service is a new technology,and using Web Service to extract data is exactly and quickly,and it can process the data in different environment.This paper expounds the advantage and structure.The paper also designs the model of data extraction based on the Web Service′s principle and a grid project,and discusses the design method of designing Web Service in data extraction,and makes an experiment correlative data extraction through Web Service.
Keywords:Web Service;data extraction;extraction thread;database
1 引 言
在現(xiàn)代數(shù)據(jù)庫(kù)的設(shè)計(jì)和操作中,由于數(shù)據(jù)庫(kù)中的數(shù)據(jù)在不斷更新,往往需要操作人員提取更新的數(shù)據(jù),這個(gè)過(guò)程成為數(shù)據(jù)抽取。數(shù)據(jù)抽取是數(shù)據(jù)庫(kù)操作的基礎(chǔ),也是使用人員獲得最新數(shù)據(jù)的方法,數(shù)據(jù)抽取技術(shù)已成為當(dāng)今研究的一個(gè)熱點(diǎn),利用數(shù)據(jù)抽取技術(shù),通過(guò)對(duì)特定數(shù)據(jù)庫(kù)結(jié)構(gòu)和數(shù)據(jù)項(xiàng)特征分析,可以將新數(shù)據(jù)或是感興趣信息準(zhǔn)確的抽取出來(lái),并保存在相應(yīng)的數(shù)據(jù)庫(kù)以供查詢和其他應(yīng)用程序的使用。
本文在一個(gè)數(shù)據(jù)庫(kù)網(wǎng)格項(xiàng)目中運(yùn)用Web Service進(jìn)行數(shù)據(jù)的抽取,系統(tǒng)使用Microsoft.Net平臺(tái),C#開發(fā)語(yǔ)言;在Microsoft Visual Studio.Net 集成開發(fā)環(huán)境中開發(fā)。系統(tǒng)穩(wěn)定,抽取數(shù)據(jù)快速準(zhǔn)確,體現(xiàn)了Web Service在數(shù)據(jù)抽取中的優(yōu)勢(shì)。
2 Web Service概述
Web Service 是完全基于XML (可擴(kuò)展標(biāo)記語(yǔ)言)、XSD(XML Schema)的獨(dú)立于平臺(tái)、獨(dú)立于軟件供應(yīng)商的標(biāo)準(zhǔn),是創(chuàng)建可互操作的、分布式應(yīng)用程序的新平臺(tái)。Web Service的主要目標(biāo)是實(shí)現(xiàn)跨平臺(tái)的可互操作性,是目前最有生命力的跨平臺(tái)技術(shù)。
2.1 Web Service 工作原理
Web Service 主要利用HTTP 和SOAP 協(xié)議使數(shù)據(jù)在網(wǎng)絡(luò)上傳輸,SOAP 通過(guò)HTTP 調(diào)用對(duì)象執(zhí)行遠(yuǎn)程功能調(diào)用,Web 用戶能夠使用SOAP 和HTTP 通過(guò)Web 調(diào)用的方法調(diào)用遠(yuǎn)程對(duì)象。具體地說(shuō)就是客戶端根據(jù)自己的業(yè)務(wù)工作流需求,使用瀏覽或直接獲取2種查找模式查找通過(guò)UDDI 發(fā)布在網(wǎng)上滿足自己需要的Web Service,獲得這些Web Service 的WSDL,生成客戶端代理。使用該客戶端代理就像使用本地組件,而代理通過(guò)SOAP 協(xié)議去激活遠(yuǎn)程方法,實(shí)現(xiàn)數(shù)據(jù)存取。具體工作模式如圖1所示。
2.2 Web Service 平臺(tái)及組成部分
Web Service 的核心技術(shù)包括XML,SOAP,WSDL 和UDDI。WSDL(Web service description language) 是描述應(yīng)用系統(tǒng)的邏輯接口,描述應(yīng)用系統(tǒng)對(duì)外提供的服務(wù), 定義了服務(wù)的位置, 以及使用什么通信協(xié)議與服務(wù)進(jìn)行通信。UDDI(Universal Description Discovery and Integration) UDDI 是為Web Service 提供的、信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范, 為客戶提供動(dòng)態(tài)查找其他Web service 的機(jī)制。使用UDDI 接口, 商務(wù)處理可以動(dòng)態(tài)地連接到外部的合作者提供的服務(wù)上。SOAP 是Web service 的通信協(xié)議, 是一個(gè)用來(lái)在分布式的環(huán)境中交換信息的簡(jiǎn)單協(xié)議。他定義傳遞XMLencoded 數(shù)據(jù)時(shí)的統(tǒng)一方式, 他還定義使用HTTP 作為底層通信協(xié)議時(shí)執(zhí)行遠(yuǎn)程調(diào)用(RPC)的方法。他是一個(gè)基于XML的協(xié)議,可以用來(lái)在不同的計(jì)算機(jī)體系結(jié)構(gòu),不同語(yǔ)言和不同的操作系統(tǒng)之間進(jìn)行通信, 可以運(yùn)行在任何其他傳輸協(xié)議上。
3 模型設(shè)計(jì)
建立系統(tǒng)模型如圖2所示,用3個(gè)服務(wù)器分別作系統(tǒng)數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)中心服務(wù)器和UDDI服務(wù)器,數(shù)據(jù)抽取其核心思想將多個(gè)不同的本地業(yè)務(wù)系統(tǒng)數(shù)據(jù)“抽取”到中心數(shù)據(jù)庫(kù),使中心數(shù)據(jù)庫(kù)和本地業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)保持同步。由于各本地業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)使用不同的數(shù)據(jù)庫(kù),目前主要使用“Oracle,SQL Server,F(xiàn)oxPro”,為了讓“抽取”這一操作“透明化”,“抽取”在實(shí)施具體動(dòng)作時(shí)利用“Web Service”技術(shù),當(dāng)中心數(shù)據(jù)庫(kù)的用戶需要抽取數(shù)據(jù)時(shí),系統(tǒng)會(huì)啟動(dòng)抽取線程,抽取線程將捕捉需要抽取的數(shù)據(jù),如果發(fā)現(xiàn)有數(shù)據(jù)需要抽取,抽取線程將會(huì)根據(jù)自己的服務(wù)名向UDDI請(qǐng)求部署到相應(yīng)系統(tǒng)Web Service的URL,隨后調(diào)用系統(tǒng)的Web service。在這里Web service會(huì)提供數(shù)據(jù)庫(kù)表操作的方法,進(jìn)而完成對(duì)需要抽取數(shù)據(jù)庫(kù)的操作,部署在系統(tǒng)上的Web Service把操作的結(jié)果以SOAP方式發(fā)送給抽取線程,完成遠(yuǎn)程對(duì)象的調(diào)用,最后抽取線程將結(jié)果返回到中心數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)抽取。
4 數(shù)據(jù)抽取設(shè)計(jì)
4.1 部署Web service應(yīng)用程序
由于數(shù)據(jù)庫(kù)網(wǎng)格要集成多種大量的數(shù)據(jù)庫(kù),因此Web Service的優(yōu)勢(shì)很好體現(xiàn)出來(lái),系統(tǒng)使用Web Service 技術(shù)實(shí)現(xiàn)各系統(tǒng)之間的消息和數(shù)據(jù)傳遞以及各系統(tǒng)到中心數(shù)據(jù)庫(kù)的數(shù)據(jù)傳遞。這樣保證了各系統(tǒng)之間可以很容易的分離和整合, 也可以工作在不同的操作系統(tǒng)平臺(tái)上(Windows 或Linux 等)。
部署到系統(tǒng)數(shù)據(jù)庫(kù)的Web service大致分為以下3類方法,其中方法2,3用DataSet作為數(shù)據(jù)類型是因?yàn)镈ataSet類型是以XML的形式來(lái)進(jìn)行數(shù)據(jù)交流的,他可以跨越防火墻通信,這樣就可以使處于不同位置不同系統(tǒng)中的數(shù)據(jù)在網(wǎng)格中無(wú)障礙傳輸,保證了抽取的高效與準(zhǔn)確。
[HTH]方法1:[HTSS]
bool RegisterUDDI(string UDDIIP,string URL,string bindingKey,string userName,string password)
{
//作用:注冊(cè)Web Service
}
[HTH]方法2:[HTSS]
DataSet GetAll(string tableName)
{
//作用: 根據(jù)表名將此表的數(shù)據(jù)全部抽取出來(lái),也稱之為整表抽取。
}
[HTH]方法3:[HTSS]
DataSet GetUpdateOne(string tableName)
{
//作用:根據(jù)表名對(duì)此表所作的操作記錄下來(lái),并將所更新的數(shù)據(jù)抽取到中心數(shù)據(jù)庫(kù),也稱之為更新抽取。
}
兩種抽取方式比較來(lái)看,整表抽取是最為直接簡(jiǎn)單的數(shù)據(jù)同步的方式,但是他的工作量很大,他將所有的有關(guān)需要抽取數(shù)據(jù)的表全部進(jìn)行抽取,當(dāng)數(shù)據(jù)庫(kù)很多時(shí),這種抽取方式會(huì)影響效率,并且可能會(huì)出錯(cuò),針對(duì)這些問(wèn)題,這里采用更新抽取方式,對(duì)于支持觸發(fā)器的數(shù)據(jù)庫(kù)(Oracle,SQL Server)可以利用在本地業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)對(duì)要抽取的目標(biāo)增加3個(gè)觸發(fā)器分加在表的“Insert”,“Update”,“Delete”動(dòng)作上,當(dāng)目標(biāo)表有數(shù)據(jù)操作時(shí),記錄當(dāng)前操作的動(dòng)作類型和標(biāo)識(shí)此記錄的條件并保存下來(lái)。當(dāng)抽取線程以更新的方式抽取數(shù)據(jù)時(shí),Web Service就會(huì)通過(guò)以保存下來(lái)的信息返回相應(yīng)的數(shù)據(jù),而不是返回這個(gè)全部的數(shù)據(jù)。所以這種方式所占用的資源少并且不會(huì)影響效率。
4.2 抽取線程設(shè)計(jì)
抽取線程是數(shù)據(jù)抽取的核心程序,部署在I2S中,由一個(gè)C#.NET的新開一個(gè)線程來(lái)運(yùn)行,針對(duì)每一個(gè)系統(tǒng)數(shù)據(jù)庫(kù)由與之相對(duì)應(yīng)的一個(gè)抽取線程來(lái)抽取數(shù)據(jù),他與部署在每一個(gè)系統(tǒng)上的Web Service相應(yīng)。
在啟動(dòng)抽取線程之后,線程調(diào)用RunThread方法在各個(gè)系統(tǒng)之間隔設(shè)定的時(shí)間段輪詢查找,并調(diào)用FindOperations方法查找將要抓取的業(yè)務(wù)部門,如果有系統(tǒng)需要抽取數(shù)據(jù),線程將調(diào)用該系統(tǒng)的Web Service數(shù)據(jù)抽取到中心數(shù)據(jù)庫(kù)。
5 實(shí)驗(yàn)分析與總結(jié)
在所集成30個(gè)系統(tǒng)中做實(shí)驗(yàn),所抽取數(shù)據(jù)與所用時(shí)間如下表所示,數(shù)據(jù)抽取沒有任何錯(cuò)誤。在實(shí)際應(yīng)中,大數(shù)據(jù)量抽取應(yīng)用比較廣泛,比如一個(gè)月整個(gè)單位人員工資發(fā)放的數(shù)據(jù)等。所以大數(shù)據(jù)量抽取也是衡量數(shù)據(jù)抽取的條件之一。從表1可以看出,隨著抽取數(shù)據(jù)條數(shù)增加,抽取時(shí)間并不是在按比例增加,而是相對(duì)來(lái)說(shuō)時(shí)間更長(zhǎng)一些,因?yàn)檫€存在網(wǎng)絡(luò)流量等方面的因素。通過(guò)設(shè)計(jì)和試驗(yàn)發(fā)現(xiàn),利用Web service抽取數(shù)據(jù)是分布式數(shù)據(jù)庫(kù)集成設(shè)計(jì)的又一大突破,他很好地體現(xiàn)了客戶端和服務(wù)器端操作的透明性,由企業(yè)發(fā)布的完成特別商務(wù)需求的應(yīng)用服務(wù),其他公司或應(yīng)用軟件能夠通過(guò)Internet訪問(wèn)并使用這項(xiàng)服務(wù)。用戶只要在客戶端輸入一定的查詢條件而不需要知道對(duì)應(yīng)的數(shù)據(jù)庫(kù)是什么結(jié)構(gòu),在什么位置,也不必知道服務(wù)器是怎么實(shí)現(xiàn)。此外,客戶和服務(wù)器的耦合程度很低,之間是透明的,服務(wù)器暴露出遠(yuǎn)程對(duì)象的接口,客戶端就好像在使用本地對(duì)象的接口一樣,這樣就實(shí)現(xiàn)了不同平臺(tái)之間的互操作性。而且,Web Service 技術(shù)構(gòu)建的應(yīng)用程序可以跨越防火墻通信。Web 服務(wù)使用被廣泛支持的標(biāo)準(zhǔn)的XML描述其數(shù)據(jù)格式,所有支持這種標(biāo)準(zhǔn)的系統(tǒng)都可以理解Web 服務(wù)的消息。
6 結(jié) 語(yǔ)
Web Service 技術(shù)一個(gè)重要的應(yīng)用方向在數(shù)據(jù)抽取技術(shù)上,基于Web Service 技術(shù)的整個(gè)數(shù)據(jù)抽取準(zhǔn)確、高效,系統(tǒng)具有可擴(kuò)展性與可維護(hù)性。本文設(shè)計(jì)通過(guò)Web Service抽取數(shù)據(jù),并做了實(shí)驗(yàn)。
參 考 文 獻(xiàn)
[1]柴曉路,梁宇奇.Web Service技術(shù)、架構(gòu)和應(yīng)用[M].北京:電子工業(yè)出版社,2003.
[2]Mickey Williams.Microsoft Visual C #.NET Core Reference [M].北京:清華大學(xué)出版社,2003.
[3]段云峰,吳唯寧.數(shù)據(jù)倉(cāng)庫(kù)及其在電信領(lǐng)域中的應(yīng)用[M].北京:電子工業(yè)出版社,2003.
[4]何強(qiáng),林宏基.基于web service 的分布式應(yīng)用系統(tǒng)的研究及應(yīng)用[J].福建電腦,2006(1):136137.
[5]張成洪,古曉洪,白延紅.Web數(shù)據(jù)抽取技術(shù)研究進(jìn)展[J].計(jì)算機(jī)科學(xué),2004,31(2):129131,151.
[6]Arocena G,Mendelzon A.WebOQL:Restruvturing Documents,Databases and Webs\\[C\\].In:Proc.of the Intl.Conf.on Data Engineering,IEEE Computer Society,1998.
[7]劉瑛,白振興,褚文奎.基于數(shù)據(jù)挖掘的OLAP分析技術(shù)及應(yīng)用\\[J\\].現(xiàn)代電子技術(shù),2006,29(1):7274.[HJ0]
作者簡(jiǎn)介 孫偉艦 男,1982年出生,內(nèi)蒙古鄂爾多斯人,西安建筑科技大學(xué)碩士研究生。主要研究方向?yàn)榫W(wǎng)絡(luò)及其應(yīng)用技術(shù)。
王于丁 男,1984年出生,河北石家莊人,解放軍西安通信學(xué)院碩士研究生。主要研究方向?yàn)閿?shù)據(jù)庫(kù)與網(wǎng)格設(shè)計(jì)開發(fā)。
賈 麗 女,1981年出生,河北邢臺(tái)人,西安建筑科技大學(xué)碩士研究生。主要研究方向?yàn)榉植际较到y(tǒng)與計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用。