嚴(yán)健 張娜
一、框架結(jié)構(gòu)
網(wǎng)格系統(tǒng)有哪些組成部分,組成部分之間的關(guān)系以及如何協(xié)同工作是網(wǎng)格結(jié)構(gòu)研究需要解決的關(guān)鍵問(wèn)題。我們提出了企業(yè)信息網(wǎng)格Loglo系統(tǒng)結(jié)構(gòu),Loglo系統(tǒng)是基于Web服務(wù)范型基礎(chǔ),由全局注冊(cè)中心、提供者、消費(fèi)者構(gòu)成。全局注冊(cè)中心節(jié)點(diǎn)實(shí)現(xiàn)了信息全局注冊(cè)、信息查詢(xún)和信息的動(dòng)態(tài)發(fā)現(xiàn),消費(fèi)者在全局注冊(cè)中心發(fā)現(xiàn)提供者發(fā)布的信息,最后通過(guò)訪(fǎng)問(wèn)提供者節(jié)點(diǎn)的信息服務(wù)獲得信息。
二、提供者節(jié)點(diǎn)
提供者節(jié)點(diǎn)結(jié)構(gòu)如圖2所示。其中共享信息模塊提供共享信息服務(wù),本地注冊(cè)模塊完成信息的本地注冊(cè),全局發(fā)布模塊實(shí)現(xiàn)信息的發(fā)布和注銷(xiāo)。在Loglo系統(tǒng)中,根據(jù)Web服務(wù)的全局注冊(cè)中心,我們提出了本地注冊(cè)的概念,實(shí)現(xiàn)信息的一致性維護(hù)和管理的靈活性,其中本地注冊(cè)功能模塊是我們研究的重點(diǎn)。
本地注冊(cè)模塊采用存儲(chǔ)系統(tǒng)和文件實(shí)例方式來(lái)抽象底層的資源。把這些底層可讀可寫(xiě)的物理單元抽象成一個(gè)更高層次的本地注冊(cè)表,目的為給上層提供一致的、透明的訪(fǎng)問(wèn),即上層操作的只是一些注冊(cè)表,不需要知道物理資源的存儲(chǔ)方式和存儲(chǔ)位置。其中本地注冊(cè)中心由資源模塊、JDBC接口模塊、基于XML元信息管理模塊、自動(dòng)訪(fǎng)問(wèn)模塊、信息發(fā)布員管理模塊構(gòu)成。
三、JDBC接口模塊
JDBC是一種能通過(guò)Java語(yǔ)言訪(fǎng)問(wèn)結(jié)構(gòu)化數(shù)據(jù)的應(yīng)用程序接口(API),為SQL兼容的數(shù)據(jù)庫(kù)提供了一個(gè)標(biāo)準(zhǔn)的接口集合。JDBC/ODBC允許用戶(hù)使用統(tǒng)一的接口通過(guò)ODBC去連接數(shù)據(jù)庫(kù),而不需要專(zhuān)門(mén)研究ODBC的技術(shù)和規(guī)范。對(duì)于Windows操作系統(tǒng)下,注冊(cè)者本地原有的數(shù)據(jù)庫(kù)通過(guò)JDBC/ODBC橋進(jìn)行動(dòng)態(tài)連接。其它類(lèi)型操作系統(tǒng)通過(guò)JDBC驅(qū)動(dòng)進(jìn)行連接。
四、自動(dòng)訪(fǎng)問(wèn)模塊
自動(dòng)訪(fǎng)問(wèn)模塊其核心為本地注冊(cè)表reg.xml和database_reg.xml以及對(duì)它們的一些操作。信息發(fā)布員通過(guò)本地注冊(cè)API對(duì)本地信息資源進(jìn)行注冊(cè),應(yīng)用程序根據(jù)注冊(cè)者所注冊(cè)資源的基本信息,如對(duì)于數(shù)據(jù)庫(kù)資源,將注冊(cè)資源的JDBC驅(qū)動(dòng)、數(shù)據(jù)源,基本表名等控制信息自動(dòng)提取寫(xiě)入本地注冊(cè)表reg.xml、database_reg.xml,信息服務(wù)開(kāi)發(fā)者根據(jù)企業(yè)中經(jīng)常用的幾種類(lèi)型數(shù)據(jù)庫(kù)如,Excel、Access、MYSQL、MSSQL、ORACLE開(kāi)發(fā)統(tǒng)一的信息查詢(xún)服務(wù),并將這些服務(wù)封裝一次性部署,當(dāng)有新的數(shù)據(jù)庫(kù)資源注冊(cè)時(shí),避免了手工部署的麻煩。當(dāng)信息訪(fǎng)問(wèn)請(qǐng)求到達(dá)時(shí),應(yīng)用程序通過(guò)讀本地注冊(cè)表reg.xml、database_reg.xml完成了應(yīng)用程序和數(shù)據(jù)庫(kù)的動(dòng)態(tài)連接。
對(duì)于文本資源,將注冊(cè)資源的物理位置等信息寫(xiě)入本地注冊(cè)表,根據(jù)對(duì)文本的常用查詢(xún)方法開(kāi)發(fā)通用的服務(wù),即使有新的文本信息資源注冊(cè),也無(wú)須開(kāi)發(fā)新的服務(wù)。當(dāng)信息訪(fǎng)問(wèn)請(qǐng)求到達(dá)時(shí),應(yīng)用程序通過(guò)讀本地注冊(cè)表完成了應(yīng)用程序的對(duì)文本信息資源的定位。
五、基于XML元信息管理模塊
基于XML元信息管理模塊,其核心為本地注冊(cè)表table_info.xml,以及對(duì)它的一些操作。完成基于XML的應(yīng)用元數(shù)據(jù)表示和物理資源之間的映射,即把物理資源用基于XML應(yīng)用元數(shù)據(jù)表示,描述所有共享數(shù)據(jù)(物理資源)的屬性,其中數(shù)據(jù)庫(kù)包括字段名、類(lèi)型、主鍵等。一般的元數(shù)據(jù)包括,數(shù)據(jù)庫(kù)名、構(gòu)架、表名、列名、數(shù)據(jù)類(lèi)型、長(zhǎng)度、小數(shù)位數(shù)、精度,是否允許空值等(參照Microsoft SQL Server 2000元數(shù)據(jù)表結(jié)構(gòu)),按照此體系結(jié)構(gòu)需要,應(yīng)用元數(shù)據(jù)表中的字段可以定義為數(shù)據(jù)表定義字段、擴(kuò)展字段。
根據(jù)應(yīng)用元數(shù)據(jù)表構(gòu)建本地注冊(cè)表table_info.xml,將表頭作為元素,表頭對(duì)應(yīng)的值作為元素值。在應(yīng)用元數(shù)據(jù)表中,相同序號(hào)reource_id為同一個(gè)數(shù)據(jù)庫(kù)下的表(對(duì)應(yīng)一個(gè)信息資源目錄subid)構(gòu)造基于XML元信息管理表結(jié)構(gòu)。
其中對(duì)于文本文件的元數(shù)據(jù)可以定義為,文件名、文件標(biāo)題、文件段落數(shù)。
通過(guò)上面的分析我們得到由物理資源到本地注冊(cè)表table_info.xml的抽象過(guò)程如圖3所示。
綜上所述,基于XML元信息管理模塊和自動(dòng)訪(fǎng)問(wèn)模塊,即可協(xié)助完成信息查詢(xún)功能。對(duì)數(shù)據(jù)庫(kù)信息資源的查詢(xún)操作除了面向數(shù)據(jù)庫(kù)的表不同(具體的說(shuō),就是數(shù)據(jù)庫(kù)驅(qū)動(dòng)和數(shù)據(jù)源不同),而導(dǎo)致其表名、字段名、類(lèi)型等信息不同外,其他內(nèi)容基本都是相同的的,在具體實(shí)現(xiàn)上,數(shù)據(jù)庫(kù)連接時(shí)Class.forName()和DriverManager.getConnection()參數(shù)值不同而已,因此我們對(duì)數(shù)據(jù)庫(kù)信息資源操作時(shí)通過(guò)本地注冊(cè)表得到JBDC接口信息(Class.forName()和DriverManager.getConnection()參數(shù)值)進(jìn)行統(tǒng)一操作在理論上和實(shí)踐上都是可行的。同時(shí),又是用戶(hù)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)時(shí)動(dòng)態(tài)完成數(shù)據(jù)庫(kù)驅(qū)動(dòng)和數(shù)據(jù)源連接較好的一個(gè)方案。對(duì)于文本信息資源通過(guò)讀本地注冊(cè)表就可以定位到某一個(gè)具體的文件甚至可以定位到文件的某一段落。
提供者結(jié)點(diǎn)通過(guò)JDBC接口模塊、基于XML元信息管理模塊和自動(dòng)訪(fǎng)問(wèn)模塊屏蔽了資源層中分散、動(dòng)態(tài)異構(gòu)的各種資源,為企業(yè)信息資源的共享、集成和互操作提供透明的、一致的使用接口,以支持企業(yè)用戶(hù)訪(fǎng)問(wèn)。