常 璐,夏祖奇
(1.中共江蘇省委黨校,江蘇 南京 210013;2.南京思酷信息科技有限公司,江蘇 南京 210012)
網(wǎng)絡(luò)時(shí)代的信息資源正呈指數(shù)級(jí)增長(zhǎng),對(duì)傳統(tǒng)的信息機(jī)構(gòu)——圖書(shū)館來(lái)說(shuō),無(wú)論是傳統(tǒng)的書(shū)目數(shù)據(jù)資源,還是專業(yè)數(shù)據(jù)庫(kù),都以迅猛的速度增加著,這種改變給圖書(shū)館帶來(lái)了極大的挑戰(zhàn)。在數(shù)字資源激增的同時(shí),圖書(shū)館工作人員沒(méi)有增加,如果不利用網(wǎng)絡(luò)平臺(tái)進(jìn)行資源的共建共享活動(dòng),則要么會(huì)淹沒(méi)在信息海洋中,無(wú)所適從;要么需要增加資源的采集經(jīng)費(fèi)支出,重復(fù)建設(shè)。
一般來(lái)說(shuō),信息資源共建共享可以有3種方式:第一種方式就是集中式,也可以看作是星形拓?fù)?大家都將數(shù)據(jù)建到一個(gè)數(shù)據(jù)庫(kù)中。好處就是減少各處保存,節(jié)約硬件設(shè)備;壞處是一處出問(wèn)題,則全部出問(wèn)題,依賴性強(qiáng),而且一種方式減少了異樣性和靈活性,比如OCLC等[1]。第二種方式則是分散式,也可以看作網(wǎng)絡(luò)型拓?fù)浣Y(jié)構(gòu),各圖書(shū)館有自己的數(shù)據(jù)庫(kù),需要?jiǎng)e人的數(shù)字資源才能共享。這種方式的好處是較為靈活,可以量身定做。第三種方式是分散集中相結(jié)合,也就是各信息機(jī)構(gòu)分散建設(shè),集中保存,統(tǒng)一共享[2]。這種方式要求各信息機(jī)構(gòu)聯(lián)系緊密,有相應(yīng)的組織機(jī)構(gòu),比如Calis、Jalis等行業(yè)內(nèi)系統(tǒng)[3]。
可以看到,在當(dāng)前環(huán)境下,采用第一種方式的較少,而且這種依賴性太大。而第三種方式雖然一直在提,但更多側(cè)重于圖書(shū)館資源采集的管理上,比如集團(tuán)采購(gòu)、聯(lián)合目錄等,并沒(méi)有真正達(dá)到共建共享的目的。因此,在我國(guó)國(guó)情下,還是以第二種方式為主。本文將討論在單機(jī)環(huán)境和網(wǎng)絡(luò)環(huán)境下實(shí)現(xiàn)數(shù)字資源共建共享的集中模型。
圖書(shū)館數(shù)字資源共建共享的發(fā)展離不開(kāi)計(jì)算機(jī)技術(shù)與通信技術(shù)的發(fā)展。數(shù)字圖書(shū)館資源按照其來(lái)源可以分為三大類:第一類是圖書(shū)館館藏書(shū)目數(shù)據(jù)資源;第二類是各類通過(guò)購(gòu)買(mǎi)獲得的專業(yè)數(shù)據(jù)庫(kù)資源;第三類是自建特色數(shù)據(jù)庫(kù)資源。筆者認(rèn)為,與計(jì)算機(jī)資源的共享相同,圖書(shū)館數(shù)字資源的共建共享可以分為以下幾個(gè)階段。
在單機(jī)版年代,基于文件的共建共享是比較通用的一種共享方式,圖書(shū)館數(shù)字資源最初的共享也是基于這種方式實(shí)現(xiàn)的。一家編目中心完成資源的著錄標(biāo)引工作以后,可以將標(biāo)引數(shù)據(jù)存為文檔。如其他單位需要該單位已經(jīng)完成的標(biāo)引數(shù)據(jù),則必須將該文件(或文件的某一部分)利用物理存儲(chǔ)介質(zhì)進(jìn)行復(fù)制,再導(dǎo)入自己的編目文件系統(tǒng)或數(shù)據(jù)庫(kù)中即可。為了使共享資源具有通用性,美國(guó)國(guó)會(huì)圖書(shū)館在1970年提出了機(jī)讀編目格式標(biāo)準(zhǔn)——MARC[4],在此基礎(chǔ)上,ANSI組織提出了MARC21格式[5]。這種格式的確定,不僅提供了標(biāo)引數(shù)據(jù)的標(biāo)準(zhǔn)化,同時(shí)也為不同國(guó)家和地區(qū)圖書(shū)館之間的共享書(shū)目數(shù)據(jù)提供了標(biāo)準(zhǔn)格式。因此,在20世紀(jì),大部分?jǐn)?shù)字資源的共享都以MARC文件作為交換單元,在多個(gè)圖書(shū)館之間利用第三方軟件進(jìn)行數(shù)據(jù)的導(dǎo)入導(dǎo)出,從而實(shí)現(xiàn)數(shù)據(jù)的共享,其共享方式如圖1所示。
圖1 文件型共享模型注:C代表計(jì)算機(jī)終端(computer)。
這種以MARC文件作為交換介質(zhì),在不同的數(shù)據(jù)庫(kù)之間進(jìn)行共享的方式存在了很長(zhǎng)時(shí)間,并且在現(xiàn)在作為各個(gè)圖書(shū)館與書(shū)目提供商之間數(shù)據(jù)交換的主要方式。其優(yōu)點(diǎn)在于MARC數(shù)據(jù)結(jié)構(gòu)已經(jīng)成為標(biāo)準(zhǔn),因此共建共享十分方便,只要能夠解析MARC數(shù)據(jù)即可。而且,目前MARC文件在經(jīng)過(guò)50多年的發(fā)展后,已經(jīng)成為圖書(shū)館界的標(biāo)準(zhǔn),只要能夠?qū)ARC文件進(jìn)行解析,就可以實(shí)現(xiàn)數(shù)字資源的共享。而缺點(diǎn)是MARC數(shù)據(jù)可讀性較差,因此很難用于查詢、展現(xiàn)。
隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的發(fā)展,C/S模式架構(gòu)開(kāi)始出現(xiàn),人們開(kāi)始使用網(wǎng)絡(luò)資源進(jìn)行資源的共享。正是基于這種背景,圖書(shū)館界開(kāi)始研究自己的應(yīng)用協(xié)議——Z39.50,這是一種以TCP協(xié)議作為資源共建共享的通道協(xié)議,各個(gè)編目中心之間利用Z39.50進(jìn)行數(shù)字資源的共建共享。目前在常用的圖書(shū)館集成系統(tǒng)中都內(nèi)嵌了Z39.50模塊,用來(lái)進(jìn)行MARC數(shù)據(jù)的交換共享,其共享方式如圖2所示。
圖2 C/S網(wǎng)絡(luò)型共享模型
這種共享方式的優(yōu)點(diǎn)是能夠在網(wǎng)絡(luò)上進(jìn)行資源共建共享,缺點(diǎn)是Z39.50協(xié)議實(shí)現(xiàn)復(fù)雜,而且需要開(kāi)一個(gè)TCP端口,安全性較差。
網(wǎng)絡(luò)的發(fā)展使得數(shù)字資源共建共享成為可能,但同時(shí)也帶來(lái)了很多問(wèn)題,在使用Z39.50協(xié)議的過(guò)程中,要另開(kāi)端口,這就給計(jì)算機(jī)帶來(lái)了安全問(wèn)題;而WWW協(xié)議的盛行,使得HTTP協(xié)議的應(yīng)用越來(lái)越廣泛,甚至一些私有的應(yīng)用協(xié)議也可以采用HTTP來(lái)實(shí)現(xiàn)。因此,筆者認(rèn)為,可采用Web Service技術(shù),使用通用的基于HTTP的SOAP協(xié)議(一種運(yùn)行于HTTP之上的協(xié)議)來(lái)實(shí)現(xiàn)圖書(shū)館資源的共建與共享。
Web Service是一種以SOAP協(xié)議作為通信協(xié)議,以XML文件作為傳輸介質(zhì)的高層協(xié)議,其出現(xiàn)本身就是希望能夠解決異構(gòu)數(shù)據(jù)的交互問(wèn)題。Web服務(wù)被看作是第三代分布式計(jì)算模式,基于Web服務(wù)技術(shù),人們能在任何時(shí)間、任何地點(diǎn)獲得所需要的信息資源。Web服務(wù)具有互操作性、通用性、易用性,開(kāi)發(fā)人員可以利用常見(jiàn)的技術(shù)工具構(gòu)造出各類綜合信息管理平臺(tái)等,是目前實(shí)現(xiàn)信息共享行之有效的技術(shù)手段[6]。Web Service是Web 2.0的技術(shù)之一,Microsoft、Google、IBM等主流軟件公司都在推廣這種技術(shù),其共享方式如圖3所示。
可以看出,該共享方式大大縮短了數(shù)字資源之間進(jìn)行轉(zhuǎn)換的流程,依托Web服務(wù),直接通過(guò)網(wǎng)絡(luò)發(fā)布,可獲得性大大增強(qiáng),并且解決了異構(gòu)數(shù)據(jù)庫(kù)兼容共享的問(wèn)題。
無(wú)論是傳統(tǒng)的基于文件格式的共享系統(tǒng),還是基于Z39.50協(xié)議的網(wǎng)絡(luò)式共享系統(tǒng),其共享的傳輸對(duì)象都是MARC文件或MARC數(shù)據(jù)。而MARC格式的定義是在1970年,距今已50多年,其字段定義復(fù)雜,可讀性差,掌握難度大。因此,本系統(tǒng)不采用MARC的實(shí)例化對(duì)象作為傳輸對(duì)象。
另一方面,DC元數(shù)據(jù)作為描述資源的元數(shù)據(jù),自20世紀(jì)末以來(lái),經(jīng)過(guò)20多年的發(fā)展,已經(jīng)較為成熟。另外,其17個(gè)字段通過(guò)實(shí)踐證明可以作為描述對(duì)象資源很好的例子。因此,本系統(tǒng)將DC元數(shù)據(jù)作為傳輸對(duì)象在共建共享系統(tǒng)中使用。
DC元數(shù)據(jù)在數(shù)字圖書(shū)館中應(yīng)用較為成熟與穩(wěn)定,作為通信格式較為穩(wěn)妥。因此,可以將DC元數(shù)據(jù)的17個(gè)字段作為傳輸對(duì)象,將設(shè)計(jì)的對(duì)象序列化,可以成為傳輸對(duì)象。
以下為Java版本元數(shù)據(jù)對(duì)象偽碼:
public DCMetaData implements Serieable{
public String author;
pubic String titile;
public String abstract;
……
}
在上面的偽碼中,本文只列出了題目、作者等字段,其他15個(gè)字段也可以此類推??梢钥闯?以DC元數(shù)據(jù)定義的對(duì)象可讀性強(qiáng),而且17個(gè)字段基本可以包括數(shù)字資源的特征,采用以DC元數(shù)據(jù)實(shí)例化作為傳輸對(duì)象,比MARC文件或MARC數(shù)據(jù)具有更大的優(yōu)勢(shì)。
在定義傳輸對(duì)象后,本文將討論共建共享的一些基本方法。對(duì)于一個(gè)共建共享系統(tǒng)來(lái)說(shuō),其核心接口無(wú)非是對(duì)資源的查詢、增加、刪除和修改。下面給出了一個(gè)Java版本的核心接口偽碼:
public interface WSDigitalLibInf
{
public DCMetaData [] queryResources(DCMetaData condition);
pubic void insertResource(DCMetaData [] arrayNewResource);
public void deleteResource(DCMetaData condition);
public void modifyResource(DCMetaData src, DCMetaData des);
}
對(duì)于queryResources接口來(lái)說(shuō),只要根據(jù)用戶屬于的元數(shù)據(jù)的condition來(lái)進(jìn)行查詢,比如,如果condition的author字段為A,則可以將所有作者為A的元數(shù)據(jù)返回給查詢客戶端;當(dāng)然,對(duì)于高級(jí)查詢,也可以根據(jù)構(gòu)造不同的condition對(duì)象實(shí)現(xiàn),這里不再一一敘述。
對(duì)于insertResource接口來(lái)說(shuō),其作用就是將用戶屬于的元數(shù)據(jù)數(shù)組進(jìn)行轉(zhuǎn)換插入自己的數(shù)據(jù)庫(kù)。對(duì)于deleteResource接口來(lái)說(shuō),其結(jié)果就是將滿足condition條件的元數(shù)據(jù)刪除掉。對(duì)于modify Resource來(lái)說(shuō),可以先調(diào)用deleteResource(src),再調(diào)用insertResource(des)來(lái)實(shí)現(xiàn)。
作為數(shù)字圖書(shū)館軟件提供商,只要實(shí)現(xiàn)以上接口,再以Web Service的方式進(jìn)行發(fā)布,即可以在不同的系統(tǒng)間進(jìn)行數(shù)字資源的共建共享。
這部分可以說(shuō)是數(shù)字圖書(shū)館共建共享系統(tǒng)的核心,但目前各數(shù)字圖書(shū)館采用不同的數(shù)字存儲(chǔ)方式。在圖書(shū)館集成系統(tǒng)方面有匯文、ILAS等軟件,其對(duì)應(yīng)的數(shù)據(jù)格式是MARC;在自建特色數(shù)據(jù)庫(kù)方面有TRS、TPI等軟件,其內(nèi)核有ACCESS、ORACLE、SQLSERVER等,往往有自己定義的數(shù)據(jù)格式,有基于純文本的,有基于圖片的;而在購(gòu)買(mǎi)的商業(yè)數(shù)據(jù)庫(kù)方面就更多了,其內(nèi)核涉及商業(yè)機(jī)密,往往不提供接口。這種差異性就必須要求采用不同的方式來(lái)訪問(wèn)數(shù)字資源存儲(chǔ)文件或數(shù)據(jù)庫(kù)服務(wù)器。本文無(wú)法一一展開(kāi)敘述取數(shù)據(jù)的過(guò)程,可以說(shuō)明的是,實(shí)現(xiàn)取數(shù)據(jù)的業(yè)務(wù)邏輯無(wú)非是把存貯的數(shù)字資源使用DC元數(shù)據(jù)的方式進(jìn)行表示,實(shí)現(xiàn)一些簡(jiǎn)單的增加、刪除、修改以及查詢操作。這些步驟應(yīng)該與Z39.50協(xié)議取數(shù)據(jù)或插入數(shù)據(jù)的步驟是一致的。
因此,不管數(shù)字圖書(shū)館采用的是ORACLE,或是MARC文件,還是SQLSERVER,只要將數(shù)字資源轉(zhuǎn)化為DC元數(shù)據(jù)描述的對(duì)象,并且都實(shí)現(xiàn)了2.2中定義接口的核心方法,即可以通過(guò)Web Service發(fā)布,實(shí)現(xiàn)共享。
不同的Web服務(wù)器對(duì)于Web Service采用的方法是不同的。比如對(duì)于基于.NET架構(gòu)的IIS來(lái)說(shuō),其不需要進(jìn)行任何配置,只要用戶在開(kāi)發(fā)中指定其是Web Service即可。而對(duì)于基于Java架構(gòu)的Web Server來(lái)說(shuō),支持Web Service需要一些第三方庫(kù)。以Tomcat為例,通常將Axis作為T(mén)omcat支持Web Service的第三方庫(kù),只要修改一些配置文件即可。
檢查一個(gè)Web Service是否發(fā)布成功,可以直接使用瀏覽器輸入其WSDL,如果Web服務(wù)器可以返回該接口的WSDL,則表明發(fā)布成功。
一般來(lái)說(shuō),只要客戶端能夠獲取某個(gè)Web Service的WSDL文件,一些高級(jí)編程工具,比如VC.NET、JBuilder + Axis,即可以自動(dòng)生成調(diào)用Web Service的客戶端代碼。因?yàn)榻涌诙x的標(biāo)準(zhǔn)化,其調(diào)用相當(dāng)簡(jiǎn)單且標(biāo)準(zhǔn)化。
對(duì)于調(diào)用的流程來(lái)說(shuō),客戶端可以先利用查詢的Web Service確認(rèn)某編目中心是否有自己需要的數(shù)字資源,若返回的元數(shù)據(jù)數(shù)組個(gè)數(shù)大于0,則將數(shù)組轉(zhuǎn)換為自己數(shù)據(jù)庫(kù)的格式,再插入數(shù)據(jù)庫(kù)即可。
3種數(shù)字資源共享模型之間的比較如表1所示。
表1 幾種共享模式的比較
本文提出了一種以XML作為傳輸單元,以DC元數(shù)據(jù)的數(shù)據(jù)抽象作為接口之間的介質(zhì),以Web Service作為系統(tǒng)架構(gòu)的一種數(shù)字圖書(shū)館資源共建共享系統(tǒng)。這種系統(tǒng)的好處就是只要實(shí)現(xiàn)了本文提出的WSDigitalLibInf的4種方法,并將這4種方法以Web Service的方式進(jìn)行Web發(fā)布,則可以在Internet上以SOPA/HTTP協(xié)議進(jìn)行訪問(wèn),只要有一個(gè)Web Service的client端即可實(shí)現(xiàn)資源的共建共享。該基于Web Service的共建共享系統(tǒng)實(shí)現(xiàn)簡(jiǎn)單,是Web 2.0的典型應(yīng)用。但是,如何對(duì)這些接口進(jìn)行權(quán)限限制也是亟待解決的問(wèn)題。今后的研究方向是采用SOA架構(gòu),結(jié)合區(qū)塊鏈技術(shù)建立一個(gè)分布式的去中心化數(shù)據(jù)庫(kù)[7],并采取訂閱-發(fā)布式將數(shù)字資源以異步方式進(jìn)行共享。