蹇文燕 馮 敏 陳天策
基于SolrCloud的檔案管理系統
蹇文燕馮敏陳天策
隨著信息化、數字化的迅速發展,檔案管理系統的數據量日益增大,由此帶來了數據寫入與檢索速度低下的弊端。在建立檔案管理系統時引入SolrC loud技術,即可解決這一制約檔案數字化、現代化發展的難題。
SolrC loud檔案管理系統
隨著檔案管理數字化的發展,電子數據的劇烈增長,檢索需求日益復雜,數據分析需要迫切,使得傳統的檔案管理系統已無力應對,而So rlc loud技術正好可以解決這一難題。
So lrCloud是So lr4.0版本以后基于So lr和Zookeeper的分布式搜索方案。So lrCloud是So lr的基于Zookeeper一種部署方式。So lr可以以多種方式部署,例如單機方式,多機M aster-Slave r方式。So lrCloud具有強大的擴展能力和數據整合能力,而且最重要的是具有優秀的全文檢索能力,可以最大限度的滿足檔案管理工作中的數據入庫和數據全面檢索的需求,對于千萬級的電子數據(包括OFFICE文檔、PDF文檔、純文本文檔、RAR壓縮文件和HTM L、XM L格式的網絡數據)檢索速度平均都處于毫秒級別。
1.確保檔案的完整性
如檔案著錄時出現數據庫讀寫錯誤、管理系統的程序崩潰或者斷網的情況等,可能會導致著錄數據未進入檔案庫從而造成損失。實踐證明基于文件系統的檔案管理系統無法處理這種情況,而基于關系數據庫的系統也只能做到事務的回滾,不能做到事務的恢復,而So lrCloud就可以解決這個問題。So lrCloud的任務是通過Zookeeper作為媒介發布的,So lrCloud接收到任務后,如果執行任務時出現故障,在So lrCloud重啟后,Zookeepe r集群可以再次執行這個未完成的任務,并且對So lrCloud的所有服務器開始任務同步。這樣我們在檔案入庫時,尤其是批量檔案入庫時,就能更方便快捷的保障檔案的完整性。
2.具有自動容錯和數據備份的功能
基于文件系統的檔案管理系統和傳統的單機關系數據庫是沒有容錯功能的,雖然o rac le RAC和SQL2012開始支持分布式的數據查詢方案和數據備份,但是關系數據庫是難以實現自動容錯的,如果在海量的檔案數據中進行檢索,一臺機器的故障可能會造成需要的檔案信息無法檢索出來,這會對檔案利用工作造成很大的影響。而So lrCloud具有良好的容錯和備份性能,它會對檔案數據索引進行分片,并對每個分片創建多個Rep lication(副本數據)。每個Rep lication都可以對外提供服務。一個Rep lication掛掉不會影響索引服務。更強大的是,它還能自動的在其它機器上幫你把失敗機器上的索引Rep lication重建并投入使用。So lrCloud在查詢時會自動負載均衡多個Rep lication。如果查詢壓力大,可以通過擴展機器,增加Rep lication來減緩。
3.簡便智能的數據管理和維護
關系數據庫在數據增大后,常常難以維護,它需要極其專業的數據庫知識,對數據進行分區,建立索引,甚至是優化軟件的查詢方案或者插入方案。這無疑是一項復雜的工作,檔案管理人員通常是難以具有數據庫管理員的維護技術,如果聘請專業的數據庫管理員或者與系統開發公司簽訂數據庫維護合同,會極大的增加了軟件系統的成本,難以符合現在檔案工作實際。而So lrC loud的維護是極其簡單的,So lrCloud在檔案數據入庫的時候,自動進行數據的去重和索引的優化,這就免去了后面的繁瑣的維護工作。如果索引數量實在太大,造成服務器性能降低的話,我們就需要對So lrCloud的集群進行擴展。當增加硬件服務器后,只需要簡單命令操作就可以對龐大的索引的進行自動分割,并不需要復雜的數據庫操作。如果我們需要備份檔案數據,那么只需要直接拷貝So lrCloud的索引文件就能實現,恢復也只需要用備份數據直接覆蓋現有的索引數據,并再次啟動So lrCloud節點就能完成,不需要專業的數據備份技術和備份方案。
4.So lrCloud是開源的項目
開源項目不但具有低成本的優勢,而且在功能上容易擴展。隨著檔案管理系統的使用,新的需求、新的功能提出以后,以往的關系數據庫方案需要重新建立符合需求的數據庫,然后再對數據進行備份和重新入庫,這個過程的經濟成本和時間成本難以計算。而So lrCloud的改變是快捷的,只需更改配置文件就能增加或改變數據的存儲類型以滿足檔案管理需求,然后再利用高速的索引生成來重建整個檔案管理系統。
5.So lrCloud可以作為中間件
So lrCloud的最大的優勢就是索引建立和查詢的簡便性和高效性。如果我們已經建立了昂貴的基于文件系統或者關系數據庫的檔案管理系統,但是系統的查詢速度響應時間太慢,我們也可以充分利用 So lrCloud的索引優勢,將So lrC loud作為中間件來優化關系數據庫。用So lrCloud對關系數據生成索引后,讓So lrCloud去面對繁重的檢索工作,最后再讓關系數據庫來提供具體的檔案數據。如果我們有幾個檔案管理系統,或者需要整合多個系統的資源,提供更全面的檔案檢索功能的話,也可以利用So lrCloud建立一個中間的索引數據庫來提供給查詢客戶端。
6.So lrCloud的全文檢索功能是 So lrCloud最具競爭力的核心能力
傳統的關系數據庫,對于海量的、特別是其中內容較大的文件進行全文檢索操作,查詢時間的耗費是巨大的。而且關系數據庫的中文分詞不完善,更是難以定制擴展。而So lrCloud是開源,它具有很強的整合能力,我們可以使用“IK分詞”、“mm seg4 j”、“庖丁解牛”等開源分詞插件,甚至可以自己設計更為精確和人性化的檔案分詞插件,這個插件能定制系統中的特殊行業分詞,這樣檔案系統在全文檢索的時候會更加的迅速與精確。
7.So lrCloud提供優秀的檢索命中率算法
檢索命中率可以根據自身的計分系統來排序,我們在進行全文檢索的時候,相似度越高的檔案會排在檢索結果的前面,這樣可以極大的便于檔案檢索人員迅速精確的查詢出所需的檔案,提高檢索效率。而傳統的檔案系統在命中多個檔案時,就相形見絀了。同時檢索命中率使得我們對檔案系統的利用有了新的途徑,查詢命中率和查詢效果的統計分析可以使得我們對檔案系統的管理維護更有目的性,為后期的系統優化提供可靠的決策支持。
So lrCloud是一組So lr服務器集群,我們需要將所有的檔案數據和檔案索引數據存放在每個 So lr服務器中。So lr服務器我們稱為So lrCloud的物理節點。而So lrCloud的邏輯節點是管理節點,數量通常與物理節點一致,當然也可以多于物理節點,本文采用一致的節點數量來進行說明。
1.So lrCloud的檔案管理系統的整體架構

(檔案管理系統的邏輯圖)
按照上圖,我們用三臺服務器來創建檔案管理系統(So lrCloud需要集群的數量為奇數個),并且創建三個邏輯分布式節點,也就是說所有歸檔的檔案數據會分別存放在這三個邏輯節點中。其中,這三臺服務器部署了 Zookeepe r,由Zookeeper選出了三個Leade r,Leader負責直接處理具體的請求,Rep lica負責備份和容錯,并且這三臺機器都有兩個副本Rep lica。Leade r和Rep lica是Zookeepe r選舉的。每當So lrCloud重啟后,這三臺機器上的任何一個原來的Rep lica都可能變成Leade r,原來的Leader也可能會變成Rep lica,但是在每臺機器中選出一個Leade r,這與shard數量對應。這個方案搭建的檔案管理系統,三臺機器中的任何兩臺故障都不影響系統的使用,同時在故障機器恢復正常后,三臺機器中所有副本都會同步到最新。從這點我們就可以發現So lrCloud的工作模式本身就具有極強的容錯性能來保障檔案數據的完整。
2.So lrCloud的檔案管理系統的檔案入庫過程
檔案管理系統在檔案入庫時,檔案入庫終端可以將任何檔案數據提交個任一Rep lica,如果他不是Leade r,它會把請求轉給和自己同Shard的Leade r生成索引,Leader再把生成索引的副本給本Shard的每個Rep lica。入庫的檔案數據是根據唯一ID的hash值來選擇Shard的,如果提交的檔案數據不屬于本Shard,Leade r會把它轉給對應的Shard的Leade r生成索引,對應Leade r再把生成索引的副本給本Shard的每個Rep lica。檔案入庫過程有三點:一是一份檔案數據,有兩個備份數據,任何兩個數據順壞或丟失,不影響系統的正常工作;二是檔案入庫時檔案數據是根據唯一ID的hash值確定了檔案的唯一性,數據自動去重在整合檔案資源,提高檢索命中率是很有幫助的;三是檔案入庫時均衡入庫,三個服務器中的副本是均衡的,入庫的檔案數據是根據唯一ID的hash值確定了檔案在哪個服務器中保存,均衡入庫的好處是提高查詢效率
3.So lrC loud的檔案管理系統的檔案檢索過程
檔案檢索終端對檔案管理系統提出查詢請求時,So lrCloud會根據Shard數量,將查詢轉化為多個子查詢(與Shard數量一致),每個子查詢返回查詢結果并返回給檔案檢索終端。這個查詢過程是分布式系統的通用模式。
1.So lrCloud優化整合已有檔案系統的整體架構
按照下圖,我們用多個服務器來搭建一個So lrCloud,So lrCloud并不關心檔案數據的入庫和存放過程,只關心提供給檔案查詢終端的索引檢索過程。

(SolrCloud優化整合已有檔案系統邏輯圖)
2.So lrCloud優化整合已有檔案系統的檔案入庫過程
檔案的入庫還是通過已經建立的檔案系統完成,So lrCloud只是從已有的檔案管理服務器中按照設定的配置文件,提取索引和全文檢索內容,然后再根據So lrCloud建立索引過程建立索引。這個過程值得注意的有兩點:一是建立索引的過程是包括全文檢索內容的,因此So lrCloud不僅僅是簡單的索引優化,而是全文檢索過程的優化;二是So lrCloud建立的索引來自于已有的檔案管理系統,每當已有的檔案管理系統的數據變更時,都需要觸發So lrCloud的差異同步模塊來完成索引建立。
3.So lrCloud優化整合已有檔案系統的檔案檢索過程
檔案查詢終端進行檢索時,不是對已有的檔案管理系統進行檢索,而是檢索So lrCloud。So lrCloud通過高效的全文檢索方案將查詢結果反饋給檔案查詢終端。如果查詢終端需要進一步獲得檔案數據,然后再通過So lrCloud提交已有的檔案管理系統中下載。
如何通過檔案管理系統來高效的利用檔案是現今值得探討的一個課題,本文在此不做詳細的介紹,只是以此來進一步闡釋So lrCloud的其中優勢。例如在查詢量的統計分析,查詢來源的統計分析,查詢關鍵字的統計分析,查詢覆蓋面與檔案數據的統計分析,查詢命中率和查詢效果的統計分析中傳統的檔案管理系統是可以實現其中的幾個模塊的,但是它們有一個致命的缺點:系統不可分層。So lrCloud的靈活的分層特性給查詢終端提供了開闊的空間,和緩沖的時間,我們可以在這些空間和時間中進一步提高檔案系統的利用率。查詢來源、查詢量和查詢關鍵字僅僅是通過So lrCloud來增加一個模塊就能完成,查詢覆蓋面與檔案數據、查詢命中率和查詢效果的統計分析也是So lrCloud依靠自身特性就能很好實現。
So lrCloud是一個分布式的集群檢索方案,對于今后海量的檔案數據來看,So lrCloud無疑提供了一條便捷高效的途徑。將So lrCloud應用于檔案管理系統,可以將傳統的系統性能極大的提升。如果在實踐中支持單點歸檔的方式,So lrCloud可以通過配置文件和程序設計的辦法做到海量數據的自動歸檔與索引重建。這就相當于只要原始的電子檔案存在,我們就可以將它變成一個檔案管理系統,提供給檢索用戶。而傳統的基于文件系統或關系數據庫的檔案系統是沒有辦法短時間重建的。同時傳統的系統建設是機械的需求和設計,它必須一開始就按照需求分析逐項建立,以后如果稍有更改或者增加模塊,那么就可能對整個系統帶來顛覆性的后果,而So lrC loud的分層特性能更好的應對以后更多的多元化需求。
雖然So lrCloud具有強大的靈活性與兼容、高效性,但是So lrCloud也有兩個明顯的缺點,一是So lrCloud的分布式主要體現在索引的存儲方式上,它對數據本身的存儲是沒有實現分布式存儲的。如果要在So lrCloud系統中存儲數據,那么效率是低下的。但是數據的分布式解決方案對檔案系統而言相當于系統重建,這失去了對已有數據整合利用的平滑功能。二是So lrCloud對精細的數據操作需要復雜的設計。例如,我們進行條件過于繁雜的查詢統計時,So lrCloud就必須進行復雜設計,因為So lrCloud沒有SQL語言的豐富性來完成用戶自由的查詢,必須通過程序設計的辦法來實現傳統關系數據庫中多表、多條件的聯合查詢、嵌套查詢等等。
檔案管理系統本身最重要的功能就是全文檢索,至于復雜查詢功能,通過So lrCloud的程序設計來實現也是可行的。復雜查詢應用的場合大多是需要做報表統計或者數據分析時,種類不多的復雜查詢,程序設計能夠解決的問題都不是什么難題。所以So lrCloud對于檔案的管理和查詢需求是極具優勢的,正所謂瑕不掩瑜。
[1]蔡學鋒.基于Solr的搜索引擎核心技術研究與應用[D].北京:計算機應用技術,2013.
[2]羅學禮等.電力企業的非結構化數據檢索研究[J].計算機與數字工程,2014年04期.
[3]馮祥等.基于Solr的海量日志信息查詢性能優化的研究[J].硅谷,2014年03期.
[4]aw nuxk jy.So lrC loud簡 介 .[2015-9-11]. http://www.chepoo.com/so lrcloud-introduction.htm l
[5]余鎮源.SolrC loud學習研究筆記. [2015-9-12].http://so.csdn.net/so/search/s.do? ref=too lbar&q=solrcloud&ref=too lbar&q=solrcloud
作者單位:四川師范大學檔案館成都市成華區人民檢察院