王凱 李慧嬌 隋易潔 陳龍 王向上
【摘 要】目前,在煤礦信息化所采用的數(shù)據(jù)庫大多為SQL Server或Oracle等大型數(shù)據(jù)庫,其安裝麻煩,操作復(fù)雜,并且維護(hù)成本較高,建立一個基于輕量級數(shù)據(jù)庫越來越成為煤礦信息數(shù)據(jù)庫的研究熱點(diǎn)。本文介紹了SQLite數(shù)據(jù)庫的基本結(jié)構(gòu),特點(diǎn)以及Sqlite3 API接口;對比了幾種常用的數(shù)庫;介紹了煤礦地測與安全數(shù)據(jù)庫的內(nèi)容與基本表結(jié)構(gòu),并基于sqlite3 API,用C++開發(fā)語言重新封裝了煤礦地測數(shù)據(jù)庫所需要各種類和接口,開發(fā)一個簡單的數(shù)據(jù)庫管理系統(tǒng),然后進(jìn)行數(shù)據(jù)庫的測試,將測試好的數(shù)據(jù)庫導(dǎo)入到三維礦山系統(tǒng)里進(jìn)行展示。
【關(guān)鍵詞】煤礦;SQLite;數(shù)據(jù)庫開發(fā)
0 引言
進(jìn)入21世紀(jì)后,煤礦的數(shù)字化、信息化已經(jīng)成為我國煤礦產(chǎn)業(yè)的發(fā)展趨勢,煤礦現(xiàn)代化信息管理系統(tǒng)在煤礦安全生產(chǎn)中發(fā)揮著舉足輕重的作用,而其中的數(shù)據(jù)管理成為大型信息系統(tǒng)的核心。雖然Oracle、
DB2、SQL Server及MySQL等關(guān)系數(shù)據(jù)庫系統(tǒng)是當(dāng)今數(shù)據(jù)庫應(yīng)用的主流,但它們操作復(fù)雜、維護(hù)成本高,在一定程度上影響了這些大型關(guān)系數(shù)據(jù)庫在煤礦現(xiàn)代化信息管理中的應(yīng)用。SQLite數(shù)據(jù)庫相對于上述大型關(guān)系數(shù)據(jù)庫,具有小巧、開源、易用、高效等特點(diǎn),它無需安裝,維護(hù)方便,很大程度上減輕了煤礦技術(shù)人員的工作量。本文基于sqlite3 API重新封裝了煤礦地測數(shù)據(jù)庫所需要各種類和接口,開發(fā)一個簡單的數(shù)據(jù)庫管理系統(tǒng),然后進(jìn)行數(shù)據(jù)庫的測試,將測試好的數(shù)據(jù)庫導(dǎo)入到三維礦山系統(tǒng)里進(jìn)行展示。
1 SQLite 數(shù)據(jù)庫體系結(jié)構(gòu)、特點(diǎn)及API
1.1 SQLite數(shù)據(jù)庫體系結(jié)構(gòu)
SQLite數(shù)據(jù)庫是一種采用小型C庫實現(xiàn)的嵌入式關(guān)系數(shù)據(jù)庫管理體系。它提供對SQL92的大多數(shù)支持:多表、索引、事務(wù)、視圖、觸發(fā)和一系列的用戶接口及驅(qū)動。SQLite數(shù)據(jù)庫采用模塊化設(shè)計,主要由內(nèi)核(core)、SQL編譯器(SQLCompiler)、后端(Backend)以及附件4個部分組成(Aeeessories)。
1.2 SQlite數(shù)據(jù)庫的特點(diǎn)
SQlite3具有零配置,跨平臺可移植性,并發(fā)訪問等特點(diǎn),是一種高效的內(nèi)存數(shù)據(jù)庫,它對內(nèi)存和CPU的利用率更高,速度更快?;赟qlite以上所述的優(yōu)點(diǎn),使用者可以在不安裝大型數(shù)據(jù)庫的前提下直接創(chuàng)建打開訪問煤礦數(shù)據(jù)庫。
1.3 Sqlite 3.0 API介紹
SQLite 3.0一共有83個API函數(shù),此外還有一些數(shù)據(jù)結(jié)構(gòu)和預(yù)定義(#defines)。最重要的有四個函數(shù):sqlite3_open(),sqlite3_exec(),sqlite3_get_table()和sqlite3_close().要是想更好的控制數(shù)據(jù)庫引擎的執(zhí)行,可以使用提供的sqlite3_prepare()函數(shù)把SQL語句編譯成字節(jié)碼,然后在使用sqlite3_step()函數(shù)來執(zhí)行編譯后的字節(jié)碼. sqlite3_column_開頭的一組API函數(shù)用來獲取查詢結(jié)果集中的信息。
2 幾種數(shù)據(jù)庫的比較
目前主流的數(shù)據(jù)庫有Oracle,SQL Server,SQLite等,其對比如下(表1):
從表1可以看出SQL Server或Oracle等大型數(shù)據(jù)庫,其安裝麻煩,操作復(fù)雜,并且維護(hù)成本較高,而SQLite數(shù)據(jù)庫則無需安裝,操作簡單。因此,基于SQLite建立一個輕量級的煤礦信息數(shù)據(jù)庫有著很大的優(yōu)勢。
3 煤礦地測信息數(shù)據(jù)庫的設(shè)計與開發(fā)
3.1 煤礦地測信息介紹
煤礦地測信息是煤礦地質(zhì)測量工作的集中反映,是煤礦生產(chǎn)和管理工作的重要依據(jù)。煤礦地測信息數(shù)據(jù)庫系統(tǒng)是礦山信息系統(tǒng)的一個重要組成部分,是煤礦地質(zhì)測繪管理和生產(chǎn)的核心。煤礦地測信息數(shù)據(jù)庫系統(tǒng)中所容納和處理的基礎(chǔ)數(shù)據(jù)資料與基礎(chǔ)圖紙資料是礦山建設(shè)、生產(chǎn)、改造和編制Z長遠(yuǎn)發(fā)展規(guī)劃等各項工作的基礎(chǔ),它按來源依據(jù)不同的時期分為資源勘探階段的地測信息、建井階段的地測信息和生產(chǎn)時期的地測信息。在資源勘探階段,獲取的地測信息主要是平面三角測量與鉆探、物探等數(shù)據(jù),在有露頭出露的地區(qū)還有地表觀測資料;在建井時期,主要為補(bǔ)充鉆探與測量資料、井筒資料及井下巷道實際揭露的資料;生產(chǎn)時期的信息主要包括各種巖巷(石門、上下山)、煤巷揭露的資料、井下物探資料和井下施工的鉆孔,以及相應(yīng)的工程測量數(shù)據(jù)。為了滿足現(xiàn)代化煤礦建設(shè)與生產(chǎn)的需要,所有這些數(shù)據(jù)資料都必須經(jīng)過系統(tǒng)進(jìn)行數(shù)字化與信息化。
本文通過研究煤礦基礎(chǔ)地測信息數(shù)據(jù)的來源和結(jié)構(gòu)特性,將其劃分為巷道數(shù)據(jù)、煤層數(shù)據(jù)、鉆孔數(shù)據(jù)、工作面數(shù)據(jù)、影像數(shù)據(jù)、斷層數(shù)據(jù)、DEM數(shù)據(jù)、設(shè)備模型數(shù)據(jù),針對不同類型的數(shù)據(jù)提出相應(yīng)的設(shè)計策略(即設(shè)計相應(yīng)表結(jié)構(gòu)),對應(yīng)的表結(jié)構(gòu)分為巷道數(shù)據(jù)表、煤層數(shù)據(jù)表、鉆孔數(shù)據(jù)表、工作面數(shù)據(jù)表、影像數(shù)據(jù)表、斷層數(shù)據(jù)表、DEM數(shù)據(jù)表、設(shè)備模型數(shù)據(jù)表等等。
3.2 煤礦數(shù)據(jù)庫的設(shè)計
3.2.1 概念設(shè)計
概念結(jié)構(gòu)是一種能反映用戶觀點(diǎn)并更接近于現(xiàn)實世界的數(shù)據(jù)模型。概念結(jié)構(gòu)設(shè)計階段的主要任務(wù)是根據(jù)需求分析階段形成的系統(tǒng)需求總體狀況,準(zhǔn)確模擬現(xiàn)實世界,確定反映現(xiàn)實世界的信息類別及信息之間的聯(lián)系;把用戶的信息需求抽象為獨(dú)立于具體機(jī)器、獨(dú)立于具體DBMS的信息結(jié)構(gòu)。目前,描述概念結(jié)構(gòu)最常用的方法是E-R(Entity-
Relationship datamodel,實體-聯(lián)系)方法。圖1是巷道數(shù)據(jù)的E-R圖:
3.2.2 邏輯設(shè)計
邏輯結(jié)構(gòu)是一種由具體的DBMS支持的數(shù)據(jù)模型,本次設(shè)計采用了時下主流的關(guān)系數(shù)據(jù)模型。關(guān)系數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計階段的主要任務(wù),就是按照一定的規(guī)則,將概念結(jié)構(gòu)設(shè)計階段設(shè)計好的獨(dú)立于任何 DBMS數(shù)據(jù)模型的信息結(jié)構(gòu),轉(zhuǎn)換為由已選用好的RDBMS(關(guān)系模型數(shù)據(jù)庫管理系統(tǒng))產(chǎn)品所支持的一組關(guān)系模式,并利用關(guān)系數(shù)據(jù)庫的規(guī)范化理論對這組關(guān)系模式進(jìn)行規(guī)范化設(shè)計和處理,在此基礎(chǔ)上,還要根據(jù)數(shù)據(jù)庫的完整性和一致性要求以及系統(tǒng)查詢效率要求,對這組關(guān)系模式進(jìn)行必要的優(yōu)化處理,從而得出滿足所有數(shù)據(jù)要求的關(guān)系數(shù)據(jù)模型,也即數(shù)據(jù)庫的邏輯結(jié)構(gòu)。
3.2.3 建立數(shù)據(jù)庫
基于以上設(shè)計,本文采用的存儲結(jié)構(gòu)和方法對煤礦數(shù)據(jù)進(jìn)行物理構(gòu)建。本文的煤礦數(shù)據(jù)庫文件名為test,其中包括巷道數(shù)據(jù)表,煤層數(shù)據(jù)表,鉆孔數(shù)據(jù)表等 8 個數(shù)據(jù)表。本文選取具有代表性的數(shù)據(jù)表進(jìn)行介紹。
(1)巷道數(shù)據(jù)表(表2)
(2)鉆孔數(shù)據(jù)庫(表3)
(3)煤層數(shù)據(jù)表(表4)
3.3 煤礦數(shù)據(jù)庫的開發(fā)
3.3.1 煤礦數(shù)據(jù)庫的封裝
建立空間數(shù)據(jù)管理引擎,要對Sqlite數(shù)據(jù)庫的操作進(jìn)行二次封裝,封裝為適合對外使用的類和接口。其中設(shè)計到幾個重要的類有:數(shù)據(jù)庫管理器(CDatabaseManager)、數(shù)據(jù)庫類(CDatasource)、數(shù)據(jù)集(CDataset)、記錄(CFeature)、字段(CField);通過數(shù)據(jù)庫管理器可以創(chuàng)建、打開、關(guān)閉數(shù)據(jù)庫;通過數(shù)據(jù)庫類可以創(chuàng)建數(shù)據(jù)集、向數(shù)據(jù)集里插入數(shù)據(jù)、查詢數(shù)據(jù)集、更新數(shù)據(jù)集、刪除數(shù)據(jù)集;通過數(shù)據(jù)集類可以獲得里面的記錄,還可以添加記錄;通過記錄可以獲得里面的字段,添加刪除字段等等。
3.3.2 編譯Win32平臺所需要的SQLite庫文件
(1)下載源碼
首先到http://www.sqlite.org/download.html網(wǎng)站下載最新的SQLite 源碼文件。本文以(sqlite-source-3_6_23_1.zip和sqlite-amalgama-tion-3_6_23_1.zip)為例說明。
(2)創(chuàng)建項目工程
編程語言:Visual C++;
平臺選擇:Microsoft Visual Studio 2010;
應(yīng)用程序類型選擇:一個空Win32項目;將下載之后的文件解壓放到 dll項目的工程目錄之下。將其中的 tclsqlite. c和shell. c文件刪除。
(3)修改相關(guān)代碼和屬性設(shè)置
修改項目屬性中創(chuàng)建/使用預(yù)編譯頭:“不使用預(yù)編譯頭”;在預(yù)處理器中添加“SQLITE_ENA-BLE_COLUMN_MET ADAT A”;模塊定義文件:“sqlite3. Def”。將fts3_taokenizer. c和fts3. c文件中的宏SQLIT E_EXT ENSION_INIT1修改為“extern const sqlite3_api_routines* sqlite3_
api;”。
(4)編譯生成dll和lib文件
3.4 煤礦數(shù)據(jù)庫管理系統(tǒng)的設(shè)計開發(fā)
本文以湖南省資江煤礦數(shù)據(jù)為基礎(chǔ),煤礦數(shù)據(jù)庫管理系統(tǒng)的設(shè)計圖如圖2。
本文主要是根據(jù)湖南省資江煤礦設(shè)計了一個簡單的數(shù)據(jù)庫管理系統(tǒng),界面搭建用的是Qt,實現(xiàn)了創(chuàng)建打開煤礦數(shù)據(jù)庫;創(chuàng)建打開巷道、煤層、鉆孔等數(shù)據(jù)集(表);插入巷道、煤層等數(shù)據(jù);查詢巷道煤層等數(shù)據(jù)信息;刪除巷道煤層等數(shù)據(jù)等等。
4 總結(jié)
在煤礦現(xiàn)代化信息管理中應(yīng)用SQLite API創(chuàng)建煤礦數(shù)據(jù)庫對煤礦數(shù)據(jù)進(jìn)行存儲和基本處理可簡化程序開發(fā)周期,方便數(shù)據(jù)存取,提高執(zhí)行效率。同時也應(yīng)充分考慮SQLite數(shù)據(jù)庫自身的局限性,讓其在最適當(dāng)?shù)牡胤桨l(fā)揮最大的作用。
【參考文獻(xiàn)】
[1]賈睿濤.煤礦地測信息數(shù)據(jù)庫管理系統(tǒng)的設(shè)計[D].西安:西安科技大學(xué),2005.
[2]王佰順,王廣湖.論煤礦管理信息系統(tǒng)的建設(shè)與開發(fā)[J].中國煤炭,2000.
[3]文廣超,鄧寅生,余永強(qiáng),張俊.煤礦信息管理系統(tǒng)的設(shè)計與實現(xiàn)[J].礦業(yè)研究與開發(fā),2008.
[4]魏丹,龍熙華,宇亞衛(wèi).國外煤礦安全生產(chǎn)管理經(jīng)驗的啟示[J].科技情報開發(fā)與經(jīng)濟(jì),2007,17(23):213-214.
[5]馬娟.礦山數(shù)據(jù)庫管理系統(tǒng)的建立及應(yīng)用[D].昆明:昆明理工大學(xué),2003.
[6]張立偉.搞好煤礦安全生產(chǎn)的措施[J].科技信息,2007(17):225.
[7]羅云國,孫彥景,錢建生,等.基于SQLite的煤礦安全監(jiān)控數(shù)據(jù)庫研究[J].微計算機(jī)信息,2008,24(11-3):175-181.
[8]王京謙,萬蒞新.開源嵌入式數(shù)據(jù)庫Berkeley和SQLite嵌入式數(shù)據(jù)庫技術(shù)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用.
[責(zé)任編輯:王楠]