滕愛國 譚晶 查易藝 陳飛園 吳震寰



摘要:近20年來,中子和同步加速器科學共同體一直希望有一種共同的數據格式,用于交換實驗結果和應用,以便減少數據、分析數據。使用HDF5作為數據載體已成為許多設施的標準。最大的問題是在HDF5內的數據組織(模式)的標準化。通過為數據訪問引入新的間接層:公共數據模型訪問(CDMA)框架,文章提出了一種解決方案,允許數據壓縮開發人員與研究所責任分離:數據壓縮開發人員負責數據簡化代碼;研究所提供訪問數據的插件。CDMA是一種核心API,它通過科學家和研究所共同認可的數據格式插件機制和科學的程序定義(關鍵字集合)來訪問數據。在應用程序定義和物理數據組織之間使用一種新型映射系統,CDMA允許數據壓縮程序獨立于數據文件載體和模式下開發。每個機構都為自己的數據文件格式開發一個數據訪問插件,以及程序定義和數據文件之間的映射。因此,數據壓縮程序可以從嚴格科學的角度開發,并能立即處理來自多個研究所的數據。
關鍵詞:公共數據模型訪問;數據分析;數據可視化;數據壓縮;字典機制
1 項目的起源
ESRF,SOLEIL,DESY和ANSTO軟件開發專注于數據處理框架的設計,并在NeXus(SOLEIL使用的標準數據格式)數據存儲層上運行[1]。協作的主要問題使用獨立于數據載體和模式的共同工具。通過使用一組Java接口的數據模型,在ANSTO上使用GumTree數據模型以在底層的NeXus文件(標準數據格式)中訪問抽象數據文件。我們預計這是一個很有前景的發展方向。
這個概念引起了SOLEIL的注意,因為它恰好需要在一個基于NeXus的統一的數據訪問層上建立它的COMETE項目,一個旨在緩解數據可視化和數據分析程序編程方面的問題Java框架。
2010年1月,在ICALEPCS 2009會議上兩位作者會面之后,ANSTO和SOLEIL開始合作。這項工作是從ANSTO的GumTree項目的數據訪問層開始的,用Java編寫。
在2011年第四季度,DESY將參與合作并幫助我們開發C++的CDMA端口。2動機分析
必須理解的重要一點是,數據格式不是問題。問題是如何讓我們研究所的用戶使用相同的工具,而不考慮數據的來源。
即使在相同的同步加速器或中子發施中,在通過光束線時數據結構也不盡相同。NeXus標準很有用,但還不足以保證一致性。對標準的解釋允許兩個相同的光束線具有不同的數據結構。
CDMA的目的是提供一個抽象的數據訪問層,以構建分析程序或壓縮程序,而不考慮數據結構。
類HDF的格式允許使用API[2]記錄任何類型的數據;抽象了物理文件組織。類NeXus規范是一組標準化工作中的邏輯數據組織。這種標準化可能適用于各種以樹為導向的數據格式(如HDF或XML)。這種方法的問題在于,設備必須生成嚴格遵守規范的數據文件。這是一個巨大的挑戰,因為每個設施的工組人員(主要是科學家和工程師)在采集系統和實驗相關數據方面都有自己的觀點,并且數據記錄系統很少驅動硬件和數據采集過程。
CDMA背后的想法是逆轉數據的觀點。與其不顧一切地使各個機構數據文件標準化,還不如引入一層來隱藏數據存儲的不同方式。我們覺得這是可實現的。
筆者建議使用NeXus標準。隨著標準的成熟,NeXusAPI可能會取代CDMA,盡管CDMA現在允許處理各種標準解釋,我們還是建議各個設備參與到NeXus的標準化進程中。
每個機構將繼續使用最合適的格式來產生數據。在進行兼并之前,不必等待最終的數據組織規范再共享數據和程序。
3 CDMA的介紹
CDMA的組成:(l)用于編寫數據壓縮和分析應用程序的客戶端層API。(2)用于構建數據訪問插件的開發者API。CDMA常規使用圖解如圖1所示。
客戶端API。使用客戶端API,數據壓縮程序開發人員不必了解任何關于文件格式的信息,因為API使用了一個抽象的數據訪問層,它隱藏了數據文件規范。 數據源插件。數據文件規范是通過插件機制嵌入的。因此,研究機構有責任開發他們的數據訪問插件,以便通過CDMA訪問其研究所獲得的數據集。
傳統導航API。不過,使用導航API,數據壓縮開發人員必須精確地知道應用程序訪問的每個數據文件中的數據模式。這很浪費時間。這也是這些項目在其開發組織之外使用的一個障礙。
字典機制。為了解決這個問題,CDMA引入了一種新的數據訪問方法。這就是字典機制[3]。
使用此機制,數據壓縮程序開發人員不再需要知道數據模式。而是使用關鍵字訪問數據。關鍵字是一個短字符串,用于命名科學測量或通用技術數據項。因此,訪問數據壓縮程序的源代碼部分更簡單、更穩定(這是最重要的)。
考慮到這一機制,科學家必須在關鍵字的名稱上達成一致,并不需要考慮數據的物理結構如何。此外,同樣的測量數據可能有不同的單位(例如波長和能量),所以CDMA提供了同步轉換機制。
需要注意的是,老式導航API仍然可用,但我們更加建議使用字典API。
3.1客戶端API
客戶端API定義了抽象數據源的接口。有3個層次的抽象:(1)頂層是IDataset接口,它代表一個實驗的所有數據處理。(2) IGroup(或ILogicaIGroup:如果使用字典機制,請參閱下文)定義了一組相關數據。每個數據集至少有一個根組;一個組可以包含子組和數據項。(3) IDataltem定義了單個值或量度,它可以是標量或多維數組。
有了數據訪問層,數組類可支持多維數組的高效操作。它不僅僅是一個原始的Java或C++數組。它是一個科學的數據對象,允許你分片或分塊并在此基礎上做數學運算。CDMA還提供了一個允許錯誤傳播的類,該錯誤對象提供了基于泊松統計數據的計數不確定性的傳播。這可以擴展到其他不確定性計算。
3.2數據源插件系統
使用CDMA庫,數據壓縮開發人員并不關心數據模式。插件機制動態地加載從數據文件中訪問數據的插件(動態庫)[4]。因此,該機制允許用戶在同一會話中打開從不同機構獲得的文件。
3.3字典機制
字典機制依賴于兩個XML文檔。
3.3.1數據定義
第一個文檔是匹配科學或技術數據項的關鍵字。例如,一個叫電流的鍵在采集時間應該指代存儲環中的有效電流。這些關鍵字可以通過這個文檔列出,或者通過樹狀結構來組織。在后一種情況下,這個文檔描述了一個特定于數據的視圖,比如NeXus應用程序定義[5]。
該文檔旨在獨立于數據的物理組織方式。這份文檔至少有兩種寫法:(1)它可以為已經存在的特定數據分析應用程序編寫,并適用于CDMA的使用。(2)或者它可以獨立于任何應用程序編寫,比如NeXus應用程序定義。數據定義舉例如圖2所示。
3.3.2關鍵字映射
第二個文檔是字典本身。它是關鍵字與真實路徑之間的映射。它需要在文件中準確地匹配數據模式。NeXus文件映射舉例如圖3所示。
3.3.3責任
給定一個關鍵字列表,產生實驗數據的研究所必須編寫與他們的數據文件結構相對應的映射文檔。
4 當前的狀態
實現CDMA有兩種方式:Java和C++。Java實現在實際操作中己十分成熟,并且已經可以在SVN Codehaus存儲庫中使用[6]。
ANSTO開發了一種基于Java版本的CDMA的數據瀏覽器[7],并將使用CDMA的4個中子束儀作為Gumtree生態系統的一部分。ANSTO上基于CDMA的數據瀏覽器如圖4所示。
在SOLEIL方面,基于CDMA的數據并用Java編寫的兩個數據壓縮程序,目前正在生產中,可用于SWING(SAX獲取)和NTARES(EXAFS,光電發射測量)[8]。一種在SOLEIL上使用CDMA的數據壓縮程序如圖5所示。
我們正在進行C++的實現,并計劃于2012年初發布。然后將根據這個C++的實現開發一個Python端口。
5結語
第一次使用CDMA的結果證明其非常有效。研究發現,由于開發人員不必再處理數據格式,開發新的數據壓縮程序所需的時間大大減少了。在技術方面,隨著新參與者(DESY, ANKA,…)的到來,我們建立了一個社區,可以通過擴大數據壓縮程序和數據源插件[9]的數量來快速發展這個項目,從而支持交叉研究所的實驗文件交換。
最后強調—下,我們始終相信CDMA是一個對數據管理問題[10]。說有價值的技術方案。隨著CDMA現在提供了一個一直希望得到的解決方案,即通過透明的方式交換機構之間的數據文件和數據分析程序,像PANDATA HDRI,NFFA等這樣的歐洲項目的數據管理問題都可被解決。
[參考文獻]
[1lMANJU NATN S.片上調試建立Nexus標準[J]電子設計技術,2000 (9):62,64,66.
[2]呂晨,姜偉,虎嵩林.一種基于新型圖模型的API推薦系統[J].計算機學報,2015 (11):2172-2187
[3]馬志強,周長勝,楊娜,等.基于中文搜索引擎的分詞詞典的設計與實現[J]鐵路計算機應用,2016 (12):45-47
[4l曹玉林,馬建萍.基于操作系統的動態庫分析及移植方法[J].西北民族大學學報(自然科學版),2004 (4):52-55
[5]姜文,劉立康.基于SVN的應用軟件持續集成[J]計算機測量與控制,2016 (3):109-113
[6]施健.通用數據瀏覽器的設計實現[J]計算機應用研究,1996 (6):53-54.
[7]張增坤,張德杰,張群興.光電發射光譜儀分析測量不確定度的評定[J].冶金標準化與質量,2014 (2):13-15.
[8]楊勇生.數據集成平臺中多數據源包裝器的實現[D].天津:天津大學,2008
[9]毛華,竇林立,楊蕾.樹狀結構組織的屬性優先的概念格漸進式算法[J]計算機工程與應用,2008 (27):65-68
[10]楊善林,周開樂.大數據中的管理問題:基于大數據的資源觀[J].管理科學學報,2015 (5):1-8.