黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

第一章-SQLite介紹

系統(tǒng) 1990 0

一、 簡(jiǎn)介

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

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

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

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

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

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

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

  • 接口(Interface)

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

  • 編譯器(Compiler)

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

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

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

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

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

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

  • 后端(Backend)

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

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

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

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

  1. 接口(Interface)

  2. 詞法分析器(Tokenizer)

  3. 語法分析器(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

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

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論