浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 嵌入式系統(tǒng)

基于ARM-Linux的SQLite嵌入式數(shù)據(jù)庫(kù)的研究

發(fā)布時(shí)間:2008/8/29 0:00:00 訪問(wèn)次數(shù):571

  引言

  隨著嵌入式系統(tǒng)的廣泛應(yīng)用和用戶對(duì)數(shù)據(jù)處理和管理需求的不斷提高,各種智能設(shè)備和數(shù)據(jù)庫(kù)技術(shù)的緊密結(jié)合已經(jīng)得到了各方面的重視。不久的將來(lái)嵌入式數(shù)據(jù)庫(kù)將無(wú)處不在?v觀目前國(guó)際、國(guó)內(nèi)嵌入式數(shù)據(jù)庫(kù)的應(yīng)用情況,目前基于嵌入式數(shù)據(jù)庫(kù)應(yīng)用的市場(chǎng)已經(jīng)進(jìn)入加速發(fā)展的階段。

  1 嵌入式數(shù)據(jù)庫(kù)

  1.1 嵌入式數(shù)據(jù)庫(kù)的設(shè)計(jì)

  嵌入式數(shù)據(jù)庫(kù)系統(tǒng)是指支持某種特定計(jì)算模式或移動(dòng)計(jì)算的數(shù)據(jù)庫(kù)管理系統(tǒng),它通常與操作系統(tǒng)和具體應(yīng)用集成在一起,運(yùn)行在智能型嵌入式設(shè)備或移動(dòng)設(shè)備上。嵌入式數(shù)據(jù)庫(kù)的使用是采用程序驅(qū)動(dòng),即由程序調(diào)用相應(yīng)的api來(lái)實(shí)現(xiàn)數(shù)據(jù)的存取。具有體積小巧、快速高效、穩(wěn)定可靠、可移植性等特點(diǎn),非常適用于嵌入式環(huán)境下的數(shù)據(jù)管理.。

  嵌入式數(shù)據(jù)庫(kù)的主要設(shè)計(jì)思想如下圖1所示,在向上層應(yīng)用提供標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)接口的同時(shí),擺脫傳統(tǒng)數(shù)據(jù)庫(kù)僅僅由軟件驅(qū)動(dòng)的束縛,根據(jù)嵌入式系統(tǒng)的實(shí)際情況用soc技術(shù)同時(shí)實(shí)現(xiàn)硬件驅(qū)動(dòng)。軟件部分按sql92標(biāo)準(zhǔn)實(shí)現(xiàn)sql語(yǔ)句的解析,實(shí)現(xiàn)事務(wù)管理功能、數(shù)據(jù)同步機(jī)制、數(shù)據(jù)的備份和恢復(fù),軟件部分不關(guān)心數(shù)據(jù)的實(shí)際存儲(chǔ),用標(biāo)準(zhǔn)c實(shí)現(xiàn),能同任何嵌入式操作系統(tǒng)內(nèi)核一同編譯,能支持各嵌入式操作系統(tǒng)的安裝格式,由數(shù)據(jù)庫(kù)硬件驅(qū)動(dòng)專用芯片實(shí)現(xiàn)對(duì)實(shí)際數(shù)據(jù)的訪問(wèn)功能(存儲(chǔ)器讀寫,i/o通訊,異構(gòu)數(shù)據(jù)庫(kù)接駁)。

  圖1 嵌入式數(shù)據(jù)庫(kù)驅(qū)動(dòng)結(jié)構(gòu)圖

  1.2. 嵌入式數(shù)據(jù)庫(kù)sqlite

  sqlite 是d. richard hipp 在2000年開發(fā)的一個(gè)小型嵌入式數(shù)據(jù)庫(kù)。他是完全獨(dú)立的,不具有外部依賴性,可以較為方便地應(yīng)用于嵌入式系統(tǒng)中。其源代碼完全開放,可以免費(fèi)用于任何用途,包括商業(yè)目的。sqlite 雖然是個(gè)極端輕量級(jí)的關(guān)系數(shù)據(jù)庫(kù),卻保留了數(shù)據(jù)庫(kù)的大部分特征,他提供了對(duì)sql92 標(biāo)準(zhǔn)的大多數(shù)支持:支持多表和索引、事務(wù)、視圖、觸發(fā)和一系列的用戶接口及驅(qū)動(dòng)。其主要特征如下::

  (1) 支持原子的、一致的、獨(dú)立的和持久的(acid) 事務(wù)特性,即使系統(tǒng)崩潰和掉電。

  (2) 零配置(zero2configuration),無(wú)需安裝和管理。

  (3) 一個(gè)完整的數(shù)據(jù)庫(kù)存儲(chǔ)在單一磁盤文件中。

  (4) 數(shù)據(jù)庫(kù)文件可以在不同字節(jié)順序的機(jī)器間自由共享。

  (5) 支持?jǐn)?shù)據(jù)庫(kù)大小至2 tb。

  (6) 字符串和二進(jìn)制大對(duì)象(blobs) 的大小僅被有效內(nèi)存限制。

  (7) 源碼體積小,編譯后低于250 kb。

  (8) 大部分的操作比關(guān)系型數(shù)據(jù)庫(kù)引擎要快。

  (9) 簡(jiǎn)單易用的api。

  sqlite 由于小、快、簡(jiǎn)單、可靠,而且作者完全放棄版權(quán),從他一發(fā)布出來(lái),便深受歡迎。對(duì)于嵌人式環(huán)境,管理、執(zhí)行、維護(hù)的簡(jiǎn)單化比企業(yè)數(shù)據(jù)庫(kù)引擎提供的許多復(fù)雜應(yīng)用更重要,因此sqlite 數(shù)據(jù)庫(kù)是一個(gè)很好的選擇。

  2 sqlite 內(nèi)部結(jié)構(gòu)及開發(fā)技術(shù)

  2. 1 sqlite 內(nèi)部結(jié)構(gòu)

  sqlite 采用模塊化的設(shè)計(jì),主要由4個(gè)部分組成:內(nèi)核(core)、sql編譯器( sql compiler)、后端(backend)以及附件(accessories)。內(nèi)部結(jié)構(gòu)如圖2所示。

  圖2  sqlite 的內(nèi)部結(jié)構(gòu)

  sqlite 的接口是一些已經(jīng)編寫好的c庫(kù),即使使用不同語(yǔ)言的api,在底層仍然使用c 庫(kù)執(zhí)行。sql語(yǔ)句通過(guò)接口進(jìn)入到高效的sql編譯器,由標(biāo)記處理器( tokeni2zer)分解成檸檬分析器(par ser) 可以識(shí)別的各個(gè)標(biāo)志符,然后由分析器重新組合標(biāo)志符并調(diào)用代碼生成器(code generator) 生成虛擬機(jī)器碼,交由虛擬機(jī)( virtual machine)去執(zhí)行,最終完成sql 語(yǔ)句指定的任務(wù)。虛擬機(jī)是sqlite 內(nèi)部結(jié)構(gòu)的核心,不僅完成與數(shù)據(jù)操作相關(guān)的全部操作,而且還是客戶和存儲(chǔ)之間信息進(jìn)行交換的中間單元。數(shù)據(jù)庫(kù)按照b樹(b2t ree) 的形式存儲(chǔ)在磁盤上,通過(guò)可調(diào)整的頁(yè)面緩沖(pager) 獲得對(duì)數(shù)據(jù)的快速查找和存儲(chǔ)。為了方便移植,sqlite 使用一個(gè)抽象層接口(os in2terface) 與不同操作系統(tǒng)進(jìn)行對(duì)接。

  2. 2 sqlite 開發(fā)技術(shù)

  sqlite 本身提供了c 語(yǔ)言的api 接口,使得對(duì)數(shù)據(jù)庫(kù)的操作十分簡(jiǎn)單,主要是對(duì)3個(gè)api 函數(shù)的調(diào)用。

  (1) 打開數(shù)據(jù)庫(kù)

  int sqlite3 open (

  const char 3 filename , / 3 數(shù)據(jù)庫(kù)文件名(u tf28) 3 /

  sqlite3 3 3 ppdb   / 3 輸出sqlite 數(shù)據(jù)庫(kù)句柄3 /

  ) ;

  (2) 執(zhí)行sql

  int sqlite3 exec (

  sqlite3 3 ,      / 3 已經(jīng)打開的數(shù)據(jù)庫(kù)句柄3 /

  const char 3 sql ,   / 3 要執(zhí)行的sql 語(yǔ)句3 /

  sqlite callback ,   / 3 回調(diào)函數(shù)3 /

  void 3 ,      / 3 回調(diào)函數(shù)的第一個(gè)參數(shù)3 /

  char 3 3

  引言

  隨著嵌入式系統(tǒng)的廣泛應(yīng)用和用戶對(duì)數(shù)據(jù)處理和管理需求的不斷提高,各種智能設(shè)備和數(shù)據(jù)庫(kù)技術(shù)的緊密結(jié)合已經(jīng)得到了各方面的重視。不久的將來(lái)嵌入式數(shù)據(jù)庫(kù)將無(wú)處不在?v觀目前國(guó)際、國(guó)內(nèi)嵌入式數(shù)據(jù)庫(kù)的應(yīng)用情況,目前基于嵌入式數(shù)據(jù)庫(kù)應(yīng)用的市場(chǎng)已經(jīng)進(jìn)入加速發(fā)展的階段。

  1 嵌入式數(shù)據(jù)庫(kù)

  1.1 嵌入式數(shù)據(jù)庫(kù)的設(shè)計(jì)

  嵌入式數(shù)據(jù)庫(kù)系統(tǒng)是指支持某種特定計(jì)算模式或移動(dòng)計(jì)算的數(shù)據(jù)庫(kù)管理系統(tǒng),它通常與操作系統(tǒng)和具體應(yīng)用集成在一起,運(yùn)行在智能型嵌入式設(shè)備或移動(dòng)設(shè)備上。嵌入式數(shù)據(jù)庫(kù)的使用是采用程序驅(qū)動(dòng),即由程序調(diào)用相應(yīng)的api來(lái)實(shí)現(xiàn)數(shù)據(jù)的存取。具有體積小巧、快速高效、穩(wěn)定可靠、可移植性等特點(diǎn),非常適用于嵌入式環(huán)境下的數(shù)據(jù)管理.。

  嵌入式數(shù)據(jù)庫(kù)的主要設(shè)計(jì)思想如下圖1所示,在向上層應(yīng)用提供標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)接口的同時(shí),擺脫傳統(tǒng)數(shù)據(jù)庫(kù)僅僅由軟件驅(qū)動(dòng)的束縛,根據(jù)嵌入式系統(tǒng)的實(shí)際情況用soc技術(shù)同時(shí)實(shí)現(xiàn)硬件驅(qū)動(dòng)。軟件部分按sql92標(biāo)準(zhǔn)實(shí)現(xiàn)sql語(yǔ)句的解析,實(shí)現(xiàn)事務(wù)管理功能、數(shù)據(jù)同步機(jī)制、數(shù)據(jù)的備份和恢復(fù),軟件部分不關(guān)心數(shù)據(jù)的實(shí)際存儲(chǔ),用標(biāo)準(zhǔn)c實(shí)現(xiàn),能同任何嵌入式操作系統(tǒng)內(nèi)核一同編譯,能支持各嵌入式操作系統(tǒng)的安裝格式,由數(shù)據(jù)庫(kù)硬件驅(qū)動(dòng)專用芯片實(shí)現(xiàn)對(duì)實(shí)際數(shù)據(jù)的訪問(wèn)功能(存儲(chǔ)器讀寫,i/o通訊,異構(gòu)數(shù)據(jù)庫(kù)接駁)。

  圖1 嵌入式數(shù)據(jù)庫(kù)驅(qū)動(dòng)結(jié)構(gòu)圖

  1.2. 嵌入式數(shù)據(jù)庫(kù)sqlite

  sqlite 是d. richard hipp 在2000年開發(fā)的一個(gè)小型嵌入式數(shù)據(jù)庫(kù)。他是完全獨(dú)立的,不具有外部依賴性,可以較為方便地應(yīng)用于嵌入式系統(tǒng)中。其源代碼完全開放,可以免費(fèi)用于任何用途,包括商業(yè)目的。sqlite 雖然是個(gè)極端輕量級(jí)的關(guān)系數(shù)據(jù)庫(kù),卻保留了數(shù)據(jù)庫(kù)的大部分特征,他提供了對(duì)sql92 標(biāo)準(zhǔn)的大多數(shù)支持:支持多表和索引、事務(wù)、視圖、觸發(fā)和一系列的用戶接口及驅(qū)動(dòng)。其主要特征如下::

  (1) 支持原子的、一致的、獨(dú)立的和持久的(acid) 事務(wù)特性,即使系統(tǒng)崩潰和掉電。

  (2) 零配置(zero2configuration),無(wú)需安裝和管理。

  (3) 一個(gè)完整的數(shù)據(jù)庫(kù)存儲(chǔ)在單一磁盤文件中。

  (4) 數(shù)據(jù)庫(kù)文件可以在不同字節(jié)順序的機(jī)器間自由共享。

  (5) 支持?jǐn)?shù)據(jù)庫(kù)大小至2 tb。

  (6) 字符串和二進(jìn)制大對(duì)象(blobs) 的大小僅被有效內(nèi)存限制。

  (7) 源碼體積小,編譯后低于250 kb。

  (8) 大部分的操作比關(guān)系型數(shù)據(jù)庫(kù)引擎要快。

  (9) 簡(jiǎn)單易用的api。

  sqlite 由于小、快、簡(jiǎn)單、可靠,而且作者完全放棄版權(quán),從他一發(fā)布出來(lái),便深受歡迎。對(duì)于嵌人式環(huán)境,管理、執(zhí)行、維護(hù)的簡(jiǎn)單化比企業(yè)數(shù)據(jù)庫(kù)引擎提供的許多復(fù)雜應(yīng)用更重要,因此sqlite 數(shù)據(jù)庫(kù)是一個(gè)很好的選擇。

  2 sqlite 內(nèi)部結(jié)構(gòu)及開發(fā)技術(shù)

  2. 1 sqlite 內(nèi)部結(jié)構(gòu)

  sqlite 采用模塊化的設(shè)計(jì),主要由4個(gè)部分組成:內(nèi)核(core)、sql編譯器( sql compiler)、后端(backend)以及附件(accessories)。內(nèi)部結(jié)構(gòu)如圖2所示。

  圖2  sqlite 的內(nèi)部結(jié)構(gòu)

  sqlite 的接口是一些已經(jīng)編寫好的c庫(kù),即使使用不同語(yǔ)言的api,在底層仍然使用c 庫(kù)執(zhí)行。sql語(yǔ)句通過(guò)接口進(jìn)入到高效的sql編譯器,由標(biāo)記處理器( tokeni2zer)分解成檸檬分析器(par ser) 可以識(shí)別的各個(gè)標(biāo)志符,然后由分析器重新組合標(biāo)志符并調(diào)用代碼生成器(code generator) 生成虛擬機(jī)器碼,交由虛擬機(jī)( virtual machine)去執(zhí)行,最終完成sql 語(yǔ)句指定的任務(wù)。虛擬機(jī)是sqlite 內(nèi)部結(jié)構(gòu)的核心,不僅完成與數(shù)據(jù)操作相關(guān)的全部操作,而且還是客戶和存儲(chǔ)之間信息進(jìn)行交換的中間單元。數(shù)據(jù)庫(kù)按照b樹(b2t ree) 的形式存儲(chǔ)在磁盤上,通過(guò)可調(diào)整的頁(yè)面緩沖(pager) 獲得對(duì)數(shù)據(jù)的快速查找和存儲(chǔ)。為了方便移植,sqlite 使用一個(gè)抽象層接口(os in2terface) 與不同操作系統(tǒng)進(jìn)行對(duì)接。

  2. 2 sqlite 開發(fā)技術(shù)

  sqlite 本身提供了c 語(yǔ)言的api 接口,使得對(duì)數(shù)據(jù)庫(kù)的操作十分簡(jiǎn)單,主要是對(duì)3個(gè)api 函數(shù)的調(diào)用。

  (1) 打開數(shù)據(jù)庫(kù)

  int sqlite3 open (

  const char 3 filename , / 3 數(shù)據(jù)庫(kù)文件名(u tf28) 3 /

  sqlite3 3 3 ppdb   / 3 輸出sqlite 數(shù)據(jù)庫(kù)句柄3 /

  ) ;

  (2) 執(zhí)行sql

  int sqlite3 exec (

  sqlite3 3 ,      / 3 已經(jīng)打開的數(shù)據(jù)庫(kù)句柄3 /

  const char 3 sql ,   / 3 要執(zhí)行的sql 語(yǔ)句3 /

  sqlite callback ,   / 3 回調(diào)函數(shù)3 /

  void 3 ,      / 3 回調(diào)函數(shù)的第一個(gè)參數(shù)3 /

  char 3 3

相關(guān)IC型號(hào)

熱門點(diǎn)擊

 

推薦技術(shù)資料

DFRobot—玩的就是
    如果說(shuō)新車間的特點(diǎn)是“靈動(dòng)”,F(xiàn)QPF12N60C那么... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號(hào)-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!