SQLite數(shù)據(jù)庫在力矩限制器中的應(yīng)用
長沙中聯(lián)重科 王青 楊凱 2014/1/20 19:09:18
摘要:本文主要結(jié)合工程機(jī)械中力矩限制器的應(yīng)用,以wince系統(tǒng)平臺(tái)為例,闡述了sqlite數(shù)據(jù)庫的特點(diǎn),以及其在嵌入式環(huán)境中的應(yīng)用。在嵌入式環(huán)境中,隨著數(shù)據(jù)管理要求的提高,數(shù)據(jù)庫必然會(huì)取代傳統(tǒng)的數(shù)據(jù)操作模式。而輕量級(jí)數(shù)據(jù)庫sqlite的簡單高效和跨平臺(tái)的特性使其非常適合這種應(yīng)用需求。
關(guān)鍵詞:sqlite 力矩限制 嵌入式
1. 引言
力矩限制器為起重機(jī)的安全保護(hù)系統(tǒng)的核心,能對起重設(shè)備進(jìn)行實(shí)時(shí)記錄和監(jiān)控,實(shí)現(xiàn)過載保護(hù)和過抑保護(hù),確保起重機(jī)在安全范圍內(nèi)工作,是保障設(shè)備安全,人身安全的重要設(shè)備。隨著起重機(jī)的技術(shù)的發(fā)展,大噸位起重機(jī)的相繼出現(xiàn),工況變的越來越復(fù)雜,起重量表的數(shù)據(jù)量變的越來越龐大,對于力矩限制器的數(shù)據(jù)管理和操作提出了更高的要求。
2. 嵌入式數(shù)據(jù)庫SQLite
2.1. 嵌入式數(shù)據(jù)庫的選擇
本項(xiàng)目主要基于Windows CE操作系統(tǒng)設(shè)計(jì)開發(fā)一款適合中大噸位起重機(jī)的力矩限制系統(tǒng)。而力矩控制器中不可缺少對數(shù)據(jù)的存儲(chǔ)和管理。目前在WinCE系統(tǒng)中常用的數(shù)據(jù)的存儲(chǔ)和管理方法有兩種。一是直接基于WinCE的文件系統(tǒng)提供的API接口實(shí)現(xiàn)對數(shù)據(jù)的讀寫管理,第二種是采用數(shù)據(jù)庫方式管理數(shù)據(jù)。數(shù)據(jù)庫方式與文件系統(tǒng)相比在進(jìn)行數(shù)據(jù)存儲(chǔ)管理時(shí)有巨大優(yōu)勢。windows CE 系統(tǒng)以獨(dú)占的方式訪問文件,所以第一種方式IO開銷大,訪問效率比較低,數(shù)據(jù)的共享性和應(yīng)用軟件的可重用性較差,但使用簡單,適合小數(shù)據(jù)量的應(yīng)用。數(shù)據(jù)庫方式可以使得數(shù)據(jù)和程序操作相互獨(dú)立,數(shù)據(jù)庫可以通過事務(wù)來進(jìn)行調(diào)度與并發(fā)控制,可以有效方便的對數(shù)據(jù)進(jìn)行存取,修改,查詢等共享操作,同時(shí)借助于數(shù)據(jù)庫所具有的安全性檢驗(yàn)、完整性檢查等多種安全措施,使得系統(tǒng)有較好的整體性能。
在WinCE系統(tǒng)中常用的嵌入式數(shù)據(jù)庫有三種。一是系統(tǒng)自帶的數(shù)據(jù)庫。主要面對需要存儲(chǔ)的數(shù)據(jù)量較小,數(shù)據(jù)結(jié)構(gòu)相對簡單的應(yīng)用,例如系統(tǒng)的動(dòng)態(tài)配置文件,則使用起來非常合適。第二種是Microsoft 為Windows CE 平臺(tái)開發(fā)的嵌入式數(shù)據(jù)庫SQL Server CE。表一所示,列出了WinCE 自帶數(shù)據(jù)庫與SQLCE 數(shù)據(jù)庫部分功能的對比。
表1 WinCE自帶數(shù)據(jù)庫與SQLCE數(shù)據(jù)庫功能對照表
WinCE自帶數(shù)據(jù)庫 SQLCE數(shù)據(jù)庫
開發(fā)方式 使用API函數(shù)操作 使用SQL語句操作
數(shù)據(jù)類型 較少(9種) 較多(20種)
與pc端SQL Sever數(shù)據(jù)同步 不支持 支持
更改表字段 不支持 支持
第三種是使用開源的嵌入式數(shù)據(jù)庫SQlite 管理數(shù)據(jù)。SQLite 與SQL Server CE 某些方面相比SQLite 占用很少的存儲(chǔ)器空間,約100KB-300KB;而SQL Server CE 則大致占用1MB-3MB,這對資源極其珍貴的嵌入式系統(tǒng)來說無疑是個(gè)挑戰(zhàn)。SQLite 與SQL ServerCE 都采用標(biāo)準(zhǔn)的SQL 語句,SQLite 使用非常簡單,無需安裝管理,一般只需要帶上一個(gè)動(dòng)態(tài)庫就可以使用,數(shù)據(jù)庫文件獨(dú)立,只需拷貝該文件就可以完成備份工作,而基本的數(shù)據(jù)操作上只需要掌握3 個(gè)核心API 函數(shù)就可以實(shí)現(xiàn),而SQL Server CE 相對復(fù)雜,需要充分理解數(shù)據(jù)庫引擎和掌握高級(jí)數(shù)據(jù)庫接口組件ADOCE 的編程。另外SQLite 完全獨(dú)立,有良好的移植性;SQL Server CE 專為Windows CE 平臺(tái)開發(fā),沒法移植到其他嵌入式平臺(tái)上。兩個(gè)數(shù)據(jù)庫的性能測試對比,多次實(shí)驗(yàn)測得SQLite插入5000條數(shù)據(jù)的用時(shí)在4500到5000左右,而SQLCE是在23000到25000左右,單位ms。所以在性能上大概可以看出SQLite是SQLCE的3到4倍左右。
表2 數(shù)據(jù)庫寫入記錄時(shí)間比較示意圖
記錄數(shù)\時(shí)(ms) 500 2000 5000
Sqlce 1022 6872 23966
Sqlite 382 1428 4621
Sqlite支持大多數(shù)SQL92 標(biāo)準(zhǔn)包括索引、限制、觸發(fā)和查看,不支持外鍵,但支持原子的、一致的、獨(dú)立和持久 (ACID) 的事務(wù),這一點(diǎn)能夠保證即使在系統(tǒng)崩潰或斷電時(shí)數(shù)據(jù)的完整性和有效性。而工程機(jī)械一般工作在比較惡劣的條件下,對數(shù)據(jù)庫的穩(wěn)定有效有比較高的要求。綜上所述,因此在本項(xiàng)目開發(fā)中選用sqlite數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)的管理操作。
2.2SQLite的體系結(jié)構(gòu)
SQLite由被組織在3個(gè)子系統(tǒng)中的8個(gè)獨(dú)立的模塊組成,如圖1所示。這個(gè)模型將查詢過程劃分為幾個(gè)任務(wù),在體系結(jié)構(gòu)棧的頂(未完,下一頁)
附件下載:點(diǎn)擊下載全部文件
|