鐘守波,韓 波,張彥霞,趙永恒,何勃亮
(1. 武漢大學(xué)國際軟件學(xué)院,湖北 武漢 430079;2. 中國科學(xué)院光學(xué)天文重點(diǎn)實驗室(國家天文臺),北京 100012)
天文大數(shù)據(jù)管理工具的設(shè)計與實現(xiàn)*
鐘守波1,2,韓 波1,張彥霞2,趙永恒2,何勃亮2
(1. 武漢大學(xué)國際軟件學(xué)院,湖北 武漢 430079;2. 中國科學(xué)院光學(xué)天文重點(diǎn)實驗室(國家天文臺),北京 100012)
隨著大型地面和空間觀測設(shè)備的建設(shè)以及大型巡天項目的開展,天文數(shù)據(jù)以TB字節(jié)、PB字節(jié),甚至EB字節(jié)計量,天文學(xué)進(jìn)入了 “大數(shù)據(jù)” 時代。面對數(shù)據(jù)海洋,如何有效地存儲和管理這些大數(shù)據(jù)是擺在天文學(xué)家面前的核心問題。數(shù)據(jù)存儲和管理不僅僅是天文數(shù)據(jù)中心的任務(wù),天文學(xué)家也需要有效地管理自己的科研數(shù)據(jù)。能夠?qū)⒑A康臄?shù)據(jù)自動地存入數(shù)據(jù)庫中是管理數(shù)據(jù)的基本前提,而高效的數(shù)據(jù)索引則是管理數(shù)據(jù)的核心要素,為此設(shè)計開發(fā)了天文大數(shù)據(jù)管理工具AutoDB,使用虛擬終端監(jiān)視實現(xiàn)海量數(shù)據(jù)的自動入庫,對數(shù)據(jù)自動創(chuàng)建全新的天空分區(qū)索引Q3C(Quad Tree Cube),對天文數(shù)據(jù)進(jìn)行二維空間索引以便于高效的管理。天文大數(shù)據(jù)管理工具的改進(jìn)和完善對天文學(xué)家后續(xù)研究中的數(shù)據(jù)融合、數(shù)據(jù)分析、數(shù)據(jù)挖掘提供了根本的保障,尤其對從事大數(shù)據(jù)的天文學(xué)家,擁有自動化的數(shù)據(jù)庫管理工具,可以集中精力致力于科學(xué)研究。
大數(shù)據(jù);數(shù)據(jù)庫;數(shù)據(jù)管理;數(shù)據(jù)文件
目前,天文技術(shù)的發(fā)展越來越快,高科技的天文設(shè)備、儀器的使用,使得天文數(shù)據(jù)的觀測已經(jīng)進(jìn)入 “大數(shù)據(jù)” 時代,每天產(chǎn)出海量的天文數(shù)據(jù)。在今后的數(shù)年內(nèi)天文數(shù)據(jù)將積累到PB量級,數(shù)據(jù)量的增加給天文學(xué)的研究帶來了希望,同時也帶來了新的挑戰(zhàn),量變引起質(zhì)變,數(shù)據(jù)量從GB躍升到PB后,需要更加高效的方法存儲、管理、分析和挖掘這些數(shù)據(jù)[1-5]。在海量科學(xué)數(shù)據(jù)時代,天文研究的過程中天文學(xué)家需要不斷地擴(kuò)展視野,增加知識,對數(shù)據(jù)進(jìn)行更加高效的組織、訪問、整合與挖掘,其中最基本的工作就是數(shù)據(jù)的高效存儲管理。所以高效快速地存儲管理海量的天文數(shù)據(jù),讓天文學(xué)家能夠快速地存儲并分析數(shù)據(jù),減少在技術(shù)上的使用障礙,變得越來越重要。在天文學(xué)界,天文工作者不斷地開發(fā)各種數(shù)據(jù)管理工具,最為流行的是SAADA*SAADA, http://amwdb.u-strasbg.fr/saada/數(shù)據(jù)生成工具,支持轉(zhuǎn)換FITS文件或者其他的存儲格式(圖片、表格、光譜)來創(chuàng)建SAADADB數(shù)據(jù)庫,同時可以將數(shù)據(jù)部署在網(wǎng)絡(luò)服務(wù)器上,數(shù)據(jù)庫本身存儲在本地機(jī)器上,天文學(xué)家不用編寫任何代碼。其中SAADADB數(shù)據(jù)庫由SAADA產(chǎn)生,是基于關(guān)系數(shù)據(jù)庫(MySQL*MYSQL, http://www.mysql.com/、PostgreSQL*PostgreSQL, http://www.postgresql.org/、SQLite*SQLite, http://www.sqlite.org/)由Java語言設(shè)計生成,同時需要網(wǎng)絡(luò)應(yīng)用服務(wù)器,如Apache*Apache, http://www.apache.org/、Tomcat*Tomcat, http://www.tomcat.apache.org/,數(shù)據(jù)管理操作非常簡單。盡管SAADA的功能強(qiáng)大,但是對于致力于天文研究的天文學(xué)家學(xué)習(xí)和使用比較困難,例如各種類型數(shù)據(jù)庫的部署、Java和網(wǎng)絡(luò)服務(wù)器的部署等。就數(shù)據(jù)庫的自動入庫而言,只需要將數(shù)據(jù)導(dǎo)入底層數(shù)據(jù)庫,并且可以直接從底層數(shù)據(jù)庫調(diào)用數(shù)據(jù),而SAADA會產(chǎn)生專有的SAADADB數(shù)據(jù)庫,在后續(xù)的查詢過程中需使用其指定的查詢語法,增加了使用難度,同時在入庫過程中,不會同時創(chuàng)建索引,用戶需要在后續(xù)過程中創(chuàng)建索引,也不會使用數(shù)據(jù)庫的擴(kuò)展庫,如PostgreSQL數(shù)據(jù)庫的四叉樹(Quad Tree Cube, Q3C)*Q3C, http://code.google.com/p/q3c/。這些因素導(dǎo)致SAADA自開發(fā)以來未得到廣泛應(yīng)用。鑒于此開發(fā)了一個簡單實用的入庫管理工具AutoDB,同時支持FITS文件和其他如CSV格式的數(shù)據(jù)文件,底層數(shù)據(jù)庫支持MySQL和PostgreSQL,數(shù)據(jù)錄入完畢后自動創(chuàng)建索引,用戶在對數(shù)據(jù)進(jìn)行管理、查詢、分析時,直接使用簡單通用的結(jié)構(gòu)化查詢語言(Structured Query Language, SQL)。斯滕伯格天文研究所莫斯科大學(xué)研究人員對比了幾種數(shù)據(jù)庫索引方式如Q3C與B-tree、R-tree在數(shù)據(jù)庫查詢時的性能*http://www.sai.msu.su/~megera/oddmuse/index.cgi/SkyPixelization,分別對數(shù)據(jù)建立Q3C索引、B-tree索引、R-tree索引進(jìn)行錐形查詢時,Q3C表現(xiàn)出更少的I/O密集型索引方式,其查詢讀取的索引塊數(shù)比R-tree和B-tree小了很多。研究結(jié)果表明無論是消耗時間還是查詢時索引塊的使用,Q3C方案明顯優(yōu)于其他索引方案。由此可見,Q3C作為一種有效的空間索引策略,應(yīng)用于天文數(shù)據(jù)管理是很必要的。常用的天文數(shù)據(jù)格式有文本格式和FITS格式。針對這兩種數(shù)據(jù)格式,應(yīng)用Q3C索引開發(fā)了自動化的天文數(shù)據(jù)管理工具。
隨著天文數(shù)據(jù)的日益增加,存儲和管理數(shù)據(jù)變得非常重要,尤其在數(shù)據(jù)的歸檔和管理方面,占有舉足輕重的地位。通過對天文數(shù)據(jù)管理知識的了解,經(jīng)過一系列的研究與開發(fā),最終開發(fā)了一個高效的天文數(shù)據(jù)自動入庫管理工具AutoDB,旨在幫助天文學(xué)家提高工作效率,促進(jìn)天文學(xué)研究進(jìn)展。
1.1 AutoDB的設(shè)計思路與方法
文[6]研究了基于Java語言開發(fā)的數(shù)據(jù)自動入庫和交叉認(rèn)證工具。文[7-8]基于Python語言實現(xiàn)了天文數(shù)據(jù)的自動入庫和交叉證認(rèn),該工具能夠自動添加分層三角網(wǎng)格(Hierarchical Triangular Mesh, HTM)的索引值,建立分層三角網(wǎng)格*HTM, http://www.skyserver.org/htm/索引分區(qū),便于以后的交叉認(rèn)證工作。分層三角網(wǎng)格是一種多層次、遞歸的球面分割方法,將天球分成多級的三角網(wǎng)絡(luò),每個網(wǎng)絡(luò)有一個分層三角網(wǎng)格的索引值,利用分層三角網(wǎng)格可以將一個大星表從邏輯上分割為多個小星表,分層三角網(wǎng)格分級算法采用C語言編寫,充分利用了C語言的高性能和Python語言的高效率。然而該程序僅支持底層數(shù)據(jù)庫為MySQL,且只支持CSV格式的文件,文件中的數(shù)據(jù)不能為空,若為空則拋出錯誤,有一定的局限性。分層三角網(wǎng)格分區(qū)是對赤經(jīng)和赤緯進(jìn)行計算產(chǎn)生索引值實現(xiàn)天空分區(qū),同時使用pcode_htmN數(shù)據(jù)列存儲這些值,然后對其進(jìn)行B-tree索引,方便后續(xù)的高效查詢。首先,算法必須根據(jù)后續(xù)數(shù)據(jù)的復(fù)雜性進(jìn)行優(yōu)化,其次,先計算再存儲勢必有I/0性能限制,最后使用B-tree一維索引間接對赤經(jīng)和赤緯索引,無法利用天文數(shù)據(jù)的空間性,若想實現(xiàn)一定半徑內(nèi)的查詢需要非常復(fù)雜的結(jié)構(gòu)化查詢語言。為了解決這些問題,在深入分析原理的基礎(chǔ)上,對自動入庫管理工具進(jìn)行全面的完善和改進(jìn):(1)底層數(shù)據(jù)庫同時支持MySQL和PostgreSQL;(2)針對PostgreSQL數(shù)據(jù)庫,使用一種新型Q3C索引,直接與數(shù)據(jù)庫進(jìn)行交互,無其他I/0交互,對赤經(jīng)和赤緯進(jìn)行空間索引,并且提供簡單的SQL語句實現(xiàn)復(fù)雜的查詢;(3)數(shù)據(jù)格式同時支持FITS和CSV格式;(4)數(shù)據(jù)優(yōu)化,若其中存在為空的數(shù)據(jù)項,自動變?yōu)?‘9999’ 或者 ‘NULL’,入庫時不會出錯。
1.1.1 底層數(shù)據(jù)庫架構(gòu)
工具的底層數(shù)據(jù)庫基于MySQL和PostgreSQL兩種數(shù)據(jù)庫開發(fā)。這兩種都是非常好的開源數(shù)據(jù)庫,對于選擇哪種數(shù)據(jù)庫取決于哪種數(shù)據(jù)庫更能滿足用戶的需求。之前采用MySQL數(shù)據(jù)庫,然而由于數(shù)據(jù)量增加,數(shù)據(jù)表格越來越大,一個表格甚至達(dá)到了幾十億行,對于表本身的容量遠(yuǎn)遠(yuǎn)超過了物理內(nèi)存,甚至建索引也不能改善性能,這樣查詢時間大大延長,在此情況下有必要對數(shù)據(jù)進(jìn)行分表管理,即將表拆分為一系列較小的、與之相關(guān)聯(lián)的子表進(jìn)行替代,通過對子表的數(shù)據(jù)查詢,相當(dāng)于對整個表進(jìn)行查詢操作。對基于MySQL數(shù)據(jù)庫分表來說,取決于數(shù)據(jù)引擎(InnoDB),不支持哈希分區(qū)表,而PostgreSQL數(shù)據(jù)庫支持臨時表、常規(guī)表以及范圍和列表類型的分區(qū)表,而且PostgreSQL的表分區(qū)通過表繼承和規(guī)則系統(tǒng)完成,所以可以實現(xiàn)更復(fù)雜的分區(qū)方式。索引方面,PostgreSQL支持 B-Tree、哈希、R-Tree和GiST索引,MySQL取決于數(shù)據(jù)引擎,大多數(shù)為B-Tree索引。由于天文數(shù)據(jù)具有空間屬性,位置坐標(biāo)為(赤經(jīng), 赤緯),索引是一個二維的。建立一個高效的索引非常重要,使用第三方擴(kuò)展庫如Q3C索引即是采用二維索引,又如使用PGSphere中的GIST索引,會使數(shù)據(jù)的查詢更加高效。所以當(dāng)數(shù)據(jù)量非常大的時候,或者需要使用第三方庫時,對于空間點(diǎn)索引時,采用PostgreSQL比MySQL方便得多。但若數(shù)據(jù)量不是很大,對于億行級以下的數(shù)據(jù)量,不需要第三方庫支持創(chuàng)建索引的數(shù)據(jù),則采用MySQL比較好。同時MySQL比PostgreSQL較為高效。面對種種數(shù)據(jù)管理的需求,增加PostgreSQL作為該入庫工具的底層數(shù)據(jù)庫是必要的,天文工作者可以根據(jù)自己的需求存儲到不同的數(shù)據(jù)庫中。
1.1.2 Q3C索引
龐大的數(shù)據(jù)儲存在數(shù)據(jù)庫中,準(zhǔn)確高效地使用這些數(shù)據(jù),必須對數(shù)據(jù)創(chuàng)建索引,索引不僅能夠加快數(shù)據(jù)的查詢速度,而且使數(shù)據(jù)的管理變得簡單容易,可以大幅提高系統(tǒng)的性能。當(dāng)然索引的創(chuàng)建也不是越多越好,因為索引過多會隨著數(shù)據(jù)量的增加而加大數(shù)據(jù)庫的負(fù)荷,降低系統(tǒng)性能,所以索引的使用要準(zhǔn)確得當(dāng)。在本系統(tǒng)中,由于對天文數(shù)據(jù)進(jìn)行入庫管理,數(shù)據(jù)的復(fù)雜性、空間性決定了普通的一維索引不能很好地解決數(shù)據(jù)的查詢管理要求,所以使用一個全新Q3C(Quad Tree Cube)對天空分區(qū)索引,能夠很好地對天文數(shù)據(jù)進(jìn)行二維空間索引,Q3C索引方案為開源項目運(yùn)用于數(shù)據(jù)庫PostgreSQL中,在使用的同時可以隨時進(jìn)行修改,非常適用于學(xué)術(shù)研究,由于直接運(yùn)用于數(shù)據(jù)庫,使用者不需要書寫任何算法,Q3C的產(chǎn)生是專門針對天文數(shù)據(jù),目的非常明確。雖然普通的索引如B-Tree也能夠用于天文數(shù)據(jù),但是如果需要進(jìn)行錐形查詢,在不使用Q3C索引的前提下,查詢SQL語句非常復(fù)雜,查詢速度非常慢,而且也只能運(yùn)用于數(shù)據(jù)量較少的情況下,數(shù)據(jù)過多極有可能導(dǎo)致內(nèi)存不足而出現(xiàn)程序卡死現(xiàn)象,然而上面的問題對于Q3C索引來說都不存在,所以這種基于四叉樹的空間索引非常實用。Q3C索引不僅能夠提供天文數(shù)據(jù)特有的查詢,而且提供交叉認(rèn)證功能,這對以后的數(shù)據(jù)處理,很大程度地簡化了工作量,同時又容易使用,而且不論是在查詢方面,還是交叉認(rèn)證方面,Q3C提供的簡單的SQL語句能夠執(zhí)行處理工作,而HTM則需要從數(shù)據(jù)庫中提取數(shù)據(jù),然后利用算法進(jìn)行處理,當(dāng)數(shù)據(jù)量非常大的時候,程序的性能會受到影響。
1.1.3 支持的數(shù)據(jù)文件格式
入庫管理工具同時支持兩種類型的數(shù)據(jù)格式文件:CSV(Comma-Separated Values)格式文件和FITS(Flexible Image Transport System)格式文件。CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或制表符。FITS格式是天文界常用的數(shù)據(jù)格式,它專門為在不同平臺之間交換數(shù)據(jù)而設(shè)計。1988年的國際天文學(xué)聯(lián)合會(International Astronomical Union, IAU)大會指定IAU的FITS工作組全權(quán)負(fù)責(zé)此格式的修訂。FITS文件由文件頭和數(shù)據(jù)組成。在文件頭中存儲對文件的描述,如觀測目標(biāo)、源的位置、觀測時間、曝光時間等信息,同時也可以在文件頭中注明觀測時的視場、精度等,便于后期的數(shù)據(jù)管理和分析。文件頭部分每行占80個字符,并以END結(jié)尾。FITS文件的容量大小通常比相同數(shù)據(jù)量的CSV文件小,在本地存儲中占用硬盤容量小,且天文數(shù)據(jù)文件采用FITS格式存儲的文件占大多數(shù)。針對FITS格式文件數(shù)據(jù),開發(fā)了一個分析FITS頭文件的工具,用來得到頭文件中表格數(shù)據(jù)的列名和每個列對應(yīng)的數(shù)據(jù)格式,方便在使用入庫工具時編寫readme文件。在輸入不同格式文件時,工具自動判斷文件的格式,選擇相應(yīng)的程序?qū)崿F(xiàn)自動入庫。
1.1.4 存儲數(shù)據(jù)的優(yōu)化
龐大的天文數(shù)據(jù)難免存在的超過數(shù)據(jù)庫中最大數(shù)據(jù)存儲大小的數(shù)據(jù)或者小于數(shù)據(jù)庫支持的最小數(shù)據(jù),在數(shù)據(jù)庫中可以定義數(shù)據(jù)類型支持導(dǎo)入的數(shù)據(jù),但這樣便失去兼容性,使得不同數(shù)據(jù)庫之間數(shù)據(jù)交換和融合變得困難,而且在文件中的數(shù)據(jù)項為空時,存儲到數(shù)據(jù)庫中會產(chǎn)生錯誤,所以在入庫前有必要對數(shù)據(jù)進(jìn)行優(yōu)化。因為不符合要求的數(shù)據(jù)非常少,而且改變其大小不會影響后續(xù)的數(shù)據(jù)分析,故在入庫前,在程序中把超出數(shù)據(jù)庫最大支持?jǐn)?shù)據(jù)的記錄數(shù)和小于數(shù)據(jù)庫最小支持?jǐn)?shù)據(jù)的記錄數(shù)更改為數(shù)據(jù)庫所支持最大和最小的數(shù)據(jù)記錄數(shù),同時對于文件中為空的數(shù)據(jù)項,程序根據(jù)數(shù)據(jù)類型的不同,自動填充 ‘9999’ 或 ‘NULL’ 字樣,方便數(shù)據(jù)的錄入和后續(xù)的計算分析。
1.2 AutoDB流程圖
在存儲FITS文件的數(shù)據(jù)時,專門開發(fā)了一個分析FITS頭文件的工具,方便存儲時選擇想要存儲的數(shù)據(jù)列。在使用過程中,不需要編寫任何代碼,同時該工具有很好的易用性。根據(jù)不同的格式文件,有不同的入庫流程,圖1給出了文本CSV和FITS文件的入庫流程。
圖1 AutoDB入庫流程圖
1.3 AutoDB系統(tǒng)環(huán)境支持
AutoDB采用Python語言編寫,推薦使用Linux操作系統(tǒng)。由于Python是跨平臺語言,若在WINDOWS系統(tǒng)中使用,需要安裝Python,一般的Linux發(fā)行版本自帶Python程序,同時也需要下列數(shù)據(jù)庫系統(tǒng)(異地或本地均可)和第三方庫作為支持:
(1)PostgreSQL(9.0+):支持最新的SQL語法,更高的功能完整性;
(2)MySQL(5.1+):性能非常高效;
(3)Q3C(Quad Tree Cube):一種基于PostgreSQL數(shù)據(jù)庫的新的天文數(shù)據(jù)索引概念,提供海量天文數(shù)據(jù)的查詢與融合。
該工具同時嵌入了一個虛擬終端,用戶可以根據(jù)虛擬終端的反饋,了解在使用過程中出現(xiàn)的錯誤,從而糾正錯誤,使程序完美地運(yùn)行。
1.4 AutoDB圖形用戶界面
AutoDB圖形入庫界面如圖2,用戶可以選擇入哪種數(shù)據(jù)庫,入庫的數(shù)據(jù)文件及數(shù)據(jù)的說明文件,創(chuàng)建HTM的級數(shù),分次上傳的記錄數(shù),赤經(jīng)赤緯列等。在這里,用戶可以直接點(diǎn)擊程序運(yùn)行圖形界面,也可以手動在命令行中使用命令運(yùn)行圖形界面,圖形界面和主程序是分開的,協(xié)助用戶按照各個參數(shù),收集起來,按照一定的規(guī)范得到收集的參數(shù),供主程序使用,也就是說主程序不依賴于圖形界面,用戶可以手動編輯指定的文件運(yùn)行主程序。
FITS頭文件分析工具把FITS頭中的數(shù)據(jù)輸出到文件中,該文件名由用戶定義,在FITS SOURCE FILE對應(yīng)的一行中瀏覽添加FITS源文件,然后在FITS HEAD FILE一行中輸入要創(chuàng)建FITS頭文件名,界面如圖3。
在使用入庫工具時,用戶需要編寫readme文件供程序使用,其格式如下:第1行為各列列名(即數(shù)據(jù)庫表中的列名字段,請參照MySQL/PostgreSQL對字段命名相關(guān)文檔),以一個或者多個空行分隔;第2行與第1行相對應(yīng),為每列的數(shù)據(jù)類型(如float、char、varchar、double、int,具體參照MySQL/PostgreSQL數(shù)據(jù)類型相關(guān)文檔),同樣是以一個或者多個空格分隔,內(nèi)容不能有引號,字段不能為空或NULL。同時在FITS文件入庫時,需要參照頭文件分析工具得出的頭文件以及格式轉(zhuǎn)換文件編寫readme文件。頭文件分析工具得到的頭文件實例如圖4,格式轉(zhuǎn)換文件如圖5。
圖2 自動入庫工具界面
圖3 FITS頭文件分析工具界面
圖4 頭文件部分示例
readme樣例文件,以PostgreSQL數(shù)據(jù)庫為例:
DTEID SCRID OBS_ID RA DEC
Bigint bingint text float8 float8
編寫readme文件完畢后,即可使用自動入庫工具進(jìn)行數(shù)據(jù)的錄入,數(shù)據(jù)庫可以由用戶選擇,數(shù)據(jù)庫服務(wù)器可以是本地服務(wù)器或遠(yuǎn)程服務(wù)器。使用遠(yuǎn)程服務(wù)器時,應(yīng)保證遠(yuǎn)程服務(wù)器支持遠(yuǎn)程連接,否則報錯。
圖5 頭文件中格式的轉(zhuǎn)換類型
2.1 Q3C索引與非Q3C索引的查詢性能比較
在使用索引時,最在意索引是否能夠提高查詢效率,對于具體選擇哪種索引方式,要看哪種索引提高的性能更高。為此做了在數(shù)據(jù)庫命令行的形式下使用SQL語句進(jìn)行查詢的實驗。實驗數(shù)據(jù)為Pan-STARRS數(shù)據(jù),總共11 495 847個星表源數(shù)據(jù)。對比使用Q3C索引和不使用Q3C索引(對赤經(jīng)與赤緯進(jìn)行B-tree索引)的情況下,實現(xiàn)以赤經(jīng)赤緯(5°, 50°)為中心,半徑在0.1°到0.9°范圍內(nèi)的錐形查詢,比較隨著提取結(jié)果源數(shù)目的增多上述兩種方案的查詢時間,其結(jié)果如圖6和圖7。
圖6 Q3C查詢時間圖
圖7 非Q3C索引查詢時間圖
從圖7和圖8可以看出,隨著查詢半徑的增大,符合查詢條件的源數(shù)目不斷增多,同時查詢時間以近似線性速度增長,說明查詢元組數(shù)目越多,消耗的時間越多。還發(fā)現(xiàn)使用非Q3C索引的查詢時間是使用Q3C索引時間的100多倍,可見Q3C索引方式的有效性。Q3C索引具有層次結(jié)構(gòu)、平等區(qū)域、異維度分布等特性的天空分區(qū)方案,對天文數(shù)據(jù)的處理有得天獨(dú)厚的優(yōu)勢。特別是在數(shù)據(jù)量大的情況下,使用Q3C數(shù)據(jù)索引,其表現(xiàn)不僅僅是數(shù)據(jù)查詢速度的提高,對日后的交叉認(rèn)證打下了很好的基礎(chǔ)。
2.2 AutoDB工具的應(yīng)用
AutoDB能夠快速地將數(shù)據(jù)存儲到相應(yīng)的數(shù)據(jù)庫,上傳數(shù)據(jù)的速度與本地機(jī)器硬件性能、數(shù)據(jù)庫的配置以及數(shù)據(jù)庫服務(wù)器的位置(本地或異地)、數(shù)據(jù)量的多少以及索引的復(fù)雜程度有直接或間接的關(guān)系。建議在使用過程中本地機(jī)器不要運(yùn)行太多的其他程序。
使用SDSS部分?jǐn)?shù)據(jù)進(jìn)行實驗,總共有100 000 000行數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫,測試平臺使用兩臺計算機(jī),一臺是本地數(shù)據(jù)庫平臺和程序運(yùn)行平臺,另外一臺是遠(yuǎn)程數(shù)據(jù)庫運(yùn)行平臺,通過百兆以太網(wǎng)訪問遠(yuǎn)程數(shù)據(jù)庫平臺,具體配置如表1。
表1 實驗平臺軟硬件配置
在實驗過程中多次分別對本地和遠(yuǎn)程數(shù)據(jù)庫進(jìn)行入庫,在入庫時將數(shù)據(jù)分割為100 000 00行、200 000 00行、400 000 00行、600 000 00行、800 000 00行、100 000 000行導(dǎo)入數(shù)據(jù)庫,得出實驗結(jié)果如表2。單從數(shù)據(jù)上傳的速度看,MySQL數(shù)據(jù)庫的速度要優(yōu)于PostgreSQL數(shù)據(jù)庫。
表2 入庫實驗結(jié)果
針對當(dāng)前天文大數(shù)據(jù)的特點(diǎn),致力于開發(fā)高效、易用的海量天文數(shù)據(jù)自動入庫工具??紤]到天文數(shù)據(jù)的海量、分布性等特點(diǎn),分析了現(xiàn)有入庫工具的優(yōu)缺點(diǎn),總結(jié)前人的設(shè)計成果,結(jié)合實際需求,應(yīng)用高效的Q3C索引方案,改進(jìn)開發(fā)了一個更加高效的大型天文數(shù)據(jù)自動入庫工具AutoDB,同時參照國際上SAADA工具的功能。該工具能夠協(xié)助天文工作者方便地存儲、管理和處理數(shù)據(jù),為后續(xù)研究工作中的數(shù)據(jù)融合、分析與挖掘做了鋪墊,是海量異地異構(gòu)多波段天文數(shù)據(jù)融合和挖掘工作的根本保障。AutoDB還有很多需要改進(jìn)的地方,因為底層數(shù)據(jù)庫的設(shè)計基于MySQL和PostgreSQL,所以用戶在數(shù)據(jù)庫選擇方面只能選擇MySQL和PostgreSQL,這點(diǎn)對用戶來說有局限性。在自動入庫工作中,數(shù)據(jù)庫的性能是一個不能忽視的方面,性能是否良好直接影響中央處理器的利用率,所以有必要對數(shù)據(jù)庫性能進(jìn)行調(diào)優(yōu),在數(shù)據(jù)量大的時候,除了對數(shù)據(jù)表進(jìn)行分表以外,也可以對數(shù)據(jù)庫內(nèi)存進(jìn)行調(diào)整,達(dá)到最適合當(dāng)前中央處理器工作的狀態(tài)內(nèi)存容量,同時也可以安裝數(shù)據(jù)庫的監(jiān)控工具和趨勢預(yù)測軟件,如vmstat、iosta、top、Munin等等,對數(shù)據(jù)庫進(jìn)行實時監(jiān)控,保證數(shù)據(jù)庫在任何時刻處于高效狀態(tài)。在程序編寫方面,使用INSERT語句對文件的數(shù)據(jù)上傳,而沒有使用數(shù)據(jù)庫自帶的專有命令,這樣會影響數(shù)據(jù)的插入速度和效率,由于專有命令沒有一個接口程序引用,這在后續(xù)工作中進(jìn)一步研究。參照SAADA工具的設(shè)計思路和優(yōu)點(diǎn),如SAADA工具支持大部分的關(guān)系數(shù)據(jù)庫,不僅可以建數(shù)據(jù)庫,而且可以收集不同的數(shù)據(jù)進(jìn)行整合分析,同時能夠?qū)⒄砗玫臄?shù)據(jù)發(fā)布在網(wǎng)絡(luò)上實現(xiàn)數(shù)據(jù)共享,下一步根據(jù)需求基于網(wǎng)絡(luò)服務(wù),實現(xiàn)網(wǎng)頁建庫和網(wǎng)頁查詢,這樣工具使用起來更加方便,也會根據(jù)使用情況的反饋加以改進(jìn)和提高。當(dāng)然一個工具永遠(yuǎn)不是盡善盡美的,結(jié)合不斷變化的需求,工具也要隨之調(diào)整,從而一步一步地健壯,這樣才能夠與時俱進(jìn),不斷地促進(jìn)天文研究的發(fā)展。
[1] Zhang Y, Zhao Y. Astronomy in the big data era [J]. Data Science Journal, 2015, 14(11): 1-9.
[2] 張彥霞, 趙永恒. 數(shù)據(jù)挖掘技術(shù)在天文學(xué)中的應(yīng)用[J]. 科研信息化技術(shù)與應(yīng)用, 2011, 2(3): 13-27. Zhang Yanxia, Zhao Yongheng. The application of data mining technologies in astronomy[J]. e-Science Technology & Application, 2011, 2(3): 13-27.
[3] 張彥霞, 趙永恒, 崔辰州. 天文學(xué)中的數(shù)據(jù)挖掘和知識發(fā)現(xiàn)[J]. 天文學(xué)進(jìn)展, 2002, 20(4): 312-323. Zhang Yanxia, Zhao Yongheng, Cui Chenzhou. Data mining and knowledge discovery in database of astronomy[J]. Progress in Astronomy, 2002, 20(4): 312-323.
[4] Zhang Yanxia, Zheng Hongwen, Pei Tong. Toolkit of automated database creation and cross-match[C]// Proceedings of the SPIE. 2012.
[5] 張彥霞, 趙永恒. 虛擬天文臺: 科學(xué)、工具及應(yīng)用[J]. 天文學(xué)進(jìn)展, 2006, 24(3): 189-199. Zhang Yanxia, Zhao Yongheng. Science, tools and applications of the Virtual Observatory [J]. Progress in Astronomy, 2006, 24(3): 189-199.
[6] 高丹. 海量天文數(shù)據(jù)融合系統(tǒng)的開發(fā)與數(shù)據(jù)挖掘算法的研究[D]. 北京: 中國科學(xué)院國家天文臺, 2018.
[7] 裴彤, 張彥霞, 彭南博, 等. Python多核并行計算在海量星表交叉證認(rèn)中的應(yīng)用[J]. 中國科學(xué): 物理學(xué) 力學(xué) 天文學(xué), 2011, 41(1): 102-107. Pei Tong, Zhang Yanxia, Peng Nanbo, et al. The application of multi-core parallel computing using Python language in cross-matching of massive catalogues[J]. Scientia Sinica: Pysica, Mechanica & Astronomica, 2011, 41(1): 102-107.
[8] 裴彤. 高效海量星表融合工具集的開發(fā)與GPU并行計算的天文應(yīng)用研究[D]. 北京: 中國科學(xué)院國家天文臺, 2011.
Design and Implementation of a Software Tool Package for Managing Massive Astronomical Data
Zhong Shoubo1,2, Han Bo1, Zhang Yanxia2, Zhao Yongheng2, He Boliang2
(1. Internationan School of Software, Wuhan University, Wuhan 430079, China; 2. Key Laboratory of Optical Astronomy,National Astronomical Observatories, Chinese Academy of Sciences, Beijing 100012, China, Email: zyx@bao.ac.cn)
As more large ground- and space-based observation equipments enter into service and more large-area sky survey projects progress, astronomical data are increasingly measured in terabytes, petabytes, or even exabytes. With astronomy entering the ‘massive-data’ era (‘facing a data ocean’), how to effectively store and manage the huge-quantity data becomes a central issue for astronomers. Astronomical data centers certainly need to store and manage massive data. Individual astronomers need to effectively manage their large amounts of data as well. The most basic task of management of data in huge amounts is to efficiently and automatically deposit data into a database. Moreover, efficient indexing of data is the key issue in application of data management. We have thus designed and developed a software tool package called AutoDB to manage massive astronomical data. In the AutoDB there is a virtual terminal for a user to monitor automatic storage of data. With the Q3C the AutoDB automatically creates new indexing based on sky partitioning and applies the technique of indexing in a two-dimensional space to effectively manage astronomical data. Improvement of data-management tools such as in our study can provide a sound basis for follow-up data fusion, data mining, and data analysis carried out by astronomers. Especially for astronomers using massive data, improved data-management tools allow them to focus on exploring scientific issues in their research.
Massive Data; Database; Data Management; Data File
國家重點(diǎn)基礎(chǔ)研究發(fā)展計劃 (973計劃) (2014CB845700);國家自然科學(xué)基金 (61272272);國家自然科學(xué)基金委員會與美國德州農(nóng)工大學(xué)聯(lián)合基金 (11411120219) 資助.
2015-02-09;修定日期:2015-03-12
鐘守波,男,碩士. 研究方向:大型數(shù)據(jù)管理和融合. Email: zhongshou bo@163 com
張彥霞,女,研究員. 研究方向:天文數(shù)據(jù)挖掘、天文信息學(xué). Email: zyx@bao ac cn
TN919.5
A
1672-7673(2015)04-0510-08
CN 53-1189/P ISSN 1672-7673