李鵬程 劉應波, 王 鋒 文若瑾
1(昆明理工大學計算機技術應用重點實驗室 云南 昆明 650504)2(云南省科學技術情報研究院 云南 昆明 650051)
云南省科學技術情報研究院已建成包括科技文獻服務平臺、科學數據共享平臺、大型科學儀器數據庫等多個支撐云南省科技創新和科技服務管理需要的科技信息資源綜合服務平臺和數據庫。其中科技文獻服務管理平臺的數據量已經達到30 TB規模,包含與云南科技管理服務需要的8個相關子庫,合計超過4億條文獻信息數據,且每年正在以2千多萬條的速率增長。這些數據資源從來源形式、數據格式、數據類型、服務方式、數據管理方式等方面體現出極大的異構性、分散性以及海量性。這些特性導致了科技文獻信息資源在服務過程中出現整合度不高、利用率低以及難以共享等缺點,特別是在大數據環境下,為異構數據資源的數據挖掘以及綜合服務帶來了巨大的影響。如何有效地對其進行描述和統一存儲是科技文獻信息資源服務應用的基礎,也是當前必須解決的問題。
目前,這些數據大多以關系型數據庫存儲為主,隨著數據量的增長,分庫、分表的問題越來越顯著,對數據管理的挑戰也越來越嚴峻。因此,急需研究探索新型的異構科技文獻信息資源的整合方法和存儲模式。特別是大數據環境下,如何利用非結構化數據庫來存儲異構科技文獻資源,滿足它們分散、異構和海量等特性的需求也變得越來越重要。
非結構化數據庫NoSQL[1-3]被認為是應對大數據應用挑戰,解決大規模數據集合存儲和管理的有效方案[4],已經得到了廣泛應用,如文獻[4-8]。國內外對科技文獻領域內的NoSQL存儲研究的文獻較少,研究工作幾乎都是在傳統關系型數據庫平臺上,如文獻[9, 10],對于異構科技文獻資源的存儲研究,江云等[11]論述了基于NoSQL的圖書館異構數據集成方式,提出了將異構數據進行包裝對外提供統一的數據訪問服務。溫浩宇等[12]提出了基于NoSQL中間件模型的數據基礎方法,能夠有利于數字圖書館存儲各種結構的數據。張紅[13]闡述了國家圖書館在構建“文津搜索”系統服務平臺時,結合各種NoSQL數據庫,解決海量數據帶來的數據采集、數據存儲、數據處理和數據挖掘等問題。在異構科技文獻整合方面,衛軍朝對山西高校科技文獻數據庫進行了異構整合[14]。曹畋[15]通過大數據技術中的服務數據對象SDO(Service Data Objects)技術大大簡化了異構數據統一訪問的難題。王石榴等[16]提出利用語義Web解決科技期刊元數據異構共享問題的具體方案。
綜合來看目前科技文獻領域的主要研究工作集中在:1) 基于XML的文獻信息資源整合,缺乏全面的異構數據模式分析及實現;2) NoSQL論述性及體系結構對比研究,缺乏具體針對性實例;3) 關系型數據庫平臺上的異構科技文獻服務,缺乏大數據支持研究。
當前科技服務部門通常會構建并整合來自多個機構部門的科技數據信息資源,需要建立海量數據存儲及管理服務系統,能夠有效管理億級別的文獻數據,其中關鍵技術是如何對海量異構的科技文獻數據進行描述以及如何存儲這些描述數據。本文針對這兩方面的問題,從非關系型數據庫的數據模式角度開展如何描述異構的科技文獻信息資源,以及研究如何有效存儲這些描述數據。
1.1 科技文獻信息資源特征
科技文獻信息資源主要包括科技圖書、科技期刊、科技報告、會議文獻、專利文獻、標準文獻、學位論文、產品資料以及技術檔案等,是網絡環境下較為便捷的資源表現方式,從資源本身來看具有如下幾方面的特征。1) 文獻資源的規范性。文獻資源的組織形式通常具有一定的規范性。例如文獻的標題、摘要、關鍵字等。2) 資源之間的關聯性。文獻之間通常以某種規范的引用方式相互聯系,例如,期刊論文的引用信息。3) 描述文獻資源的元數據信息具有結構化特征,而文獻本身一般屬于非結構化數據。
1.2 科技文獻元數據
通常來說,元數據的提取及辨識是提供資源檢索的直接方式。元數據又稱中介數據,主要用于描述數據的屬性,為了進一步加強數據交互,提供更強的數據共享、管理和檢索服務,目前國內外已經制定了一些通用性的元數據規范,例如Dublin Core、PICS、Web Collections等。國際標準(ISO)和國家標準(GB)均對不同類型的資源有不同的元數據規范準則。雖然科技文獻的元數據具有相關的規范標準,但是各家機構所參照的元數據標準不一樣,再加上自身的一些特色信息,導致了即便是基于元數據標準,但是依然會有差異性的存在。例如專家元數據包括:姓名、教育背景、最高學位、專業領域與研究方向、國內外學術或專業團體任職情況、院士、專家榮譽、專家特色等。而法規元數據包括:標題、發文文號、頒布部門、效力級別、效力代碼、時效性、批準日期、簽字日期、頒布日期、實施日期、失效日期等。
為了方便后續討論,首先對科技文獻進行抽象化描述:
定義科技文獻信息數據資源為二元組S:
S={M,C}
(1)
M為元數據描述信息,C為內容,其中M是由n個描述C的特征值f構成的集合:
M={f1,f2,…,fn}
(2)
可以把法規表示為:
(3)
為了便于表示,定義fref作為C的引用,加入到M特征集合中,用于描述C的位置信息。例如,文獻的存儲路徑或者網絡地址等。則文獻類型ST的元數據最終用下式描述:
Mst={f1,f2,…,fn,fref}
(4)
在強調特征量順序關系的時候,也可以表示成向量的形式:
VMst=[f1,f2,…,fn,fref]T
(5)
這樣可以很方便地獲得文獻的位置:
Posref=Size(VMst)-1
對于科技文獻信息資源的各種類型就可以很方便地描述如下:
很顯然,這種方式非常適合傳統關系型數據庫的關系模式存儲。每一種類型可以對應一張關系型數據庫的表,特征量對應于關系型數據庫中的字段,所有的類型則對應于一個規范的數據庫。這在異構的數據存儲過程中帶來了巨大的難度,因為不同數據庫對于每一類型的f定義不同,它在數據庫中的類型,長度存在很大的不同。所以造成了統一存儲的困難性,并且對應動態擴展f較為困難,一旦表結構發生變化,不可避免地要修改相應的應用程序。為了克服這種不足,本文采用Schema-Free的非結構化數據模型來存儲異構科技文獻數據。下面以Cassandra非關系型數據庫為例,研究存儲異構科技文獻信息資源的數據模式。
Cassandra[17]是一個開源的面向列的分布式非關系型數據庫,也可以把它看成4維的哈希結構構成的Key/Value數據模式(見圖1)。這種數據模式不需要像數據庫一樣預先設計Schema,可以非常方便地隨時進行模式更改、增加或者刪除字段,同時該數據庫具備高可用、高擴展的特點,研究將基于Cassandra構建異構科技文獻信息資源的數據存儲模型。

圖1 Cassandra數據模型
Cassandra表中的每個列都歸屬于某個列族。列族由邏輯容器Keyspaces裝載,每一個列族都被設計為一組數據關聯或排,用戶可以根據需求場景只保存所需數據,而不必拘泥于早前定義的表結構。通常我們用三種方式檢索Cassandra表中的數據,分別為:指定單個行鍵查詢、指定行鍵范圍查詢以及掃面(Scan)構成Cassandra表數據的四個核心基礎是Column Family(簡寫為CF)、Column Key(簡寫為CK)、Keyspaces還有RowKey。其特點是:鍵空間是Cassandra的數據容器,列族和列關鍵字都可以動態增長,一個列族可能包括若干列關鍵字。行的標識用RowKey表示。式(1)的關系型模型可以通過如下公式描述,表關系ψ有s個列族構成:
ψ={CFi|0≤i≤s}
(6)
列族i包含的k個列,表示如下:
CFij={CKj|0≤j≤k}
(7)
3.1 多列族
為了方便理解,列族可以想象成嵌套并排序的map,map可以進行高效查詢,同時排序的特性可以進行高效的Column掃描。在Cassandra中,可以使用RowKey和CK進行高效查詢和范圍掃描。式的關系如表1所示。表1是一種理論上的表示,列族可以無限制動態增加。

表1 Cassandra多列族科技文獻信息資源存儲
3.2 單列族
在對查詢性能要求不高的應用中,使用多列族的數據模型會額外增加數據查詢所需要的性能開銷。因此,大多數情況下,基于Cassandra的數據模型的創建同樣會考慮采用單列族的形式。使用單列族的方式如表2所示。

表2 Cassandra單列族科技文獻信息資源存儲
3.3 NoSQL數據適配器設計
目前,云南省科學技術情報研究院的科技文獻資源多數基于傳統的關系型數據庫實現例如SQLServer和MySQL。為了能夠利用大數據處理工具,如Hadoop、Spark等,需要把這些信息資源轉移到NoSQL上,本文設計了如下傳統SQL數據庫到NoSQL數據庫的數據轉換框架,如圖2所示。

圖2 數據轉換框架
該數據轉換框架主要由兩部分構成:數據傳輸模塊和NoSQL適配器模塊。其中NoSQL適配器主要包括:符號命名分析、視圖分析、結構分析、類型轉換、表關系分析以及類型檢測等功能。
各功能作用介紹如下:符號命名分析用于對現有SQL資源庫中的數據庫名字、表名、字段名進行分析并做相應的轉換以便于Cassandra進行處理;結構分析用于對SQL資源庫中的數據庫結構進行分析,統計數據庫中有多少個表、視圖以及字段從而可以根據這些分析對重復的字段進行預處理,以便于Cassandra處理重復的內容;視圖分析與表結構分析作用類似,只是專門針對視圖處理;表關系分析用于對SQL資源庫中的表之間的關系進行處理;類型轉換和類型檢測,由于SQLServer和MySQL之間存在很多不一致的字段,例如類型和長度等,這就需要結合Cassandra支持的數據字段對其進行分析。
從流程上來看,可以通過NoSQL數據類型適配器預先執行圖2中①,再通過數據傳輸方式,以每個庫中每個表為單位,以CSV文件的方式進行導出,然后通過Cassandra提供的相關工具導入到NoSQL中,如圖2中②。
實驗數據來源于云南省科學技術情報研究院所提供的科技文獻信息資源的元數據庫,其中包括期刊、會議、電子書籍等資源,并分別抽取了其中1千萬、5千萬和1億條記錄用以進行實驗,環境的構建使用表3的多列族數據模式。

表3 科技文獻在NoSQL中的數據模式
所有的實驗結果基于如下環境配置:5臺曙光天闊620R 4 GB內存服務器,希捷500 GB 7 200轉,SATA硬盤;其中4臺安裝 CentOS6.6操作系統,Cassandra 版本為3.9,由于Cassandra是多機環境。因此,實驗把MySQL搭建為集群的形式,版本MySQL Cluster 7.5.6,機器數量與Cassandra相同,二者均采用默認配置。適配器基于Python2.7實現,操作系統為Windows Server 2008 R2,適配器通過OLEDB的方式分析SQLServer的情況如表4所示。

表4 適配器數據導入性能
由表中數據可以看到在不同數據量時候的數據容量以及數據導入時間,其中數據導入平均速度為11 700條/秒。NoSQL適配器在不同數據量的情況下,性能都在350 ms左右,與數據量相關性不大,原因在于NoSQL適配器在執行的時候不需要讀取數據,只需要讀取關系型數據庫的數據庫結構元數據和非關系型數據庫的數據結構信息。因此,即使數據量很大,對數據庫表結構的元數據信息的影響也會較小。
數據導入完成后,接下來針對科技文獻信息資源檢索從不同角度對兩類數據庫進行的評估,如圖3、圖4、圖5所示。

(a)

(b)圖3 數據量和查詢維度不同時,科技文獻信息資源的檢索性能對比

(a)

(a)

(b)圖5 查詢維度和節點數不同時,科技文獻信息資源的檢索性能對比
圖3(a)根據節點數相同的情況,測試了兩種數據庫在如表3存儲科技文獻信息資源時,數據量不同的情況下性能的差異,從圖中可以看到Cassandra的檢索性能要優于MySQL。從圖4可以看出數據量和節點數均可導致數據庫的性能發生變化,例如在(b)中,在Cassandra中檢索科技文獻信息比在MySQL中檢索科技文獻信息的響應時間縮短了61%。從圖5(b)則可以看出,當數據量為5千萬時,節點數越多,Cassandra的數據檢索性能越優于MySQL。
通過本文設計的數據模式實驗來看,在集群節點數和查詢維度相同的情況下,在兩類數據庫中檢索科技文獻信息資源都會隨數據量的增多而使查詢速度變慢。但Cassandra數據庫的檢索性能所受的影響要小于MySQL數據庫,如圖3(a)和圖4(b)所示。因為Cassandra分別建立索引樹節點,每個節點分攤壓力,所以相對影響較小。MySQL數據庫采用共享內存的方式,索引較大,且多個進程同時增加數據,對索引形成巨大壓力,因此會導致其性能顯著下降。另外,Cassandra放棄強一致性,退而追求最終一致性,也是使其性能優異的主要原因。
在數據量和查詢維度相同的情況下,隨著集群節點數的增加,Cassandra檢索科技文獻信息資源需要的性能開銷明顯少于MySQL數據庫,如圖4(a)和圖5(b)所示。這一性能優勢來源于它的高水平擴展性。Cassandra可以隨時停用和啟用某個節點,相比于需要進行負載均衡的MySQL來說,只需要很少的性能開銷就可以做到系統的復制、新增等[18]。
結合如上幾組實驗結果,可以看出非關系型數據庫在處理科技文獻信息資源時的性能要高于關系型數據庫,驗證了用非關系型數據庫存儲科技文獻信息資源的可行性和高效性。
本文研究異構環境下科技文獻信息資源的描述模式及如何利用非關系型數據存儲這些描述的實現方式。首先對于異構科技文獻信息資源存儲中的問題進行了分析,并重點闡述了非結構化數據存儲模式的應用以及原理,為科技文獻信息資源的非結構化存儲提供了理論依據。然后設計了關系型數據庫的NoSQL適配器,能夠方便地融合現有存量關系型數據信息資源。最后基于真實的數據進行實驗,對比了非關系型數據庫和關系型數據庫在存儲具有分散、異構、動態、海量等特性的科技文獻數據時的性能差異,驗證了NoSQL適配器設計的合理性以及非關系型數據庫在科
技文獻領域應用中的高效性及可行性,所使用的研究方案能夠滿足當前科技文獻數據資源異構、分散及海量等特性需要。研究方法可以為其他領域的異構資源整合及應用提供借鑒和參考。
參考文獻
[1] 申德榮,于戈,王習特,等.支持大數據管理的NoSQL系統研究綜述[J].軟件學報,2013(8):1786-1803.
[2] Stonebraker M. SQL databases v. NoSQL databases[J]. Communications of the Acm, 2010,53(4):10-11.
[3] Cattell Rick. Scalable SQL and NoSQL data stores[J]. Acm Sigmod Record,2010, 39(4):12-27.
[4] Han M. The application of NoSQL database in Air Quality Monitoring[J]. Journal of Composite Materials,2015,49(6):685-697.
[5] 郭星. 基于Mongodb的分布式圖片存儲系統的研究及實現[D]. 北京:中國科學院大學,2015.
[6] 侯朋朋. 一種高性能NoSQL存儲系統的設計與實現[D]. 北京:中國科學院大學,2013.
[7] 田野,袁博,李廷力. 物聯網海量異構數據存儲與共享策略研究[J]. 電子學報,2016, 44(2):247-257.
[8] 王智慧. 基于NoSQL的智能電網數據云存儲研究及應用[D]. 河北:華北電力大學,2015.
[9] 王蘭成. 科技檔案異構數據整合及其檢索的研究[J]. 中國科技資源導刊,2009,41(5):36-41.
[10] 王文哲. 多源異構科技共享資源管理系統的研究與實現 [D]. 湖北:武漢理工大學,2012.
[11] 江云,李鳳蘭. 大數據在我國圖書館的應用及推進研究 [J]. 圖書館工作與研究,2014(6):35-41.
[12] 溫浩宇,李京京. 大數據時代的數字圖書館異構數據集成研究[J]. 情報雜志,2013(9):138-141.
[13] 張紅. 基于大數據技術的資源發現平臺構建——以國家圖書館“文津搜索”系統為例[J]. 數字圖書館論壇,2016 (1):61-67.
[14] 衛軍朝. 山西高校科技文獻平臺異構數據整合研究[D]. 山西:山西大學,2009.
[15] 曹畋. 大數據環境下的圖書館異構數據統一訪問與轉化系統[J]. 圖書館理論與實踐,2016(2):80-84.
[16] 王石榴, 謝文亮. 數字圖書館建設中科技期刊元數據異構共享研究[J]. 圖書館工作與研究,2015(2):53-56.
[17] Lakshman A,Malik P.Cassandra:a decentralized structured storage system[J]. Acm Sigops Operating Systems Review,2010,44(2):35-40.
[18] 胡超曄. 基于Cassandra數據庫集群的高并發讀寫系統的分析和應用研究[D]. 上海交通大學,2013.