王超
(遼寧工業(yè)大學(xué)圖書館,錦州 121000)
2017年11月,開放獲取知識庫聯(lián)盟(COAR)經(jīng)過長期調(diào)研發(fā)布報(bào)告[1],描述了新一代機(jī)構(gòu)知識庫(IR)應(yīng)具有的11項(xiàng)新功能,并稱新一代機(jī)構(gòu)知識庫的資源轉(zhuǎn)移(resource transfer)、批量發(fā)現(xiàn)(batch discovery)、收集和公開活動(collecting and exposing activities)、長期保存(preserving resources)5項(xiàng)新功能主要依托于資源同步框架規(guī)范ResourceSync實(shí)現(xiàn)。
ResourceSync是由美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)指導(dǎo)研發(fā),并于2014年頒布。2017年更新的資源同步框架規(guī)范[2],可用于實(shí)現(xiàn)互聯(lián)網(wǎng)上不同系統(tǒng)之間的資源同步。郭少友等[3]和曹迪[4]對于ResourceSync在數(shù)字圖書館中的應(yīng)用場景進(jìn)行了探索,其中部分應(yīng)用場景同樣適應(yīng)于機(jī)構(gòu)知識庫的資源同步,但ResourceSync在數(shù)字圖書館中的應(yīng)用側(cè)重于資源的收集和保存,而機(jī)構(gòu)知識庫更側(cè)重于資源的開放和共享。筆者通過相關(guān)調(diào)研并結(jié)合現(xiàn)有研究,分析ResourceSync資源同步規(guī)范的基本原理,并探討其在機(jī)構(gòu)知識庫中應(yīng)用場景及應(yīng)注意的問題及對策,使機(jī)構(gòu)知識庫功能更強(qiáng)大,最大程度地實(shí)現(xiàn)資源開放與共享。
筆者基于國內(nèi)外學(xué)者郭少友等[3]、曹迪[4]、劉樹等[5]、Zhen[6]、Haslhofer等[7]、Klein等[8]的研究并結(jié)合相關(guān)調(diào)研,認(rèn)為目前數(shù)字資源常用的同步方法可歸納為軟件同步、中間件同步、發(fā)布變化通知同步3類。
該方法的核心是將同步軟件分別安裝于源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫,資源變化時使用軟件實(shí)現(xiàn)資源同步。此方法要求源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫是完全相同的網(wǎng)絡(luò)系統(tǒng),而且同步軟件需要根據(jù)數(shù)據(jù)庫情況自主研發(fā)。其優(yōu)勢在于源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫不分主從、互相同步,但軟件對環(huán)境要求較高,而且需要自主研發(fā)或修改,通用性不強(qiáng)。國內(nèi)此類同步軟件較多,比較有代表性的有劉樹等[5]研發(fā)的基于觸發(fā)器的變化捕獲器。
中間件是一種安裝于數(shù)據(jù)庫系統(tǒng)的應(yīng)用程序或者軟件,用于數(shù)據(jù)中轉(zhuǎn)站管理、傳輸計(jì)算機(jī)資源、實(shí)現(xiàn)網(wǎng)絡(luò)通信。源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫可通過中間件共享資源,當(dāng)源數(shù)據(jù)庫發(fā)生資源變化時,向中間件發(fā)送變化信息,目標(biāo)數(shù)據(jù)庫獲取變化信息后進(jìn)行解析和轉(zhuǎn)儲。Zhen[6]使用JMS中間件程序,用4個步驟來實(shí)現(xiàn)不同數(shù)據(jù)庫之間的數(shù)據(jù)同步:①通過觸發(fā)器獲取源端的增量數(shù)據(jù);②增量數(shù)據(jù)轉(zhuǎn)換為XML文件;③以消息格式發(fā)送XML文件到目標(biāo)端;④使用XML解析器解析數(shù)據(jù)。利用中間件同步的優(yōu)點(diǎn)是可以在不同網(wǎng)絡(luò)系統(tǒng)之間共享資源,且中間件程序較為簡單、開發(fā)難度低,還能實(shí)現(xiàn)一對多的資源同步。其缺點(diǎn)在于使用中轉(zhuǎn)站傳輸數(shù)據(jù),步驟較多、過程復(fù)雜,同時中間件需要使用專有的API和協(xié)議,不同中間件互操作困難。
此類方法把資源提供者稱為源端,目的地?cái)?shù)據(jù)庫稱為目標(biāo)端,源端通過Sitemap協(xié)議發(fā)布變化通知(XML格式文件),目標(biāo)端獲知變化信息,再通過某種規(guī)范執(zhí)行資源同步操作。DSNotify的資源同步方法和ResourceSync資源同步規(guī)范均可歸為發(fā)布變化通知同步的方法。維也納大學(xué)Haslhofer等[7]提出一種基于DSNotify的資源同步方法,也稱資源斷鏈檢測與修復(fù)。從源端所有資源中抽取描述性特征,生成資源特征向量,通過DSNotify附加組件提取并導(dǎo)出資源的特征項(xiàng)(資源的URI及其特征向量),再由監(jiān)視器通過反復(fù)比對監(jiān)控本地資源變化情況,監(jiān)視器將檢測到的變化情況寫入事件日志,并發(fā)送通知到目標(biāo)端,目標(biāo)端據(jù)此修復(fù)資源斷鏈。DSNotify方法應(yīng)用的可行性已經(jīng)被網(wǎng)絡(luò)同步仿真實(shí)驗(yàn)證明,但DSNotify應(yīng)用仍有一定局限性,其適合處理關(guān)聯(lián)數(shù)據(jù),主要用于鏈接的同步,無法同步非文本資源。
ANSI頒布的ResourceSync資源同步框架規(guī)范,同時提供了兩款開源軟件——resync-simulator和resync,前者是資源同步信息發(fā)布工具,后者是資源同步工具。ResourceSync把元數(shù)據(jù)和元數(shù)據(jù)描述的對象數(shù)據(jù)視為資源,賦予它們不同的URI,使用Sitemap協(xié)議語法對元數(shù)據(jù)和對象數(shù)據(jù)進(jìn)行描述。ResourceSync把內(nèi)容提供者稱為源端,把打算復(fù)制源內(nèi)容的站點(diǎn)稱為目標(biāo)端。源端對資源進(jìn)行描述并對外發(fā)布能力列表,其中包括4種同步能力:資源列表、變化列表、資源轉(zhuǎn)儲庫、變化轉(zhuǎn)儲庫,目標(biāo)端獲取能力列表后按規(guī)范步驟完成資源同步。相較于現(xiàn)行的數(shù)字資源同步方法,ResourceSync具有如下優(yōu)越性:與軟件同步方法相比,它不但省略了軟件研發(fā),而且具有4種同步能力,即環(huán)境適用性和通用性更強(qiáng);與中間件同步方法相比,它同樣具有在不同網(wǎng)絡(luò)系統(tǒng)之間實(shí)現(xiàn)一對多的同步能力,除此之外其源端和目標(biāo)端使用Sitemap協(xié)議直接建立聯(lián)系,不需要中間件,過程簡單、不易出錯,還可減少延遲;與DSNotify相比,ResourceSync同步規(guī)范具有更強(qiáng)的通用性,DSNotify無法同步非文本資源,而ResourceSync適用于任何具有URI的資源之間的同步。
自2014年頒布以來,ResourceSync便因其優(yōu)越性受到廣泛重視。ResourceSync已經(jīng)在康奈爾大學(xué)圖書館和電子預(yù)印本數(shù)據(jù)庫arXiv中實(shí)現(xiàn)部分功能的成功應(yīng)用,并受到歐洲數(shù)字人文項(xiàng)目(Europeana)、美國數(shù)字公共圖書館(DPLA)等的關(guān)注。截至2020年底,DPLA的部分成員庫之間已經(jīng)采用ResourceSync實(shí)現(xiàn)數(shù)字資源互操作[9]。COAR工作組也將ResourceSync作為新一代機(jī)構(gòu)知識庫的核心技術(shù)、標(biāo)準(zhǔn)、協(xié)議之一。
現(xiàn)代機(jī)構(gòu)知識庫不僅收錄了各種類型的海量數(shù)字資源,而且其資源是高度動態(tài)化的,不斷地收錄新資源,更新或刪除舊的數(shù)據(jù)。ResourceSync適用于任何具有URI的資源之間的同步,而且采用模塊化設(shè)計(jì),靈活性強(qiáng),易于操作,具有廣泛的適用性。根據(jù)COAR報(bào)告的描述,ResourceSync主要應(yīng)用于3個方面。①資源長期保存。采用鏡像同步備份等措施,為數(shù)據(jù)的長期保存提供保障。②批量發(fā)現(xiàn)和獲取資源。在ResourceSync框架下,用戶可實(shí)現(xiàn)資源的批量發(fā)現(xiàn)和打包下載,提升機(jī)構(gòu)知識庫資源價值。③資源轉(zhuǎn)移?!癛esourceSync是一種基于站點(diǎn)地圖(Sitemap)的規(guī)范,存儲庫管理器可以使用該規(guī)范提供信息,允許第三方系統(tǒng)持續(xù)與其存儲庫中的資源保持同步,即創(chuàng)建、更新和刪除。站點(diǎn)地圖允許公開知識庫內(nèi)容和搜索引擎所需的元數(shù)據(jù)。ResourceSync可使用Sitemaps XML格式實(shí)現(xiàn)內(nèi)容和元數(shù)據(jù)的發(fā)現(xiàn)和同步”[10]。
ResourceSync資源同步框架如圖1所示。源描述是目標(biāo)端了解數(shù)據(jù)源情況,實(shí)現(xiàn)同步的接入點(diǎn)。源描述枚舉數(shù)據(jù)源的能力列表,每個資源集都指向一個能力列表。如只有單一的源集合,則同步描述只包含一個指針;對于多個數(shù)據(jù)源(多個源使用索引的方法)的情況,其描述包括源描述和能力列表兩個層次。能力列表列舉了一組資源支持的4種能力:資源列表、變化列表、資源轉(zhuǎn)儲庫、變化轉(zhuǎn)儲庫的URI。

圖1 ResourceSync資源同步框架
ResourceSync框架規(guī)范把數(shù)字資源同步定義為4種情況:資源列表、變化列表、資源轉(zhuǎn)儲庫、變化轉(zhuǎn)儲庫,分別與4種同步能力相對應(yīng)。
(1)資源列表。ResourceSync框架規(guī)范將源端某一時刻(列表中時間戳屬性)允許同步的資源以列表呈現(xiàn),使用
圖2 ResourceSync資源同步過程
(1)基準(zhǔn)同步。基準(zhǔn)同步是指目標(biāo)端與源端首次同步,目標(biāo)端復(fù)制源端基礎(chǔ)數(shù)據(jù)。按照ResourceSync規(guī)范,可通過資源列表和資源轉(zhuǎn)儲庫獲取源端基礎(chǔ)資源,實(shí)現(xiàn)基準(zhǔn)同步。第一,目標(biāo)端通過資源列表中資源的URIs,逐一發(fā)出HTTP請求,完成基準(zhǔn)同步。第二,目標(biāo)端還可以獲取源端發(fā)布的資源轉(zhuǎn)儲庫ZIP文件中的比特流信息,在資源清單的指導(dǎo)下解引內(nèi)容包。
(2)增量同步。增量同步是指在基準(zhǔn)同步的基礎(chǔ)上,通過重復(fù)執(zhí)行增量同步,目標(biāo)端可以與源端保持動態(tài)同步。源端發(fā)布變化列表傳達(dá)關(guān)于資源變化的信息,目標(biāo)端通過變化列表中列出的新創(chuàng)建或更新資源的URI獲取最新的內(nèi)容,同時同步刪除已刪除資源。目標(biāo)端還可以獲取源端的變化轉(zhuǎn)儲庫實(shí)現(xiàn)增量同步,和基準(zhǔn)同步類似,目標(biāo)端通過變化資源的URI獲取數(shù)據(jù)包,然后在變化清單的指導(dǎo)下解包。
(3)審校。為了驗(yàn)證同步效果,目標(biāo)端必須能夠檢查它獲得的內(nèi)容是否與源端當(dāng)前資源在覆蓋率和準(zhǔn)確性方面相匹配。審校時,目標(biāo)端將獲取資源(數(shù)據(jù)包)包含的元數(shù)據(jù)與源端提供資源的元數(shù)據(jù)進(jìn)行匹配驗(yàn)證,這些元數(shù)據(jù)描述了資源的最新狀態(tài),如上次修改時間、長度和基于內(nèi)容的散列及其長度。
在實(shí)際操作中,目標(biāo)端如何發(fā)現(xiàn)源端發(fā)布的能力列表是實(shí)現(xiàn)資源同步的前提。在ResourceSync框架規(guī)范下,資源發(fā)現(xiàn)主要有:well-known URI、Link鏈接、robots協(xié)議3種方式(見圖3)。

圖3 ResourceSync資源發(fā)現(xiàn)機(jī)制
(1)well-known URI方法。一個數(shù)據(jù)源要發(fā)布源描述,源描述的URI:http://example.com。well-known URI資源發(fā)現(xiàn)方法就是在源描述URI添加前綴“/.wellknown/”,添加前綴的URI:http://www.example.com/.well-known/resourcesync。此特殊URI是目標(biāo)端獲取源端能力列表的適當(dāng)入口點(diǎn)。
(2)Link鏈接方法。目標(biāo)端對于web(網(wǎng)頁)類數(shù)字資源的同步,一般采用Link方法。在HTML文檔頂部(
)添加元素,此<鏈接> 必有一個rel屬性值為resourcesync,這表明可以通過(3)robots協(xié)議方法。該方法是首先向一個源端的robots.txt文件中添加一個Sitemap指令(Sitemap: http://example.com/dataset1/resourcelist.xml),“通過http://www.example.com/robots.txt,可獲取源數(shù)據(jù)端的robots.txt文件,該文件的值是資源列表的URI,目標(biāo)端據(jù)此發(fā)現(xiàn)源端的資源列表,進(jìn)而獲取能力列表?!盵4]如果一個源端支持多個資源集,那么可以添加多個指令,每個指令對應(yīng)一個與特定資源集相關(guān)聯(lián)的資源列表。
國內(nèi)現(xiàn)有的機(jī)構(gòu)知識庫大多采用的是DSpace開源軟件作為系統(tǒng)平臺,利用OAI進(jìn)行數(shù)據(jù)收割,然后導(dǎo)入中間元數(shù)據(jù)池,再通過數(shù)據(jù)接口或數(shù)據(jù)關(guān)聯(lián)等數(shù)據(jù)處理工具實(shí)現(xiàn)不同合集或不同區(qū)域資源的整合和分享,完成源數(shù)據(jù)的更新或同步。這種資源同步由于使用中轉(zhuǎn)站傳輸數(shù)據(jù),不同中間件互操作較困難,而且操作步驟較多、過程復(fù)雜,容易出現(xiàn)數(shù)據(jù)遲滯或混亂。ResourceSync框架規(guī)范由于環(huán)境適用性和通用性較強(qiáng),既可批量“收割”元數(shù)據(jù),也可實(shí)現(xiàn)對象資源的批量互操作,且過程簡單,將成為下一代機(jī)構(gòu)知識庫資源同步的技術(shù)支撐。ResourceSync框架規(guī)范在機(jī)構(gòu)知識庫中實(shí)現(xiàn)資源同步主要有以下3個應(yīng)用場景。
學(xué)術(shù)機(jī)構(gòu)可以根據(jù)自身情況為機(jī)構(gòu)知識庫設(shè)立一個或多個鏡像站點(diǎn)(備份庫),機(jī)構(gòu)知識庫與其鏡像庫進(jìn)行備份同步。這既有利于機(jī)構(gòu)知識庫資源的長期保存,也具有一定的分流作用,可減輕主服務(wù)器壓力。ResourceSync框架規(guī)范在資源發(fā)現(xiàn)機(jī)制上,由于雙方的隸屬關(guān)系,作為目標(biāo)端的鏡像站點(diǎn)無論采用何種發(fā)現(xiàn)方法都可輕易獲取作為源端的機(jī)構(gòu)知識庫資源。在同步方法上,鏡像站點(diǎn)可略過資源列表,直接獲取機(jī)構(gòu)知識庫資源轉(zhuǎn)儲庫數(shù)據(jù)包,完成基準(zhǔn)同步。增量同步和基準(zhǔn)同步類似,當(dāng)機(jī)構(gòu)知識庫資源發(fā)生變化(更新、刪除、創(chuàng)建)時,直接獲取變化轉(zhuǎn)儲庫,在資源清單的指導(dǎo)下完成增量同步。由于鏡像數(shù)據(jù)作為機(jī)構(gòu)知識庫備份,同步數(shù)據(jù)準(zhǔn)確性和完整性至關(guān)重要,同步操作完成后再根據(jù)清單常用信息對所有同步資源進(jìn)行審校。
ResourceSync框架規(guī)范在機(jī)構(gòu)知識庫中的第二個應(yīng)用場景是通過機(jī)構(gòu)知識庫與用戶之間的同步,幫助用戶精準(zhǔn)發(fā)現(xiàn)、批量獲取機(jī)構(gòu)知識庫資源,提升用戶的使用體驗(yàn)。機(jī)構(gòu)知識庫用戶又分為個人用戶和機(jī)構(gòu)用戶兩類。首先,機(jī)構(gòu)知識庫按照ResourceSync框架規(guī)范對自建資源進(jìn)行源描述,為了兼顧不同的用戶,機(jī)構(gòu)知識庫為用戶提供全部同步能力,用戶根據(jù)需要選擇同步能力。其次,用戶可根據(jù)需求選擇資源發(fā)現(xiàn)方法。ResourceSync提供了3種資源發(fā)現(xiàn)機(jī)制,用戶可自主選擇。如用戶只需獲取機(jī)構(gòu)知識庫資源列表,那么選用robots協(xié)議方法即可實(shí)現(xiàn);若需要4種同步能力,則選用well-known URI或Link鏈接方法。在同步過程中,個人用戶一般對于資源的覆蓋率和準(zhǔn)確率要求較低,只需執(zhí)行基準(zhǔn)同步和增量同步,審校可略過,而機(jī)構(gòu)用戶對于同步資源的準(zhǔn)確性和完整性要求較高,因而要嚴(yán)格按步驟執(zhí)行同步,審校環(huán)節(jié)不可省略。
近年來機(jī)構(gòu)知識庫從機(jī)構(gòu)下轄科研院(所)或團(tuán)隊(duì)數(shù)據(jù)庫獲取資源正成為擴(kuò)大機(jī)構(gòu)知識庫資源持有量的主要途徑??v觀國內(nèi)外知名機(jī)構(gòu)知識庫(國外如麻省理工圖書館機(jī)構(gòu)知識庫等,國內(nèi)如中國科學(xué)院系統(tǒng)機(jī)構(gòu)知識庫等)都采用ResourceSync框架規(guī)范與下轄的研究院(所)數(shù)據(jù)庫保持資源同步,這樣既可擴(kuò)大機(jī)構(gòu)知識庫資源持有量,也能保障資源實(shí)時更新。
盡管機(jī)構(gòu)知識庫與機(jī)構(gòu)下轄的研究院(所)數(shù)據(jù)庫具有隸屬或者合作關(guān)系,但與鏡像站點(diǎn)數(shù)據(jù)備份不同,機(jī)構(gòu)知識庫從子數(shù)據(jù)庫中獲取資源要遵循既定目標(biāo)選擇性地同步。因此,在資源發(fā)現(xiàn)機(jī)制上,雙方可采用約定的發(fā)現(xiàn)方法。由于是選擇性同步,同步過程也較為簡單,作為目標(biāo)端的機(jī)構(gòu)知識庫可略過子庫的資源轉(zhuǎn)儲庫和變化轉(zhuǎn)儲庫,只需獲取子庫的資源列表和變化列表,根據(jù)資源的URI下載元數(shù)據(jù)或全文數(shù)據(jù),即可完成基準(zhǔn)同步。當(dāng)子庫資源發(fā)生變化時,與基準(zhǔn)同步方法相同,通過獲取變化列表,完成增量同步。最后再根據(jù)獲取資源的常用信息(最新修改時間和散列及其長度信息)驗(yàn)證同步效果。
機(jī)構(gòu)知識庫運(yùn)行是復(fù)雜的“生態(tài)系統(tǒng)”,Resource Sync資源同步框架規(guī)范在實(shí)際應(yīng)用中可能出現(xiàn)以下若干問題。
在機(jī)構(gòu)知識庫資源同步實(shí)踐中如何減少延遲,保障同步的實(shí)時性,是無法回避的現(xiàn)實(shí)問題。在Resource Sync同步框架規(guī)范中,為保障同步的實(shí)時性,在實(shí)際操作中應(yīng)采用“推”“拉”結(jié)合的方式。當(dāng)機(jī)構(gòu)知識庫資源發(fā)生變化時,應(yīng)及時發(fā)布(推送)變化通知,并提供變化列表或變化轉(zhuǎn)儲庫,以便目標(biāo)端及時同步更新。同時,目標(biāo)端應(yīng)動態(tài)監(jiān)測源端資源變化情況,及時發(fā)送同步請求,根據(jù)比特流信息判斷資源變化情況,量少則通過變化列表完成同步,量大則打包下載變化轉(zhuǎn)儲庫。
當(dāng)兩個網(wǎng)絡(luò)系統(tǒng)之間要實(shí)現(xiàn)大量同步資源,在數(shù)據(jù)傳輸?shù)倪^程中極易出現(xiàn)格式不一致的數(shù)據(jù)異構(gòu)性問題。導(dǎo)致數(shù)據(jù)格式異構(gòu)的原因很多,主要源于計(jì)算機(jī)系統(tǒng)本身的復(fù)雜性。如何有效解決此類問題是實(shí)現(xiàn)資源同步的關(guān)鍵。在機(jī)構(gòu)知識庫與鏡像庫同步中,“IR數(shù)據(jù)格式應(yīng)嘗試應(yīng)用可重復(fù)使用的Latex或TEI格式”[10],鏡像備份過程中盡量避免數(shù)據(jù)格式轉(zhuǎn)換,直接傳輸數(shù)據(jù)保存?zhèn)浞?。在機(jī)構(gòu)知識庫與用戶或資源提供者同步中,IR與資源使用者或提供者之間資源同步時,目標(biāo)端獲取源端資源后,先使用ETL(抽取-轉(zhuǎn)換-加載)工具進(jìn)行格式轉(zhuǎn)換,數(shù)據(jù)轉(zhuǎn)換成功之后,再執(zhí)行基準(zhǔn)同步、增量同步以及審校。
現(xiàn)代機(jī)構(gòu)知識庫不僅收錄海量的數(shù)字資源,而且資源類型十分豐富。ResourceSync同步框架規(guī)范將元數(shù)據(jù)和對象數(shù)據(jù)分別賦予不同URI,兩者之間是描述與被描述的關(guān)系,如果元數(shù)據(jù)發(fā)生變化,其描述的對象數(shù)據(jù)也隨之變化,反之亦然。因此,在同步過程中可能出現(xiàn)兩類資源不協(xié)同的問題,為了避免此類問題,“應(yīng)在繼續(xù)保持二者之間描述與被描述關(guān)系的基礎(chǔ)上,分別對元數(shù)據(jù)資源及其所描述的對象資源間實(shí)施同步”[3]。
機(jī)構(gòu)知識庫的研究和應(yīng)用已受到廣泛的重視和獲得長足的發(fā)展,而ResourceSync資源同步框架規(guī)范在機(jī)構(gòu)知識庫中的應(yīng)用研究才初見端倪,利用Resource Sync同步原理,研究其在機(jī)構(gòu)知識庫中具體應(yīng)用場景,提出應(yīng)用過程中需要注意的問題并給出相應(yīng)對策,才能更好地實(shí)現(xiàn)機(jī)構(gòu)知識庫的資源轉(zhuǎn)移、批量發(fā)現(xiàn)、長期保存等新功能,使機(jī)構(gòu)知識庫功能更強(qiáng)大,最大程度地實(shí)現(xiàn)資源開放和共享。