蹇文燕 馮 敏 陳天策
基于SolrCloud的檔案管理系統(tǒng)
蹇文燕馮敏陳天策
隨著信息化、數(shù)字化的迅速發(fā)展,檔案管理系統(tǒng)的數(shù)據(jù)量日益增大,由此帶來了數(shù)據(jù)寫入與檢索速度低下的弊端。在建立檔案管理系統(tǒng)時(shí)引入SolrC loud技術(shù),即可解決這一制約檔案數(shù)字化、現(xiàn)代化發(fā)展的難題。
SolrC loud檔案管理系統(tǒng)
隨著檔案管理數(shù)字化的發(fā)展,電子數(shù)據(jù)的劇烈增長(zhǎng),檢索需求日益復(fù)雜,數(shù)據(jù)分析需要迫切,使得傳統(tǒng)的檔案管理系統(tǒng)已無力應(yīng)對(duì),而So rlc loud技術(shù)正好可以解決這一難題。
So lrCloud是So lr4.0版本以后基于So lr和Zookeeper的分布式搜索方案。So lrCloud是So lr的基于Zookeeper一種部署方式。So lr可以以多種方式部署,例如單機(jī)方式,多機(jī)M aster-Slave r方式。So lrCloud具有強(qiáng)大的擴(kuò)展能力和數(shù)據(jù)整合能力,而且最重要的是具有優(yōu)秀的全文檢索能力,可以最大限度的滿足檔案管理工作中的數(shù)據(jù)入庫和數(shù)據(jù)全面檢索的需求,對(duì)于千萬級(jí)的電子數(shù)據(jù)(包括OFFICE文檔、PDF文檔、純文本文檔、RAR壓縮文件和HTM L、XM L格式的網(wǎng)絡(luò)數(shù)據(jù))檢索速度平均都處于毫秒級(jí)別。
1.確保檔案的完整性
如檔案著錄時(shí)出現(xiàn)數(shù)據(jù)庫讀寫錯(cuò)誤、管理系統(tǒng)的程序崩潰或者斷網(wǎng)的情況等,可能會(huì)導(dǎo)致著錄數(shù)據(jù)未進(jìn)入檔案庫從而造成損失。實(shí)踐證明基于文件系統(tǒng)的檔案管理系統(tǒng)無法處理這種情況,而基于關(guān)系數(shù)據(jù)庫的系統(tǒng)也只能做到事務(wù)的回滾,不能做到事務(wù)的恢復(fù),而So lrCloud就可以解決這個(gè)問題。So lrCloud的任務(wù)是通過Zookeeper作為媒介發(fā)布的,So lrCloud接收到任務(wù)后,如果執(zhí)行任務(wù)時(shí)出現(xiàn)故障,在So lrCloud重啟后,Zookeepe r集群可以再次執(zhí)行這個(gè)未完成的任務(wù),并且對(duì)So lrCloud的所有服務(wù)器開始任務(wù)同步。這樣我們?cè)跈n案入庫時(shí),尤其是批量檔案入庫時(shí),就能更方便快捷的保障檔案的完整性。
2.具有自動(dòng)容錯(cuò)和數(shù)據(jù)備份的功能
基于文件系統(tǒng)的檔案管理系統(tǒng)和傳統(tǒng)的單機(jī)關(guān)系數(shù)據(jù)庫是沒有容錯(cuò)功能的,雖然o rac le RAC和SQL2012開始支持分布式的數(shù)據(jù)查詢方案和數(shù)據(jù)備份,但是關(guān)系數(shù)據(jù)庫是難以實(shí)現(xiàn)自動(dòng)容錯(cuò)的,如果在海量的檔案數(shù)據(jù)中進(jìn)行檢索,一臺(tái)機(jī)器的故障可能會(huì)造成需要的檔案信息無法檢索出來,這會(huì)對(duì)檔案利用工作造成很大的影響。而So lrCloud具有良好的容錯(cuò)和備份性能,它會(huì)對(duì)檔案數(shù)據(jù)索引進(jìn)行分片,并對(duì)每個(gè)分片創(chuàng)建多個(gè)Rep lication(副本數(shù)據(jù))。每個(gè)Rep lication都可以對(duì)外提供服務(wù)。一個(gè)Rep lication掛掉不會(huì)影響索引服務(wù)。更強(qiáng)大的是,它還能自動(dòng)的在其它機(jī)器上幫你把失敗機(jī)器上的索引Rep lication重建并投入使用。So lrCloud在查詢時(shí)會(huì)自動(dòng)負(fù)載均衡多個(gè)Rep lication。如果查詢壓力大,可以通過擴(kuò)展機(jī)器,增加Rep lication來減緩。
3.簡(jiǎn)便智能的數(shù)據(jù)管理和維護(hù)
關(guān)系數(shù)據(jù)庫在數(shù)據(jù)增大后,常常難以維護(hù),它需要極其專業(yè)的數(shù)據(jù)庫知識(shí),對(duì)數(shù)據(jù)進(jìn)行分區(qū),建立索引,甚至是優(yōu)化軟件的查詢方案或者插入方案。這無疑是一項(xiàng)復(fù)雜的工作,檔案管理人員通常是難以具有數(shù)據(jù)庫管理員的維護(hù)技術(shù),如果聘請(qǐng)專業(yè)的數(shù)據(jù)庫管理員或者與系統(tǒng)開發(fā)公司簽訂數(shù)據(jù)庫維護(hù)合同,會(huì)極大的增加了軟件系統(tǒng)的成本,難以符合現(xiàn)在檔案工作實(shí)際。而So lrC loud的維護(hù)是極其簡(jiǎn)單的,So lrCloud在檔案數(shù)據(jù)入庫的時(shí)候,自動(dòng)進(jìn)行數(shù)據(jù)的去重和索引的優(yōu)化,這就免去了后面的繁瑣的維護(hù)工作。如果索引數(shù)量實(shí)在太大,造成服務(wù)器性能降低的話,我們就需要對(duì)So lrCloud的集群進(jìn)行擴(kuò)展。當(dāng)增加硬件服務(wù)器后,只需要簡(jiǎn)單命令操作就可以對(duì)龐大的索引的進(jìn)行自動(dòng)分割,并不需要復(fù)雜的數(shù)據(jù)庫操作。如果我們需要備份檔案數(shù)據(jù),那么只需要直接拷貝So lrCloud的索引文件就能實(shí)現(xiàn),恢復(fù)也只需要用備份數(shù)據(jù)直接覆蓋現(xiàn)有的索引數(shù)據(jù),并再次啟動(dòng)So lrCloud節(jié)點(diǎn)就能完成,不需要專業(yè)的數(shù)據(jù)備份技術(shù)和備份方案。
4.So lrCloud是開源的項(xiàng)目
開源項(xiàng)目不但具有低成本的優(yōu)勢(shì),而且在功能上容易擴(kuò)展。隨著檔案管理系統(tǒng)的使用,新的需求、新的功能提出以后,以往的關(guān)系數(shù)據(jù)庫方案需要重新建立符合需求的數(shù)據(jù)庫,然后再對(duì)數(shù)據(jù)進(jìn)行備份和重新入庫,這個(gè)過程的經(jīng)濟(jì)成本和時(shí)間成本難以計(jì)算。而So lrCloud的改變是快捷的,只需更改配置文件就能增加或改變數(shù)據(jù)的存儲(chǔ)類型以滿足檔案管理需求,然后再利用高速的索引生成來重建整個(gè)檔案管理系統(tǒng)。
5.So lrCloud可以作為中間件
So lrCloud的最大的優(yōu)勢(shì)就是索引建立和查詢的簡(jiǎn)便性和高效性。如果我們已經(jīng)建立了昂貴的基于文件系統(tǒng)或者關(guān)系數(shù)據(jù)庫的檔案管理系統(tǒng),但是系統(tǒng)的查詢速度響應(yīng)時(shí)間太慢,我們也可以充分利用 So lrCloud的索引優(yōu)勢(shì),將So lrC loud作為中間件來優(yōu)化關(guān)系數(shù)據(jù)庫。用So lrCloud對(duì)關(guān)系數(shù)據(jù)生成索引后,讓So lrCloud去面對(duì)繁重的檢索工作,最后再讓關(guān)系數(shù)據(jù)庫來提供具體的檔案數(shù)據(jù)。如果我們有幾個(gè)檔案管理系統(tǒng),或者需要整合多個(gè)系統(tǒng)的資源,提供更全面的檔案檢索功能的話,也可以利用So lrCloud建立一個(gè)中間的索引數(shù)據(jù)庫來提供給查詢客戶端。
6.So lrCloud的全文檢索功能是 So lrCloud最具競(jìng)爭(zhēng)力的核心能力
傳統(tǒng)的關(guān)系數(shù)據(jù)庫,對(duì)于海量的、特別是其中內(nèi)容較大的文件進(jìn)行全文檢索操作,查詢時(shí)間的耗費(fèi)是巨大的。而且關(guān)系數(shù)據(jù)庫的中文分詞不完善,更是難以定制擴(kuò)展。而So lrCloud是開源,它具有很強(qiáng)的整合能力,我們可以使用“IK分詞”、“mm seg4 j”、“庖丁解?!钡乳_源分詞插件,甚至可以自己設(shè)計(jì)更為精確和人性化的檔案分詞插件,這個(gè)插件能定制系統(tǒng)中的特殊行業(yè)分詞,這樣檔案系統(tǒng)在全文檢索的時(shí)候會(huì)更加的迅速與精確。
7.So lrCloud提供優(yōu)秀的檢索命中率算法
檢索命中率可以根據(jù)自身的計(jì)分系統(tǒng)來排序,我們?cè)谶M(jìn)行全文檢索的時(shí)候,相似度越高的檔案會(huì)排在檢索結(jié)果的前面,這樣可以極大的便于檔案檢索人員迅速精確的查詢出所需的檔案,提高檢索效率。而傳統(tǒng)的檔案系統(tǒng)在命中多個(gè)檔案時(shí),就相形見絀了。同時(shí)檢索命中率使得我們對(duì)檔案系統(tǒng)的利用有了新的途徑,查詢命中率和查詢效果的統(tǒng)計(jì)分析可以使得我們對(duì)檔案系統(tǒng)的管理維護(hù)更有目的性,為后期的系統(tǒng)優(yōu)化提供可靠的決策支持。
So lrCloud是一組So lr服務(wù)器集群,我們需要將所有的檔案數(shù)據(jù)和檔案索引數(shù)據(jù)存放在每個(gè) So lr服務(wù)器中。So lr服務(wù)器我們稱為So lrCloud的物理節(jié)點(diǎn)。而So lrCloud的邏輯節(jié)點(diǎn)是管理節(jié)點(diǎn),數(shù)量通常與物理節(jié)點(diǎn)一致,當(dāng)然也可以多于物理節(jié)點(diǎn),本文采用一致的節(jié)點(diǎn)數(shù)量來進(jìn)行說明。
1.So lrCloud的檔案管理系統(tǒng)的整體架構(gòu)
(檔案管理系統(tǒng)的邏輯圖)
按照上圖,我們用三臺(tái)服務(wù)器來創(chuàng)建檔案管理系統(tǒng)(So lrCloud需要集群的數(shù)量為奇數(shù)個(gè)),并且創(chuàng)建三個(gè)邏輯分布式節(jié)點(diǎn),也就是說所有歸檔的檔案數(shù)據(jù)會(huì)分別存放在這三個(gè)邏輯節(jié)點(diǎn)中。其中,這三臺(tái)服務(wù)器部署了 Zookeepe r,由Zookeeper選出了三個(gè)Leade r,Leader負(fù)責(zé)直接處理具體的請(qǐng)求,Rep lica負(fù)責(zé)備份和容錯(cuò),并且這三臺(tái)機(jī)器都有兩個(gè)副本Rep lica。Leade r和Rep lica是Zookeepe r選舉的。每當(dāng)So lrCloud重啟后,這三臺(tái)機(jī)器上的任何一個(gè)原來的Rep lica都可能變成Leade r,原來的Leader也可能會(huì)變成Rep lica,但是在每臺(tái)機(jī)器中選出一個(gè)Leade r,這與shard數(shù)量對(duì)應(yīng)。這個(gè)方案搭建的檔案管理系統(tǒng),三臺(tái)機(jī)器中的任何兩臺(tái)故障都不影響系統(tǒng)的使用,同時(shí)在故障機(jī)器恢復(fù)正常后,三臺(tái)機(jī)器中所有副本都會(huì)同步到最新。從這點(diǎn)我們就可以發(fā)現(xiàn)So lrCloud的工作模式本身就具有極強(qiáng)的容錯(cuò)性能來保障檔案數(shù)據(jù)的完整。
2.So lrCloud的檔案管理系統(tǒng)的檔案入庫過程
檔案管理系統(tǒng)在檔案入庫時(shí),檔案入庫終端可以將任何檔案數(shù)據(jù)提交個(gè)任一Rep lica,如果他不是Leade r,它會(huì)把請(qǐng)求轉(zhuǎn)給和自己同Shard的Leade r生成索引,Leader再把生成索引的副本給本Shard的每個(gè)Rep lica。入庫的檔案數(shù)據(jù)是根據(jù)唯一ID的hash值來選擇Shard的,如果提交的檔案數(shù)據(jù)不屬于本Shard,Leade r會(huì)把它轉(zhuǎn)給對(duì)應(yīng)的Shard的Leade r生成索引,對(duì)應(yīng)Leade r再把生成索引的副本給本Shard的每個(gè)Rep lica。檔案入庫過程有三點(diǎn):一是一份檔案數(shù)據(jù),有兩個(gè)備份數(shù)據(jù),任何兩個(gè)數(shù)據(jù)順壞或丟失,不影響系統(tǒng)的正常工作;二是檔案入庫時(shí)檔案數(shù)據(jù)是根據(jù)唯一ID的hash值確定了檔案的唯一性,數(shù)據(jù)自動(dòng)去重在整合檔案資源,提高檢索命中率是很有幫助的;三是檔案入庫時(shí)均衡入庫,三個(gè)服務(wù)器中的副本是均衡的,入庫的檔案數(shù)據(jù)是根據(jù)唯一ID的hash值確定了檔案在哪個(gè)服務(wù)器中保存,均衡入庫的好處是提高查詢效率
3.So lrC loud的檔案管理系統(tǒng)的檔案檢索過程
檔案檢索終端對(duì)檔案管理系統(tǒng)提出查詢請(qǐng)求時(shí),So lrCloud會(huì)根據(jù)Shard數(shù)量,將查詢轉(zhuǎn)化為多個(gè)子查詢(與Shard數(shù)量一致),每個(gè)子查詢返回查詢結(jié)果并返回給檔案檢索終端。這個(gè)查詢過程是分布式系統(tǒng)的通用模式。
1.So lrCloud優(yōu)化整合已有檔案系統(tǒng)的整體架構(gòu)
按照下圖,我們用多個(gè)服務(wù)器來搭建一個(gè)So lrCloud,So lrCloud并不關(guān)心檔案數(shù)據(jù)的入庫和存放過程,只關(guān)心提供給檔案查詢終端的索引檢索過程。
(SolrCloud優(yōu)化整合已有檔案系統(tǒng)邏輯圖)
2.So lrCloud優(yōu)化整合已有檔案系統(tǒng)的檔案入庫過程
檔案的入庫還是通過已經(jīng)建立的檔案系統(tǒng)完成,So lrCloud只是從已有的檔案管理服務(wù)器中按照設(shè)定的配置文件,提取索引和全文檢索內(nèi)容,然后再根據(jù)So lrCloud建立索引過程建立索引。這個(gè)過程值得注意的有兩點(diǎn):一是建立索引的過程是包括全文檢索內(nèi)容的,因此So lrCloud不僅僅是簡(jiǎn)單的索引優(yōu)化,而是全文檢索過程的優(yōu)化;二是So lrCloud建立的索引來自于已有的檔案管理系統(tǒng),每當(dāng)已有的檔案管理系統(tǒng)的數(shù)據(jù)變更時(shí),都需要觸發(fā)So lrCloud的差異同步模塊來完成索引建立。
3.So lrCloud優(yōu)化整合已有檔案系統(tǒng)的檔案檢索過程
檔案查詢終端進(jìn)行檢索時(shí),不是對(duì)已有的檔案管理系統(tǒng)進(jìn)行檢索,而是檢索So lrCloud。So lrCloud通過高效的全文檢索方案將查詢結(jié)果反饋給檔案查詢終端。如果查詢終端需要進(jìn)一步獲得檔案數(shù)據(jù),然后再通過So lrCloud提交已有的檔案管理系統(tǒng)中下載。
如何通過檔案管理系統(tǒng)來高效的利用檔案是現(xiàn)今值得探討的一個(gè)課題,本文在此不做詳細(xì)的介紹,只是以此來進(jìn)一步闡釋So lrCloud的其中優(yōu)勢(shì)。例如在查詢量的統(tǒng)計(jì)分析,查詢來源的統(tǒng)計(jì)分析,查詢關(guān)鍵字的統(tǒng)計(jì)分析,查詢覆蓋面與檔案數(shù)據(jù)的統(tǒng)計(jì)分析,查詢命中率和查詢效果的統(tǒng)計(jì)分析中傳統(tǒng)的檔案管理系統(tǒng)是可以實(shí)現(xiàn)其中的幾個(gè)模塊的,但是它們有一個(gè)致命的缺點(diǎn):系統(tǒng)不可分層。So lrCloud的靈活的分層特性給查詢終端提供了開闊的空間,和緩沖的時(shí)間,我們可以在這些空間和時(shí)間中進(jìn)一步提高檔案系統(tǒng)的利用率。查詢來源、查詢量和查詢關(guān)鍵字僅僅是通過So lrCloud來增加一個(gè)模塊就能完成,查詢覆蓋面與檔案數(shù)據(jù)、查詢命中率和查詢效果的統(tǒng)計(jì)分析也是So lrCloud依靠自身特性就能很好實(shí)現(xiàn)。
So lrCloud是一個(gè)分布式的集群檢索方案,對(duì)于今后海量的檔案數(shù)據(jù)來看,So lrCloud無疑提供了一條便捷高效的途徑。將So lrCloud應(yīng)用于檔案管理系統(tǒng),可以將傳統(tǒng)的系統(tǒng)性能極大的提升。如果在實(shí)踐中支持單點(diǎn)歸檔的方式,So lrCloud可以通過配置文件和程序設(shè)計(jì)的辦法做到海量數(shù)據(jù)的自動(dòng)歸檔與索引重建。這就相當(dāng)于只要原始的電子檔案存在,我們就可以將它變成一個(gè)檔案管理系統(tǒng),提供給檢索用戶。而傳統(tǒng)的基于文件系統(tǒng)或關(guān)系數(shù)據(jù)庫的檔案系統(tǒng)是沒有辦法短時(shí)間重建的。同時(shí)傳統(tǒng)的系統(tǒng)建設(shè)是機(jī)械的需求和設(shè)計(jì),它必須一開始就按照需求分析逐項(xiàng)建立,以后如果稍有更改或者增加模塊,那么就可能對(duì)整個(gè)系統(tǒng)帶來顛覆性的后果,而So lrC loud的分層特性能更好的應(yīng)對(duì)以后更多的多元化需求。
雖然So lrCloud具有強(qiáng)大的靈活性與兼容、高效性,但是So lrCloud也有兩個(gè)明顯的缺點(diǎn),一是So lrCloud的分布式主要體現(xiàn)在索引的存儲(chǔ)方式上,它對(duì)數(shù)據(jù)本身的存儲(chǔ)是沒有實(shí)現(xiàn)分布式存儲(chǔ)的。如果要在So lrCloud系統(tǒng)中存儲(chǔ)數(shù)據(jù),那么效率是低下的。但是數(shù)據(jù)的分布式解決方案對(duì)檔案系統(tǒng)而言相當(dāng)于系統(tǒng)重建,這失去了對(duì)已有數(shù)據(jù)整合利用的平滑功能。二是So lrCloud對(duì)精細(xì)的數(shù)據(jù)操作需要復(fù)雜的設(shè)計(jì)。例如,我們進(jìn)行條件過于繁雜的查詢統(tǒng)計(jì)時(shí),So lrCloud就必須進(jìn)行復(fù)雜設(shè)計(jì),因?yàn)镾o lrCloud沒有SQL語言的豐富性來完成用戶自由的查詢,必須通過程序設(shè)計(jì)的辦法來實(shí)現(xiàn)傳統(tǒng)關(guān)系數(shù)據(jù)庫中多表、多條件的聯(lián)合查詢、嵌套查詢等等。
檔案管理系統(tǒng)本身最重要的功能就是全文檢索,至于復(fù)雜查詢功能,通過So lrCloud的程序設(shè)計(jì)來實(shí)現(xiàn)也是可行的。復(fù)雜查詢應(yīng)用的場(chǎng)合大多是需要做報(bào)表統(tǒng)計(jì)或者數(shù)據(jù)分析時(shí),種類不多的復(fù)雜查詢,程序設(shè)計(jì)能夠解決的問題都不是什么難題。所以So lrCloud對(duì)于檔案的管理和查詢需求是極具優(yōu)勢(shì)的,正所謂瑕不掩瑜。
[1]蔡學(xué)鋒.基于Solr的搜索引擎核心技術(shù)研究與應(yīng)用[D].北京:計(jì)算機(jī)應(yīng)用技術(shù),2013.
[2]羅學(xué)禮等.電力企業(yè)的非結(jié)構(gòu)化數(shù)據(jù)檢索研究[J].計(jì)算機(jī)與數(shù)字工程,2014年04期.
[3]馮祥等.基于Solr的海量日志信息查詢性能優(yōu)化的研究[J].硅谷,2014年03期.
[4]aw nuxk jy.So lrC loud簡(jiǎn) 介 .[2015-9-11]. http://www.chepoo.com/so lrcloud-introduction.htm l
[5]余鎮(zhèn)源.SolrC loud學(xué)習(xí)研究筆記. [2015-9-12].http://so.csdn.net/so/search/s.do? ref=too lbar&q=solrcloud&ref=too lbar&q=solrcloud
作者單位:四川師范大學(xué)檔案館成都市成華區(qū)人民檢察院