亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

第一章-SQLite介紹

系統(tǒng) 1894 0

一、 簡(jiǎn)介

1. SQLite是一款嵌入式數(shù)據(jù)庫(kù),它沒(méi)有獨(dú)立運(yùn)行的進(jìn)程,它與所服務(wù)的應(yīng)用程序在應(yīng)用程序進(jìn)程空間內(nèi)共生共存。它的代碼與應(yīng)用程序代碼也是在一起的,或者說(shuō)嵌入其中,作為托管它的程序的一部分。

2. 數(shù)據(jù)庫(kù)服務(wù)器在程序中的好處是不需要網(wǎng)絡(luò)配置和管理。

3. SQLite是開(kāi)源的,不受許可證費(fèi)用約束,而且是專(zhuān)門(mén)為嵌入式設(shè)計(jì)的產(chǎn)品。

二、 體系結(jié)構(gòu)

SQLite 擁有一個(gè)簡(jiǎn)潔的、模塊化的體系結(jié)構(gòu),并引進(jìn)了一些獨(dú)特的方法進(jìn)行關(guān)系型數(shù)據(jù)庫(kù)管理。 它由可以劃分為3個(gè)子系統(tǒng)(編譯器(Compiler)、核心(Core)、后端(Backend))的8個(gè)獨(dú)立模塊組成(詳見(jiàn)下圖)。這些模塊將查詢過(guò)程劃分為幾個(gè)獨(dú)立的任務(wù),就像在流水線上工作一樣。在體系結(jié)構(gòu)棧的頂部編譯查詢語(yǔ)句,在中部執(zhí)行,在底部處理存儲(chǔ)并與操作系統(tǒng)交互。

<SQLite權(quán)威指南>第一章-SQLite介紹

下面讓我們根據(jù)不同模塊展開(kāi)介紹。

  • 接口(Interface)

接口處于棧的頂端,由SQLite C API組成。程序、腳本語(yǔ)言還有與SQLite交互的庫(kù)文件最終都是通過(guò)它與SQLite交互的。從表面上理解,這里是開(kāi)發(fā)者、管理員等與SQLite通信的地方。

  • 編譯器(Compiler)

編譯過(guò)程從詞法分析器(Tokenizer)和語(yǔ)法分析器(Parser)開(kāi)始。它們協(xié)同處理文本形式的結(jié)構(gòu)化查詢語(yǔ)句(Structured Query Language, SQL),分析其語(yǔ)法有效性,然后轉(zhuǎn)化為底層能更方便地處理的層次化數(shù)據(jù)結(jié)構(gòu)。SQLite詞法分析器是手動(dòng)編碼實(shí)現(xiàn)的,它的語(yǔ)法分析器是由SQLite特定的語(yǔ)法分析生成器Lemon(專(zhuān)門(mén)有 一本書(shū) 講解此生成器)產(chǎn)生的。

代碼生成器(Code Generator)將語(yǔ)法樹(shù)翻譯成一種SQLite專(zhuān)用的匯編代碼,這些匯編語(yǔ)言由一些最終由虛擬機(jī)執(zhí)行的指令組成。代碼生成器的唯一工作是將語(yǔ)法樹(shù)轉(zhuǎn)換為完全由這種匯編語(yǔ)言編寫(xiě)的微程序并交給虛擬機(jī)處理。

  • 虛擬機(jī)(Virtual Machine)

架構(gòu)棧的中心部分是虛擬機(jī)(Virtual Machine),也叫做虛擬數(shù)據(jù)庫(kù)引擎(Virtual DataBase Engine,VDBE)。VDBE是基于寄存器的虛擬機(jī),在字節(jié)碼上工作,這使得它可以獨(dú)立頂層操作系統(tǒng)、CPU和系統(tǒng)體系結(jié)構(gòu)。VDBE的字節(jié)代碼(稱為虛擬機(jī)語(yǔ)言)由100多個(gè)被稱為操作碼(opcodes)的可能的任務(wù)構(gòu)成,所有這些操作都是圍繞數(shù)據(jù)庫(kù)進(jìn)行的。

VDBE是一個(gè)專(zhuān)為數(shù)據(jù)處理設(shè)計(jì)的虛擬機(jī)。它的指令集中所有的指令或者用來(lái)完成具體的數(shù)據(jù)庫(kù)操作(比如打開(kāi)一個(gè)表的游標(biāo)、做記錄、提取一列或者開(kāi)始一個(gè)事務(wù)等),或者以某種方式控制棧為完成這些操作做準(zhǔn)備。SQLite中的所有SQL語(yǔ)句----從選擇和更新記錄到創(chuàng)建表、視圖以及索引----都是首先編譯成虛擬機(jī)語(yǔ)言,形成一個(gè)獨(dú)立的定義了如何完成給定的命令的指令集。

VDBE是SQLite的核心,它之前的所有模塊都是用于創(chuàng)建VDBE程序的,它之后的所有模塊都是用于執(zhí)行VDBE程序的,每次執(zhí)行一條指令。

  • 后端(Backend)

后端由B-tree、頁(yè)緩存(page cache)以及操作系統(tǒng)接口組成。B-tree和pager一起作為信息代理。它們使用的數(shù)據(jù)源是數(shù)據(jù)庫(kù)頁(yè),這些頁(yè)是具有相同大小的數(shù)據(jù)塊、就像用于運(yùn)輸?shù)募b箱。頁(yè)里面的"貨物"是表示信息的大量位(bit),這些信息包括記錄、字段和索引項(xiàng)等。B-tree和pager不需要知道信息的內(nèi)容,它們只負(fù)責(zé)移動(dòng)和排列這些頁(yè)。

B-tree的職責(zé)就是排序。它維護(hù)著多個(gè)頁(yè)之間錯(cuò)綜復(fù)雜的關(guān)系,這些關(guān)系能保證快速定位并找到一切有聯(lián)系的數(shù)據(jù)。B-tree將頁(yè)面組織成樹(shù)狀結(jié)構(gòu)(這也是它叫做B-tree的原因),這種組織結(jié)構(gòu)很適合搜索,頁(yè)面就是樹(shù)的葉子。

pager(SQLite的一種數(shù)據(jù)結(jié)構(gòu))幫助B-tree管理頁(yè)面,它負(fù)責(zé)傳輸。pager根據(jù)B-tree的請(qǐng)求從磁盤(pán)讀取頁(yè)面或者向磁盤(pán)寫(xiě)入頁(yè)面。磁盤(pán)操作是目前計(jì)算機(jī)必須做的工作中最慢的事情之一。因此pager試圖通過(guò)將頻繁使用的頁(yè)面緩存在內(nèi)存中來(lái)加速這一操作,從而最小化與硬盤(pán)直接交互所花費(fèi)的時(shí)間。pager的功能描述頁(yè)包含事務(wù)管理、數(shù)據(jù)庫(kù)鎖以及崩潰恢復(fù),其中許多功能是通過(guò)OS接口(OS Interface)實(shí)現(xiàn)的。

像文件鎖一樣的很多事情在不同的操作系統(tǒng)上實(shí)現(xiàn)是不同的。OS接口(OS Interface)為SQLite其他模塊提供了屏蔽這些差異的抽象層。最終的結(jié)果就是其他模塊看到的是一個(gè)一致的對(duì)外的系統(tǒng)接口。所以,pager不用擔(dān)心在Windows上以一種方式鎖文件,而在其他不同操作系統(tǒng)上(例如UNIX)上使用另一種方式。這就使得SQLite很容易移植到不同的操作系統(tǒng)上。

OS接口(OS Interface)的下面就是具體要存取的數(shù)據(jù)。

總體來(lái)看,SQLite分為三個(gè)子系統(tǒng),里面包含了八個(gè)獨(dú)立模塊。

  1. 接口(Interface)

  2. 詞法分析器(Tokenizer)

  3. 語(yǔ)法分析器(Parser)

  4. 代碼生成器(Code Generator)

  5. 虛擬機(jī)(Virtual Machine)

  6. B-Tree

  7. Pager

  8. OS接口(OS Interface)


第一章-SQLite介紹


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久久这里只有免费精品2018 | 久久免费视频7 | 999精品国产 | 日本一级黄色录像 | 国产精品边做奶水狂喷小说 | 四虎影视永久在线观看 | 国产综合久久一区二区三区 | 一区二区三区国产 | 88国产精品视频一区二区三区 | 国内精品久久久久影院网站 | 久久这里只有精品国产99 | 中国女人18毛片 | 亚洲操穴| 国产一级理论免费版 | 国内毛片视频 | 国内精品区一区二区三 | 俄罗斯一级毛片免费播放 | 国产精品视频久久久 | 麻豆亚洲精品一区二区 | 天天爱天天射 | 高清国产一区二区三区 | 又刺激又黄的一级毛片 | 九九热精品免费观看 | 人成午夜 | 国产成人精品s8p视频 | 天天做天天玩天天爽天天 | 成人短视频网站 | 国产高清一区二区三区 | 成人久久久久久 | 亚洲麻豆| 国内精品伊人久久大香线焦 | 亚洲精品视频免费看 | 精品国产一区二区三区久久 | 四虎影 | 米奇精品一区二区三区在线观看 | 国产亚洲自拍一区 | 最近中文字幕无吗高清视频 | 中文字幕福利视频 | 日本久久精品免视看国产成人 | 操穴网站| 欧美kkk4444在线观看 |