張 紅(國(guó)家圖書(shū)館,北京 100081)
基于大數(shù)據(jù)技術(shù)的資源發(fā)現(xiàn)平臺(tái)構(gòu)建
——以國(guó)家圖書(shū)館“文津搜索”系統(tǒng)為例
張紅
(國(guó)家圖書(shū)館,北京 100081)
以國(guó)家圖書(shū)館“文津搜索”系統(tǒng)為例,闡述應(yīng)用Hadoop分布式系統(tǒng)架構(gòu)和各類(lèi)NoSQL數(shù)據(jù)庫(kù)等大數(shù)據(jù)技術(shù)構(gòu)建資源發(fā)現(xiàn)平臺(tái)的策略和方法,并對(duì)基于大數(shù)據(jù)技術(shù)構(gòu)建的“文津搜索”系統(tǒng)的技術(shù)優(yōu)勢(shì)、實(shí)際應(yīng)用成效以及技術(shù)局限性進(jìn)行分析,為大數(shù)據(jù)技術(shù)在圖書(shū)館數(shù)字資源服務(wù)領(lǐng)域的應(yīng)用提供借鑒與參考。
大數(shù)據(jù)技術(shù);資源發(fā)現(xiàn)系統(tǒng);國(guó)家圖書(shū)館;文津搜索
隨著信息技術(shù)的發(fā)展和互聯(lián)網(wǎng)應(yīng)用的普及,大數(shù)據(jù)時(shí)代已然來(lái)臨。大數(shù)據(jù)技術(shù)突破了傳統(tǒng)數(shù)據(jù)管理技術(shù)的瓶頸,對(duì)于種類(lèi)多樣、增長(zhǎng)迅速、蘊(yùn)藏巨大價(jià)值的海量數(shù)據(jù),在數(shù)據(jù)采集、存儲(chǔ)、處理、分析和挖掘方面具有一定的技術(shù)優(yōu)勢(shì)。
在數(shù)字圖書(shū)館建設(shè)深入開(kāi)展的今天,數(shù)字資源急劇增長(zhǎng),越來(lái)越多的圖書(shū)館推出了資源發(fā)現(xiàn)服務(wù)平臺(tái),為讀者提供統(tǒng)一的檢索途徑,使讀者能夠方便、快捷地發(fā)現(xiàn)并獲取圖書(shū)館的數(shù)字資源。目前,國(guó)際市場(chǎng)上主流的統(tǒng)一資源發(fā)現(xiàn)系統(tǒng)有Serials Solutions公司的Summon系統(tǒng)、Ex Libris公司的Primo Central系統(tǒng)、EBSCO公司的EBSCO DiscoveryService(簡(jiǎn)稱(chēng)EDS)系統(tǒng)、OCLC的WorldCat Local系統(tǒng)以及Innovative Interfaces公司的Encore系統(tǒng)[1],這些系統(tǒng)既有內(nèi)容提供商推出的,也有系統(tǒng)提供商研制的,均被全球眾多圖書(shū)館所引進(jìn)。國(guó)內(nèi)的圖書(shū)館有些引進(jìn)了Summon、Primo等國(guó)外的產(chǎn)品,還有些采用了南京大學(xué)數(shù)圖實(shí)驗(yàn)室和EBSCO公司聯(lián)合研發(fā)的Find+知識(shí)發(fā)現(xiàn)平臺(tái),也有些采用超星公司的超星發(fā)現(xiàn)系統(tǒng)[2]等。
2012年年底,國(guó)家圖書(shū)館推出了自己的資源發(fā)現(xiàn)系統(tǒng)——“文津搜索”系統(tǒng),作為國(guó)家數(shù)字圖書(shū)館的資源檢索門(mén)戶(hù)正式向公眾提供服務(wù)。考慮到項(xiàng)目的建設(shè)目標(biāo)、個(gè)性化需求以及建設(shè)成果的推廣復(fù)用等方面因素,國(guó)家圖書(shū)館沒(méi)有采用商業(yè)化的成品軟件,而是聯(lián)合軟件開(kāi)發(fā)商自主研發(fā)了“文津搜索”系統(tǒng)。不同于采用傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)技術(shù)構(gòu)建的資源發(fā)現(xiàn)與獲取系統(tǒng),“文津搜索”系統(tǒng)引入了Hadoop[3]分布式系統(tǒng)架構(gòu)和各類(lèi)NoSQL[4]數(shù)據(jù)庫(kù)等大數(shù)據(jù)技術(shù),從而實(shí)踐了大數(shù)據(jù)技術(shù)在圖書(shū)館資源服務(wù)領(lǐng)域的應(yīng)用。
由于各圖書(shū)館資源發(fā)現(xiàn)服務(wù)平臺(tái)的建設(shè)目標(biāo)和設(shè)計(jì)理念不盡相同,各平臺(tái)采用的系統(tǒng)架構(gòu)和數(shù)據(jù)管理技術(shù)也各具特點(diǎn),呈現(xiàn)出的服務(wù)效果也各有所長(zhǎng)。任何計(jì)算機(jī)技術(shù)都有其適用領(lǐng)域,源自開(kāi)源模式的大數(shù)據(jù)技術(shù)亦是如此,該技術(shù)在其適用領(lǐng)域彰顯出技術(shù)優(yōu)勢(shì)的同時(shí),在某些方面也存在一定的技術(shù)局限性。本文以“文津搜索”系統(tǒng)為例,探討大數(shù)據(jù)技術(shù)在資源發(fā)現(xiàn)平臺(tái)中的應(yīng)用方法,并結(jié)合平臺(tái)實(shí)際運(yùn)行情況,分析基于大數(shù)據(jù)技術(shù)構(gòu)建的資源發(fā)現(xiàn)平臺(tái)所具有的技術(shù)優(yōu)勢(shì)、應(yīng)用成效以及受到的制約,為大數(shù)據(jù)技術(shù)在此領(lǐng)域的應(yīng)用提供借鑒與參考。
2.1 建設(shè)需求
國(guó)家圖書(shū)館在構(gòu)建資源發(fā)現(xiàn)平臺(tái)時(shí),在軟件方面的功能需求主要包括:提供一站式數(shù)字資源和實(shí)體文獻(xiàn)檢索服務(wù),支持分類(lèi)檢索、高級(jí)檢索、全文檢索和二次檢索,支持中英文檢索詞翻譯、簡(jiǎn)繁體通檢以及同義詞擴(kuò)展檢索;對(duì)檢索結(jié)果可通過(guò)多種途徑的分類(lèi)和排序方式進(jìn)行過(guò)濾、聚合與導(dǎo)引,方便讀者快速定位所需信息。
除上述對(duì)軟件功能的需求外,國(guó)家圖書(shū)館對(duì)其資源發(fā)現(xiàn)平臺(tái)在數(shù)據(jù)整合與挖掘、系統(tǒng)性能與架構(gòu)、與其他系統(tǒng)的銜接以及推廣復(fù)用等方面還提出了一些個(gè)性化需求。
在數(shù)據(jù)整合與挖掘方面,需對(duì)國(guó)家圖書(shū)館通過(guò)自建、購(gòu)買(mǎi)、征集、采集等方式所獲取的各種類(lèi)型的數(shù)字資源和傳統(tǒng)文獻(xiàn)資源元數(shù)據(jù)進(jìn)行整合,實(shí)現(xiàn)元數(shù)據(jù)的本地存儲(chǔ),并構(gòu)建元數(shù)據(jù)的集中索引庫(kù),以實(shí)現(xiàn)高效的元數(shù)據(jù)檢索服務(wù);需采集包括互聯(lián)網(wǎng)資源在內(nèi)的相關(guān)數(shù)據(jù)以提高檢索和服務(wù)質(zhì)量,并基于統(tǒng)計(jì)分析和數(shù)據(jù)挖掘技術(shù),向用戶(hù)提供高質(zhì)量的檢索結(jié)果排名、相關(guān)檢索和檢索建議等。
在系統(tǒng)性能與架構(gòu)方面,需支持每分鐘10萬(wàn)次并發(fā)和亞秒級(jí)響應(yīng),滿(mǎn)足大并發(fā)、低功耗以及動(dòng)態(tài)可伸縮的要求,可隨著資源數(shù)據(jù)量和用戶(hù)訪問(wèn)量的增加方便地進(jìn)行擴(kuò)展。
在與其他系統(tǒng)的銜接方面,需與國(guó)家圖書(shū)館統(tǒng)一用戶(hù)管理系統(tǒng)集成,實(shí)現(xiàn)與國(guó)圖其他讀者服務(wù)系統(tǒng)之間的單點(diǎn)登錄以及資源訪問(wèn)權(quán)限控制;需提供到館內(nèi)外資源發(fā)布系統(tǒng)的鏈接,實(shí)現(xiàn)自動(dòng)認(rèn)證并能夠直接跳轉(zhuǎn)到資源的詳細(xì)顯示頁(yè)面,方便讀者獲取對(duì)象數(shù)據(jù);對(duì)實(shí)體文獻(xiàn),需提供到各館OPAC的館藏鏈接以及到國(guó)圖館際互借與文獻(xiàn)傳遞系統(tǒng)的接口。
在推廣復(fù)用方面,需提供多種復(fù)用方式,可作為數(shù)字圖書(shū)館工程建設(shè)成果被推廣復(fù)用到地方圖書(shū)館。
2.2 構(gòu)建策略
國(guó)家圖書(shū)館在構(gòu)建“文津搜索”系統(tǒng)服務(wù)平臺(tái)時(shí),基于實(shí)時(shí)高效的檢索、處理海量數(shù)據(jù)、便于擴(kuò)展和推廣復(fù)用等方面的考慮,選定了能夠支持分布式服務(wù)和大規(guī)模數(shù)據(jù)處理的系統(tǒng)架構(gòu),通過(guò)前端服務(wù)平臺(tái)、數(shù)據(jù)存儲(chǔ)與處理平臺(tái)以及多級(jí)互聯(lián)的搜索集群三個(gè)核心組件協(xié)同運(yùn)轉(zhuǎn),來(lái)實(shí)現(xiàn)系統(tǒng)的預(yù)期目標(biāo),如圖1所示。
圖1 文津搜索核心組件示意圖
前端服務(wù)平臺(tái)承載著檢索服務(wù)軟件各功能的實(shí)現(xiàn),負(fù)責(zé)接收讀者發(fā)送的資源檢索、獲取資源詳細(xì)信息、個(gè)性化設(shè)置等各類(lèi)請(qǐng)求,并提供合理、靈活的檢索結(jié)果展示頁(yè),方便讀者獲取所需資源。平臺(tái)采用多種類(lèi)型的NoSQL[4]數(shù)據(jù)庫(kù)存儲(chǔ)各類(lèi)需向讀者提供的數(shù)據(jù)以及系統(tǒng)運(yùn)行中產(chǎn)生的歷史數(shù)據(jù),采用特定的數(shù)據(jù)組織方式、算法和軟件技術(shù)提高檢索質(zhì)量。平臺(tái)集成國(guó)圖統(tǒng)一用戶(hù)管理系統(tǒng)、館內(nèi)外資源發(fā)布系統(tǒng)以及國(guó)圖館際互借與文獻(xiàn)傳遞系統(tǒng)的接口,整合國(guó)圖和地方館OPAC的館藏鏈接地址數(shù)據(jù),可以實(shí)現(xiàn)單點(diǎn)登錄、用戶(hù)認(rèn)證、到對(duì)象數(shù)據(jù)發(fā)布系統(tǒng)和各館OPAC系統(tǒng)的跳轉(zhuǎn),并可發(fā)送館際互借與文獻(xiàn)傳遞請(qǐng)求。
多級(jí)互聯(lián)的搜索集群接收前端服務(wù)平臺(tái)發(fā)來(lái)的檢索請(qǐng)求,提供元數(shù)據(jù)核心檢索和擴(kuò)展檢索服務(wù),并將檢索結(jié)果返回給前端服務(wù)平臺(tái)。搜索集群采用互聯(lián)網(wǎng)上成熟的搜索引擎技術(shù)構(gòu)建,通過(guò)負(fù)載均衡支持大并發(fā),通過(guò)預(yù)索引的方式,將索引文件預(yù)先裝載到搜索集群內(nèi)存或SSD閃存中以提高檢索速度,從而滿(mǎn)足系統(tǒng)既定的性能指標(biāo)。
數(shù)據(jù)存儲(chǔ)與處理平臺(tái)是基于Hadoop架構(gòu)構(gòu)建的,負(fù)責(zé)將收集到的各種來(lái)源、不同格式的元數(shù)據(jù)按照映射規(guī)則整合成統(tǒng)一格式的元數(shù)據(jù),實(shí)現(xiàn)各類(lèi)數(shù)字資源元數(shù)據(jù)的本地存儲(chǔ),并接收網(wǎng)絡(luò)資源采集系統(tǒng)采集到的互聯(lián)網(wǎng)上開(kāi)放的相關(guān)數(shù)據(jù)以豐富、優(yōu)化檢索結(jié)果。該平臺(tái)同時(shí)承擔(dān)著大規(guī)模分布式計(jì)算任務(wù),負(fù)責(zé)索引構(gòu)建以及資源重要性計(jì)算,并能夠?qū)κ占娜罩具M(jìn)行分析、統(tǒng)計(jì)和挖掘,其結(jié)果用于改善讀者服務(wù)。該平臺(tái)將整合好的元數(shù)據(jù)詳細(xì)信息轉(zhuǎn)換成特定格式提供給前端服務(wù)平臺(tái)用于詳細(xì)信息展示,將抽取的索引數(shù)據(jù)提供給搜索集群用于元數(shù)據(jù)檢索。
設(shè)計(jì)三種復(fù)用模式,即前端接口方式、縮小版整體部署方式和云平臺(tái)應(yīng)用方式用于“文津搜索”系統(tǒng)在地方館的推廣復(fù)用。
資源發(fā)現(xiàn)系統(tǒng)的建設(shè)涉及硬件平臺(tái)、軟件環(huán)境、網(wǎng)絡(luò)設(shè)施、數(shù)據(jù)整合規(guī)則、系統(tǒng)功能、安全策略等各方面技術(shù),本文僅就與大數(shù)據(jù)相關(guān)技術(shù)的應(yīng)用進(jìn)行闡述。
國(guó)家圖書(shū)館的“文津搜索”系統(tǒng)服務(wù)平臺(tái)采用分布式系統(tǒng)架構(gòu),用近400臺(tái)PC服務(wù)器組成服務(wù)器集群,在各核心組件上部署了定制開(kāi)發(fā)的應(yīng)用軟件以實(shí)現(xiàn)特定功能。其系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 文津搜索系統(tǒng)結(jié)構(gòu)圖
3.1 基于NoSQL數(shù)據(jù)庫(kù)的前端服務(wù)平臺(tái)
(1)前端服務(wù)平臺(tái)構(gòu)建
前端反向代理是前端服務(wù)平臺(tái)的入口,負(fù)責(zé)接收讀者發(fā)來(lái)的請(qǐng)求,并向讀者返回請(qǐng)求結(jié)果,通過(guò)Nginx[5]中間件進(jìn)行反向代理和負(fù)載均衡,同時(shí)提供靜態(tài)文件的緩存。
Web Server和Media Server采用多個(gè)Tomcat[6]中間件,接收前端反向代理發(fā)來(lái)的請(qǐng)求,并返回請(qǐng)求結(jié)果,實(shí)現(xiàn)高可用負(fù)載均衡。Web Server將檢索請(qǐng)求發(fā)送到搜索集群進(jìn)行檢索并獲取檢索結(jié)果,檢索輔助服務(wù)器為其提供相關(guān)檢索和檢索推薦服務(wù),Redis[7]、MongoDB[8]和Cassandra[9]三種NoSQL數(shù)據(jù)庫(kù)負(fù)責(zé)記錄歷史信息、保存?zhèn)€人設(shè)置信息以及向讀者提供檢索結(jié)果展示數(shù)據(jù)。
日志收集服務(wù)定時(shí)收集Web Server上的日志信息,并發(fā)送到數(shù)據(jù)存儲(chǔ)與處理平臺(tái)用于對(duì)日志的統(tǒng)計(jì)、分析和挖掘。
緩存服務(wù)器部署了Memcached[10]分布式內(nèi)存對(duì)象緩存系統(tǒng),用來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)檢索結(jié)果、相關(guān)文件和圖片等,可向Web Server和Media Server提供緩存的數(shù)據(jù),從而提高檢索速度。
(2)前端服務(wù)數(shù)據(jù)管理
前端服務(wù)平臺(tái)采用三種NoSQL數(shù)據(jù)庫(kù)存儲(chǔ)與讀者交互的數(shù)據(jù)信息。NoSQL數(shù)據(jù)庫(kù)是開(kāi)源型數(shù)據(jù)庫(kù),具有海量數(shù)據(jù)的處理能力,在低成本、高性能和易于擴(kuò)展方面具有一定的優(yōu)勢(shì)[11],因而近年來(lái)發(fā)展非常迅速。
前端服務(wù)平臺(tái)的讀者檢索歷史信息和翻譯詞庫(kù)信息保存在Redis數(shù)據(jù)庫(kù)中。Redis是一個(gè)鍵值模型的內(nèi)存數(shù)據(jù)庫(kù),性能非常出色,但因受物理內(nèi)存的限制,存儲(chǔ)的數(shù)據(jù)量和擴(kuò)展能力也會(huì)受到限制[12]。由于讀者的檢索詞、檢索串信息和翻譯詞庫(kù)信息需要快速讀寫(xiě),數(shù)據(jù)量不大且所需存儲(chǔ)空間可以預(yù)見(jiàn),因此采用Redis數(shù)據(jù)庫(kù)比較適合。
前端服務(wù)平臺(tái)的檢索熱詞信息、標(biāo)簽云信息以及讀者個(gè)人設(shè)置信息保存在MongoDB數(shù)據(jù)庫(kù)中。此外,該數(shù)據(jù)庫(kù)還存儲(chǔ)了后臺(tái)管理系統(tǒng)的用戶(hù)信息、設(shè)置信息以及各類(lèi)統(tǒng)計(jì)信息。MongoDB是一種可擴(kuò)展、高性能、面向文檔的數(shù)據(jù)庫(kù),支持松散的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)查詢(xún)功能強(qiáng)大,支持建立索引,能夠解決海量數(shù)據(jù)的訪問(wèn)效率問(wèn)題[12]。由于在讀者訪問(wèn)時(shí)系統(tǒng)需頻繁地讀寫(xiě)讀者信息和標(biāo)簽云信息,管理員通過(guò)后臺(tái)管理系統(tǒng)進(jìn)行各種操作也需要得到實(shí)時(shí)響應(yīng),因而選擇MongoDB數(shù)據(jù)庫(kù)存儲(chǔ)相關(guān)信息可以滿(mǎn)足數(shù)據(jù)讀寫(xiě)的高效性。
前端服務(wù)平臺(tái)檢索結(jié)果的詳細(xì)顯示數(shù)據(jù)從Cassandra數(shù)據(jù)庫(kù)調(diào)取。Cassandra是一套高性能、可伸縮的分布式數(shù)據(jù)管理系統(tǒng),可實(shí)現(xiàn)純粹意義上的水平擴(kuò)展和分布式的寫(xiě)操作,具有較強(qiáng)的容災(zāi)能力[12]。Cassandra數(shù)據(jù)庫(kù)中預(yù)先存儲(chǔ)了包含書(shū)封和URL信息的元數(shù)據(jù)、圖片數(shù)據(jù)以及書(shū)評(píng)信息?;贑assandra數(shù)據(jù)庫(kù)多數(shù)據(jù)節(jié)點(diǎn)的設(shè)計(jì),元數(shù)據(jù)的詳細(xì)信息被寫(xiě)到多個(gè)節(jié)點(diǎn)上,在讀數(shù)據(jù)時(shí)可路由到其中一個(gè)節(jié)點(diǎn)進(jìn)行讀取,從而保證存儲(chǔ)的數(shù)據(jù)安全可靠且能夠快速讀取。
3.2 基于Hadoop架構(gòu)的數(shù)據(jù)存儲(chǔ)與處理平臺(tái)
數(shù)據(jù)存儲(chǔ)與數(shù)據(jù)處理平臺(tái)是基于開(kāi)源Hadoop分布式系統(tǒng)架構(gòu)構(gòu)建的。Hadoop是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架,具有高可靠性、高可拓展性和高容錯(cuò)性的優(yōu)點(diǎn),其技術(shù)核心是分布式文件系統(tǒng)HDFS和MapReduce引擎[13]。
數(shù)據(jù)存儲(chǔ)與數(shù)據(jù)處理平臺(tái)采用數(shù)十臺(tái)服務(wù)器部署了HDFS分布式文件系統(tǒng),用以存儲(chǔ)需進(jìn)行數(shù)據(jù)處理的文件和數(shù)據(jù)處理后的結(jié)果文件,包括從互聯(lián)網(wǎng)采集到的信息、收集到的日志文件、元數(shù)據(jù)整合中的過(guò)程文件、生成的引文件等。HDFS包含名字節(jié)點(diǎn)和諸多數(shù)據(jù)節(jié)點(diǎn),名字節(jié)點(diǎn)負(fù)責(zé)管理文件系統(tǒng)命名空間和對(duì)文件的訪問(wèn),數(shù)據(jù)節(jié)點(diǎn)用于管理自身節(jié)點(diǎn)上的數(shù)據(jù)存儲(chǔ)。HDFS可跨服務(wù)器存儲(chǔ)海量文件,它將大文件分成多個(gè)同樣大小的數(shù)據(jù)塊,并根據(jù)策略將數(shù)據(jù)塊復(fù)制到相同及不同機(jī)架的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中,從而保證平臺(tái)的高容錯(cuò)性和數(shù)據(jù)讀取的高效性。HDFS具有數(shù)據(jù)的錯(cuò)誤檢測(cè)和快速自動(dòng)恢復(fù)功能,可以在數(shù)據(jù)節(jié)點(diǎn)間動(dòng)態(tài)遷移數(shù)據(jù),從而保證數(shù)據(jù)的高可靠性。HDFS可以實(shí)現(xiàn)完全的水平擴(kuò)展,增加一臺(tái)新服務(wù)器到集群里,就可以增加更多容量,不需要手動(dòng)遷移任何數(shù)據(jù),就可以實(shí)現(xiàn)資源的自動(dòng)分配,從而保證平臺(tái)的高可擴(kuò)展性。
數(shù)據(jù)存儲(chǔ)與數(shù)據(jù)處理平臺(tái)的大規(guī)模并行數(shù)據(jù)處理、數(shù)據(jù)分析和數(shù)據(jù)挖掘的功能是基于MapReduce編程模型實(shí)現(xiàn)的,主要包括五個(gè)方面:①對(duì)灌裝到Hadoop集群中的原始元數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗、數(shù)據(jù)查重、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)合并、掛接書(shū)封目次信息以及建立數(shù)據(jù)關(guān)聯(lián)等一系列數(shù)據(jù)處理;②對(duì)從互聯(lián)網(wǎng)采集到的信息進(jìn)行處理,完成資源重要性計(jì)算,以提高檢索質(zhì)量;③在索引構(gòu)建服務(wù)的控制下進(jìn)行核心信息索引和全文信息索引的構(gòu)建,并將索引結(jié)果文件存入Hadoop的HDFS分布式文件系統(tǒng)中;④對(duì)收集到的日志數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析生成統(tǒng)計(jì)數(shù)據(jù);⑤對(duì)用戶(hù)的行為數(shù)據(jù)進(jìn)行分析挖掘,作為用戶(hù)相關(guān)推薦的數(shù)據(jù)支撐。
數(shù)據(jù)存儲(chǔ)與數(shù)據(jù)處理平臺(tái)采用HBase[14]數(shù)據(jù)庫(kù)存儲(chǔ)灌裝后的元數(shù)據(jù)、整合后標(biāo)準(zhǔn)化的元數(shù)據(jù)、書(shū)封數(shù)據(jù)以及到數(shù)字資源發(fā)布系統(tǒng)的URL信息。HBase數(shù)據(jù)庫(kù)也是一種NoSQL開(kāi)源數(shù)據(jù)庫(kù),它是構(gòu)建在Hadoop上的分布式的、面向列的數(shù)據(jù)庫(kù),有很好的擴(kuò)展性,可以存儲(chǔ)數(shù)以?xún)|計(jì)的行,可利用成熟的HDFS文件系統(tǒng)和MapReduce計(jì)算框架,高效和高可靠地處理海量數(shù)據(jù)[12],其數(shù)據(jù)庫(kù)的一致性服務(wù)由ZooKeeper[15]提供。由于存儲(chǔ)的元數(shù)據(jù)囊括各種文獻(xiàn)類(lèi)型,且不同類(lèi)型的元數(shù)據(jù)描述項(xiàng)存在很大差異,而HBase數(shù)據(jù)庫(kù)是稀疏存儲(chǔ),同一張表里的每一行數(shù)據(jù)都可以有截然不同的列,因而非常適合存儲(chǔ)結(jié)構(gòu)復(fù)雜的海量元數(shù)據(jù)。此外,存儲(chǔ)于Hbase中的元數(shù)據(jù)可以非常方便地通過(guò)MapReduce程序進(jìn)行數(shù)據(jù)處理,并可以將數(shù)據(jù)以SSTable格式導(dǎo)出、生成索引數(shù)據(jù),導(dǎo)入Cassandra數(shù)據(jù)庫(kù)提供顯示數(shù)據(jù),這些都有效地利用了Hbase數(shù)據(jù)庫(kù)的優(yōu)勢(shì)。
3.3 基于互聯(lián)網(wǎng)搜索引擎構(gòu)建的搜索集群
多級(jí)互聯(lián)的搜索集群是基于互聯(lián)網(wǎng)成熟的搜索引擎構(gòu)建的,是一個(gè)分布式搜索引擎架構(gòu),分為提供核心信息檢索服務(wù)的內(nèi)存搜索集群和提供擴(kuò)展信息(含全文信息)檢索服務(wù)的SSD磁盤(pán)搜索集群兩部分,每一部分包含若干組結(jié)構(gòu)相同的服務(wù)器,每一組服務(wù)器又分為檢索根節(jié)點(diǎn)、檢索父節(jié)點(diǎn)和檢索子節(jié)點(diǎn)三個(gè)層級(jí),集群中根節(jié)點(diǎn)、父節(jié)點(diǎn)和子節(jié)點(diǎn)之間的同步服務(wù)、配置維護(hù)和命名服務(wù)也是由ZooKeeper提供的。通過(guò)這種多級(jí)互聯(lián)的方式實(shí)現(xiàn)負(fù)載均衡,保證高并發(fā)情況下的檢索效率。
以?xún)?nèi)存搜索集群為例,每一組服務(wù)器含有一個(gè)檢索根節(jié)點(diǎn),每一個(gè)檢索根節(jié)點(diǎn)下聯(lián)3個(gè)檢索父節(jié)點(diǎn),每一個(gè)檢索父節(jié)點(diǎn)下聯(lián)20個(gè)檢索子節(jié)點(diǎn)。數(shù)據(jù)存儲(chǔ)與處理平臺(tái)HDFS中保存的索引文件被預(yù)先分發(fā)到各組服務(wù)器,在每組檢索子節(jié)點(diǎn)服務(wù)器的硬盤(pán)中平均分布,即每組檢索子節(jié)點(diǎn)的服務(wù)器中都保存了一套全量的索引文件。當(dāng)服務(wù)器啟動(dòng)時(shí),索引文件自動(dòng)加載到內(nèi)存中提供檢索,因而每組檢索子節(jié)點(diǎn)服務(wù)器的內(nèi)存容量之和也應(yīng)能夠容納全量的索引文件。當(dāng)檢索根節(jié)點(diǎn)獲得檢索請(qǐng)求后,會(huì)通過(guò)檢索父節(jié)點(diǎn)把檢索請(qǐng)求信息發(fā)送到每一個(gè)檢索子節(jié)點(diǎn)中進(jìn)行檢索,檢索子節(jié)點(diǎn)將檢索結(jié)果及每個(gè)結(jié)果的重要性分?jǐn)?shù)返回檢索父節(jié)點(diǎn),通過(guò)檢索父節(jié)點(diǎn)和檢索根節(jié)點(diǎn)進(jìn)行歸并和排序,最后由檢索根節(jié)點(diǎn)合并為一個(gè)相關(guān)排序表返還給前端展示頁(yè)面。從上述檢索過(guò)程可以看出,核心搜索是通過(guò)分布式并行搜索技術(shù)實(shí)現(xiàn)的,而且是在內(nèi)存中進(jìn)行檢索,加之在各層級(jí)上都構(gòu)建了緩存系統(tǒng),因而大大提高了檢索速度。
4.1 應(yīng)用成效分析
國(guó)家圖書(shū)館在推出“文津搜索”系統(tǒng)之前,曾采用艾利貝斯公司的產(chǎn)品MetaLib構(gòu)建國(guó)圖的數(shù)字資源門(mén)戶(hù),該系統(tǒng)運(yùn)行在小型機(jī)上,采用的是聯(lián)邦檢索的模式,其檢索速度受各遠(yuǎn)程資源提供系統(tǒng)以及網(wǎng)絡(luò)鏈路的影響很大,服務(wù)效果不甚理想。
“文津搜索”系統(tǒng)是基于元數(shù)據(jù)集中的理念建設(shè)的,通過(guò)將所有元數(shù)據(jù)都整合到本地的方式,有效地提高了檢索速度,改善了服務(wù)效果。在2012年年底上線時(shí),“文津搜索”系統(tǒng)整合了近2億條書(shū)目元數(shù)據(jù)和目次數(shù)據(jù)。隨著原有數(shù)據(jù)庫(kù)的數(shù)據(jù)更新和新數(shù)據(jù)庫(kù)的陸續(xù)整合,至2015年6月系統(tǒng)中的元數(shù)據(jù)量已達(dá)到近3億條,并且還在不斷增加。本著優(yōu)先整合能夠提供對(duì)象數(shù)據(jù)的資源庫(kù)元數(shù)據(jù)的原則,除數(shù)據(jù)來(lái)自于聯(lián)合編目系統(tǒng)的傳統(tǒng)文獻(xiàn)外,系統(tǒng)中絕大部分的數(shù)字資源都能提供到對(duì)象數(shù)據(jù)的訪問(wèn)鏈接?!拔慕蛩阉鳌毕到y(tǒng)自上線以來(lái),向讀者提供了安全、穩(wěn)定、高效的數(shù)字資源統(tǒng)一檢索服務(wù),在實(shí)際運(yùn)行過(guò)程中,平臺(tái)采用的大數(shù)據(jù)技術(shù)在以下方面體現(xiàn)出了技術(shù)優(yōu)勢(shì),取得了良好的應(yīng)用成效。
(1)檢索速度快。系統(tǒng)在設(shè)計(jì)時(shí)力求從各個(gè)環(huán)節(jié)提高檢索速度,從高可用負(fù)載均衡及緩存技術(shù),到分布式多級(jí)互聯(lián)搜索架構(gòu),從元數(shù)據(jù)集中預(yù)索引,到內(nèi)存搜索和SSD閃存搜索,共同保證了大并發(fā)情況下對(duì)海量資源檢索的快速響應(yīng)。系統(tǒng)的設(shè)計(jì)目標(biāo)是具備每分鐘10萬(wàn)次以及峰值每秒鐘1萬(wàn)次的檢索請(qǐng)求處理能力,該性能指標(biāo)在系統(tǒng)上線前項(xiàng)目驗(yàn)收的性能測(cè)試以及系統(tǒng)上線后的第三方軟件測(cè)評(píng)機(jī)構(gòu)的性能測(cè)試中均得到了驗(yàn)證。在之后的讀者服務(wù)中,實(shí)際的用戶(hù)訪問(wèn)量遠(yuǎn)低于每分鐘10萬(wàn)次的高并發(fā)量,系統(tǒng)在檢索性能方面的優(yōu)勢(shì)也得到了很好的發(fā)揮,能夠做到即搜即得。
(2)動(dòng)態(tài)可伸縮設(shè)計(jì),方便擴(kuò)展。系統(tǒng)充分利用了分布式架構(gòu)的技術(shù)優(yōu)勢(shì),各個(gè)核心組件都可以根據(jù)需求單獨(dú)擴(kuò)展。前端服務(wù)平臺(tái)在16臺(tái)服務(wù)器上部署了64個(gè)頁(yè)面節(jié)點(diǎn),可以根據(jù)讀者訪問(wèn)量調(diào)整頁(yè)面節(jié)點(diǎn)數(shù)。內(nèi)存搜索集群為10組服務(wù)器,可以根據(jù)檢索并發(fā)量增加或減少服務(wù)器組數(shù),每組服務(wù)器中的檢索子節(jié)點(diǎn)為10臺(tái)大內(nèi)存服務(wù)器,共同承擔(dān)全量索引數(shù)據(jù)的存儲(chǔ),可以根據(jù)索引數(shù)據(jù)量的多少調(diào)整服務(wù)器的配置。目前,前端服務(wù)平臺(tái)和數(shù)據(jù)存儲(chǔ)與處理平臺(tái)的硬件資源還很充足,搜索集群子節(jié)點(diǎn)的內(nèi)存資源已接近飽和,將采取硬件擴(kuò)充的方式擴(kuò)展其容量。
(3)分析挖掘用戶(hù)行為數(shù)據(jù),實(shí)現(xiàn)個(gè)性化推薦。系統(tǒng)每天將前端服務(wù)平臺(tái)記錄的用戶(hù)行為日志收集到數(shù)據(jù)存儲(chǔ)與處理平臺(tái)中集中保存,目前已經(jīng)收集了自上線以來(lái)一千多天約為120G的用戶(hù)行為日志。系統(tǒng)定期對(duì)收集到的讀者行為日志進(jìn)行分析挖掘,通過(guò)為用戶(hù)的各種行為設(shè)定相應(yīng)的權(quán)重,根據(jù)用戶(hù)的行為軌跡生成用戶(hù)對(duì)資源評(píng)價(jià)的數(shù)據(jù)模型,并基于協(xié)同過(guò)濾推薦機(jī)制實(shí)現(xiàn)針對(duì)用戶(hù)和針對(duì)資源兩方面的相關(guān)資源推薦。
(4)數(shù)據(jù)處理和索引構(gòu)建不影響讀者服務(wù)。系統(tǒng)設(shè)計(jì)為前端服務(wù)平臺(tái)與數(shù)據(jù)存儲(chǔ)與處理平臺(tái)分離,讀者服務(wù)與數(shù)據(jù)處理、索引構(gòu)建采用不同的核心組件支撐,因而在數(shù)據(jù)處理和索引構(gòu)建時(shí)不會(huì)影響讀者服務(wù)。在向搜索集群更新構(gòu)建好的索引文件時(shí),采用分批分組更新的模式,也不會(huì)造成服務(wù)的中斷。
(5)系統(tǒng)和數(shù)據(jù)的安全可靠性高,系統(tǒng)運(yùn)行穩(wěn)定。在系統(tǒng)部署方面,近400臺(tái)服務(wù)器單獨(dú)組網(wǎng),與其他業(yè)務(wù)系統(tǒng)物理隔離,通過(guò)一臺(tái)跳板機(jī)進(jìn)行內(nèi)部管理,采用密碼口令和服務(wù)器密鑰文件相結(jié)合的方式進(jìn)行訪問(wèn)控制,從而增強(qiáng)了系統(tǒng)的安全性。此外,在系統(tǒng)部署時(shí),充分利用了分布式架構(gòu)的優(yōu)點(diǎn),在各個(gè)模塊的重要節(jié)點(diǎn)都部署了冗余服務(wù)器,使得個(gè)別服務(wù)器故障不會(huì)影響系統(tǒng)運(yùn)行,從而增強(qiáng)了系統(tǒng)的可靠性。在數(shù)據(jù)安全方面,對(duì)于元數(shù)據(jù)、索引數(shù)據(jù)、頁(yè)面顯示數(shù)據(jù)以及用戶(hù)行為數(shù)據(jù)等各種類(lèi)型的數(shù)據(jù),系統(tǒng)都采用了分布式、冗余的數(shù)據(jù)存儲(chǔ)方案,各類(lèi)數(shù)據(jù)都能夠自動(dòng)進(jìn)行備份,從而保證數(shù)據(jù)的安全可靠。此外,為應(yīng)對(duì)不斷進(jìn)行數(shù)據(jù)更新存在的風(fēng)險(xiǎn),系統(tǒng)保留了歷次更新的索引數(shù)據(jù),一旦更新數(shù)據(jù)存在問(wèn)題,可以快速回退到上一次更新數(shù)據(jù),從而保證在短時(shí)間內(nèi)恢復(fù)服務(wù)。系統(tǒng)的安全可靠性在近3年的實(shí)際運(yùn)行中得到檢驗(yàn),系統(tǒng)自上線以來(lái),在全年開(kāi)館日全天候地提供了持續(xù)穩(wěn)定的讀者服務(wù)。
4.2 存在的制約
(1)不支持元數(shù)據(jù)的實(shí)時(shí)在線修改。由于Hadoop比較適合一次寫(xiě)入和多次讀取數(shù)據(jù)的應(yīng)用,根據(jù)系統(tǒng)的設(shè)計(jì)理念,基于Hadoop的元數(shù)據(jù)倉(cāng)儲(chǔ)中的元數(shù)據(jù)是通過(guò)批量灌裝的方式導(dǎo)入的,經(jīng)過(guò)一系列數(shù)據(jù)處理生成統(tǒng)一格式的元數(shù)據(jù)保存在Hbase數(shù)據(jù)庫(kù)中。而提供服務(wù)的簡(jiǎn)要顯示元數(shù)據(jù)來(lái)自搜索集群中保存的索引數(shù)據(jù),詳細(xì)顯示元數(shù)據(jù)來(lái)自Cassandra數(shù)據(jù)庫(kù)中特有格式的數(shù)據(jù),它們分別是Hbase數(shù)據(jù)庫(kù)中的元數(shù)據(jù)經(jīng)過(guò)抽取索引和格式轉(zhuǎn)換得到的。因此,只要修改元數(shù)據(jù)就需要經(jīng)過(guò)數(shù)據(jù)導(dǎo)入、數(shù)據(jù)整合和數(shù)據(jù)轉(zhuǎn)換全過(guò)程,如果修改的是核心數(shù)據(jù)部分,還需要重抽索引,才能向讀者提供更新后的數(shù)據(jù)。因此,與存儲(chǔ)于單一關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)不同,“文津搜索”系統(tǒng)的數(shù)據(jù)不支持在線實(shí)時(shí)修改,只適于批量更新。
(2)URL鏈接信息未實(shí)現(xiàn)參數(shù)化配置。為向讀者提供到對(duì)象數(shù)據(jù)的鏈接以及到地方館OPAC系統(tǒng)的館藏鏈接,數(shù)據(jù)存儲(chǔ)與處理平臺(tái)對(duì)這些鏈接的URL信息進(jìn)行了整合。為提高服務(wù)效率,并考慮到Hadoop能夠進(jìn)行快速數(shù)據(jù)處理的優(yōu)勢(shì),數(shù)據(jù)存儲(chǔ)與處理平臺(tái)將URL信息整合到每條元數(shù)據(jù)中進(jìn)行保存,而未采用參數(shù)化配置的方式,因而URL信息的修改不夠靈活,一旦鏈接地址發(fā)生變化,需對(duì)整個(gè)資源庫(kù)的URL數(shù)據(jù)或該地方館的館藏鏈接數(shù)據(jù)逐條進(jìn)行更新。
(3)不適用于小型圖書(shū)館單獨(dú)部署。“文津搜索”系統(tǒng)是針對(duì)提供海量資源檢索服務(wù)的需求設(shè)計(jì)的,其分布式集群平臺(tái)的搭建最少也需要數(shù)十臺(tái)服務(wù)器,內(nèi)存搜索集群等服務(wù)器還有大內(nèi)存的要求,即使采用造價(jià)相對(duì)低廉的PC服務(wù)器,也需要一定的硬件開(kāi)銷(xiāo)。因此,“文津搜索”系統(tǒng)設(shè)計(jì)的三種推廣復(fù)用模式中,縮小版整體部署方式不適用于資源有限的小型圖書(shū)館。對(duì)于這種類(lèi)型的圖書(shū)館,建議采用前端接口方式或云平臺(tái)應(yīng)用方式。
目前,大數(shù)據(jù)技術(shù)已經(jīng)被越來(lái)越多的行業(yè)用來(lái)處理海量數(shù)據(jù),它能夠有效地利用分布式和并行技術(shù),結(jié)合各種NoSQL數(shù)據(jù)庫(kù),解決海量數(shù)據(jù)帶來(lái)的數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理和數(shù)據(jù)挖掘等問(wèn)題,不僅展現(xiàn)出高性能和高可用性的優(yōu)勢(shì),而且具有良好的可擴(kuò)展性和容錯(cuò)性。隨著圖書(shū)館數(shù)字資源量的迅速增長(zhǎng),在采用傳統(tǒng)數(shù)據(jù)管理技術(shù)遇到瓶頸時(shí),可以考慮采用大數(shù)據(jù)技術(shù),它為海量資源的數(shù)據(jù)管理提供了全新的解決方案。在圖書(shū)館資源服務(wù)領(lǐng)域應(yīng)用大數(shù)據(jù)技術(shù)時(shí),既要充分發(fā)揮其技術(shù)優(yōu)勢(shì),又要針對(duì)其技術(shù)局限性制定合理的應(yīng)對(duì)方案,必要時(shí)還可以與傳統(tǒng)數(shù)據(jù)管理技術(shù)相結(jié)合,以實(shí)現(xiàn)對(duì)海量數(shù)字資源科學(xué)有效的管理,力爭(zhēng)為廣大讀者提供優(yōu)質(zhì)高效的數(shù)字資源服務(wù)。
[1] 包凌,蔣穎.圖書(shū)館統(tǒng)一資源發(fā)現(xiàn)系統(tǒng)的比較研究[J].情報(bào)資料工作,2012,(5):67-72.
[2] 孫宇,張磊,劉煒.圖書(shū)館資源發(fā)現(xiàn)系統(tǒng)選型研究[J].圖書(shū)館雜志,2013,32(12):63-70.
[3] Hadoop [EB/OL]. [2015-10-01]. http://hadoop.apache.org/.
[4] NoSQL [EB/OL]. [2015-10-01]. http://nosql-database.org/.
[5] Nginx [EB/OL]. [2015-10-01]. http://nginx.org/en/.
[6] Apache Tomcat [EB/OL]. [2015-10-01]. http://tomcat.apache.org/.
[7] Redis [EB/OL]. [2015-10-01]. http://redis.io/.
[8] MongoDB for GIANT Ideas [EB/OL]. [2015-10-01]. https://www. mongodb.org/.
[9] Cassandra [EB/OL]. [2015-10-01]. http://cassandra.apache.org/.
[10] Memcached [EB/OL]. [2015-10-01]. http://memcached.org/.
[11] 李馮筱,羅高松.NoSQL理論體系及應(yīng)用[J].電信科學(xué),2012,28(12):23-30.
[12] 陸嘉恒.大數(shù)據(jù)挑戰(zhàn)與NoSQL數(shù)據(jù)庫(kù)技術(shù)[M].北京:電子工業(yè)出版社,2013:49-53,175,293.
[13] deRoos D, Eaton C, Lapis G, et al. Understanding Big Data: Analytics for Enterprise Class Hadoop and Streaming Data [M]. McGraw Hill, 2011: 54-55.
[14] Apache HBase [EB/OL]. [2015-10-01]. http://hbase.apache.org/.
[15] Apache ZooKeeper [EB/OL]. [2015-10-01]. http://zookeeper.apache. org/.
Application of Big Data Technology in Building Resource Discovery Platform: Taking Wenjin Retrieval System as an Example
ZHANG Hong
(National Library of China, Beijing 100081, China)
This paper illustrates the strategy and methodology of constructing resource discovery system applying big data technology, which involves Hadoop Distributed Framework and several NoSQL databases by taking Wenjin Retrieval System of National Library of China as an example. It analyses the technological advantages, practical appliance effectiveness as well as the limitation of Wenjin Retrieval System which is structured based on big data technology, and provides reference for the further utilization of big data technology in the field of digital resource service of libraries.
Big Data; Resource Discovery System; National Library of China; Wenjin Retrieval System
G250.74
10.3772/j.issn.1673-2286.2016.1.009
張紅,女,1965年生,國(guó)家圖書(shū)館高級(jí)工程師,研究方向:數(shù)字圖書(shū)館,E-mail:hong@nlc.cn。
2015-12-28)