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