王凱 李慧嬌 隋易潔 陳龍 王向上



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