精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

知其然更要知其所以然,聊聊SQLite軟件架構

數據庫 其他數據庫
SQLite雖然非常小巧,但功能卻非常豐富,正所謂“麻雀雖小,五臟俱全”。SQLite不僅具備基本的SQL特性,還具備索引、觸發器、視圖和事務等特性。

SQLite是一個非常受歡迎的數據庫,在數據庫排行榜中已經進入前十的行列。這主要是因為該數據庫非常小巧,而且可以支持Linux、Windows、iOS和Andriod的主流的操作系統。

知其然更要知其所以然,聊聊SQLite軟件架構

SQLite非常簡單,是一個進程內的動態庫數據庫。其最大的特點是可以支持不同的語言來使用,比如C、C++、Java等等。同時,SQLite還是一個開源的數據庫,也就是開發者可以根據自己的需求來修改數據的功能特性。

SQLite雖然非常小巧,但功能卻非常豐富,正所謂“麻雀雖小,五臟俱全”。SQLite不僅具備基本的SQL特性,還具備索引、觸發器、視圖和事務等特性。

SQLite的主要API

SQLite提供兩種訪問接口,一種是通過sqlite命令行工具,另外一種是通過動態庫,也就是API函數。在學習SQLite架構之前,我們有必要對其API進行一個簡要的介紹。其實SQLite的API很簡單,主要包括三個,分別是sqlite3_open、sqlite3_exec和sqlite3_close三個函數。其中sqlite3_exec則是用于執行SQL語句的函數。

也就是說sqlite3_exec是SQLite功能的關鍵入口,我們后面分析代碼也應該以此函數作為突破點。其它函數相對簡單,也沒那么重要。

SQLite整體架構

首先我們從整體架構上介紹一下SQLIte。其架構如圖所示,包括接口層、SQL命令處理器和存儲后端等。

知其然更要知其所以然,聊聊SQLite軟件架構

最為核心的不是就是SQLite內核了。其中包括接口層、SQL命令處理器和虛擬機三部分。SQL命令處理器負責對用戶的SQL進行預處理,最終生成適用于虛擬機執行的代碼。

其下是后端部分,后端部分相當于存儲引擎。下面我們簡要的介紹一下每個模塊的功能。

(1) 接口

SQLIte庫的使用通過函數調用實現。為了避免與其它庫出現沖突,SQLite的函數都以sqlite3作為前綴。接口部分的實現在文件main.c,legacy.c和vdbeapi.c中。其中main.c中包含其主要的接口,包括sqlite3_open、sqlite3_config和sqlite3_close等等。SQLite中最終的函數不在main.c中,而是在legacy.c中,該文件中只包含這一個接口的實現。

(2) 詞法分析器

詞法分析器對SQL語句字符串進行解析,最終生成單詞(token)序列。并且將生成的單詞序列傳給解析器進行下一步的動作。該功能的具體實現在文件tokenize.c中,核心入口函數為sqlite3RunParser。

(3) 解析器

SQLite的解析器基于Lemon實現,它實現將SQL語句字符串解析成語法樹。Lemon是一個與YACC/BISON類似的詞法分析庫。該庫的源代碼在tool目錄中。

(4) 代碼生成器

代碼生成器用于生成與SQL語句對應,可以在虛擬機執行的代碼。代碼生成器實現比較復雜,包含的文件有:build.c, delete.c, attach.c, expr.c, insert.c, pragma.c, select.c, auth.c等等。通過文件名可以看出,這里很多文件其實分別對應著一個SQL語句,比如delete,insert和select等。

(5) 虛擬機

SQL的具體執行在一個稱為虛擬機的組件中進行的,這個在前面架構圖中已經有所展示。虛擬機執行的代碼有前面代碼生成器產生。虛擬機的實現在文件vdbe.h和vdbe.c中。

(6) B-樹

SQLite的數據通過B樹進行組織管理。每個表或者索引都有一個對應的B樹。所有的B樹存儲在一個數據庫文件中。B樹的具體實現在btree.c和btree.h文件中。

(7) 頁緩存

SQLite的文件被劃分為等份大小,B樹也是以該大小為粒度來對數據進行管理。頁緩存是該粒度對應的內存內容,通過該內存實現對數據塊的讀寫等訪問。頁緩存相關的實現在pager.c和pcache.c等文件中。

(8) 操作系統接口

SQLite是一個跨平臺的數據庫,其存儲數據需要兼容Windows和Linux的文件系統API。為了方便,SQLite實現了一個抽象層。這樣對于SQLite業務邏輯來說,只需要調用該抽象層的接口即可,而不用關心操作系統。

(9) 基礎庫

包含一個被各個模塊都可能使用到的基礎庫,比如內存分配,字符串處理等。

SQLite文件格式

前文我們簡要的介紹了一下SQLite的軟件架構以及每個組件的基本功能。接下來我們介紹一下數據庫文件的相關功能。

在SQLite中一個文件承載著一個數據庫實例,這個文件稱為主庫文件(main database file)。除了主庫文件外,還可能有一些其它文件,比如用于事務的日志文件等。本文主要集中介紹主庫文件,其它文件后續介紹。

(1) 頁

數據庫文件由多個頁構成,每個頁的大小在512到65536字節之間,且大小必須是2的冪。頁通過編號進行標記,起始值為1,最大編號為2的31次冪-2。頁的默認大小是4KB,本文以默認大小為例進行介紹。

知其然更要知其所以然,聊聊SQLite軟件架構

在數據庫中的每個頁都有一個特定的用途,這些用途包括:

  • 鎖字節頁(Lock-byte page)
  • 剩余 頁
  • B樹 頁
  • 指針映射頁
  • 有效負載溢出頁

數據庫文件的第一個頁是比較特殊的,它包含整個數據庫文件的描述信息,這里稱為數據庫頭信息。

(2) 數據庫頭

數據庫頭包含100個字節的內容,其中每一個成員的偏移,大小和功能如下圖所示。

知其然更要知其所以然,聊聊SQLite軟件架構

我們可以創建一個數據庫實例,然后對照文件內容與數據庫頭的格式進行理解。比如數據庫頭的第一個成員為一個魔數,用于標識該文件為SQLite數據庫文件及版本。在下圖中可以找到該信息,可以看出兩者完全匹配(SQLite format 3)。

知其然更要知其所以然,聊聊SQLite軟件架構

除了上述數據庫頭的格式外,每個不同的頁都有不同的布局。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2022-05-22 10:02:32

CREATESQL 查詢SQL DDL

2022-07-05 09:03:05

Flink SQLTopN

2022-06-10 09:01:04

OverFlinkSQL

2018-08-27 06:30:49

InnoDBMySQLMyISAM

2022-06-06 09:27:23

FlinkSQLGroup

2022-05-18 09:02:28

Flink SQLSQL字符串

2022-05-15 09:57:59

Flink SQL時間語義

2022-06-29 09:01:38

FlinkSQL時間屬性

2022-05-27 09:02:58

SQLHive語義

2021-11-28 11:36:08

SQL Flink Join

2022-08-10 10:05:29

FlinkSQL

2022-05-12 09:02:47

Flink SQL數據類型

2021-11-27 09:03:26

flink join數倉

2021-12-09 06:59:24

FlinkSQL 開發

2021-12-17 07:54:16

Flink SQLTable DataStream

2022-06-18 09:26:00

Flink SQLJoin 操作

2021-09-12 07:01:07

Flink SQL ETL datastream

2021-04-21 17:54:02

KafkaZookeeper場景

2022-05-09 09:03:04

SQL數據流數據

2021-11-24 08:17:21

Flink SQLCumulate WiSQL
點贊
收藏

51CTO技術棧公眾號

久久先锋资源| 群体交乱之放荡娇妻一区二区 | 日本久久精品电影| 亚洲午夜精品一区二区| www.久久成人| 日本vs亚洲vs韩国一区三区二区| 久久国产精品偷| 日本丰满少妇裸体自慰| 日韩毛片免费视频一级特黄| 午夜激情一区二区| 亚洲国产精品女人| 欧美另类自拍| 成人av资源站| 91精品久久久久久久久久久| 国产区一区二区三| 亚洲精品成人无限看| 精品无人国产偷自产在线| 男插女视频网站| 成人精品国产亚洲| 精品高清美女精品国产区| 懂色av一区二区三区四区五区| 青青草手机在线| 高清不卡一区二区在线| 国产精品亚洲片夜色在线| 精品欧美一区二区三区免费观看| 91精品1区| 中文字幕欧美在线| 性欧美丰满熟妇xxxx性仙踪林| 中文字幕一区图| 4438成人网| 一区二区xxx| 国产精欧美一区二区三区蓝颜男同| 一区二区视频在线看| 中文视频一区视频二区视频三区| 黄色网址在线播放| 91免费视频网| 国产在线播放一区二区| 性欧美videos另类hd| 国产一区视频在线看| 国产欧美日韩免费| 中文字幕人妻丝袜乱一区三区| 久久av最新网址| 7777kkkk成人观看| 日韩三级免费看| 99热精品在线| 欧美影院久久久| 中文字幕一区在线播放| 国产一区二区三区的电影| 国语自产精品视频在线看| 国产亚洲欧美精品久久久久久| 综合一区二区三区| 欧美成人久久久| 九九热精彩视频| 国精品一区二区三区| 久久久久久久91| 国产性生活网站| 精品999成人| 欧美有码在线观看| 日韩国产成人在线| 麻豆精品久久久| 91亚洲精品在线| 亚洲国产精品欧美久久| k8久久久一区二区三区| 久久精品中文字幕一区二区三区| 日本福利在线观看| 国产亚洲欧美日韩在线一区| 亚洲国产精品视频一区| 精品孕妇一区二区三区| 夜夜夜精品看看| 鲁一鲁一鲁一鲁一澡| 婷婷综合六月| 91精品国产免费| 成人在线视频免费播放| 国产一区二区三区91| 日韩视频免费中文字幕| 欧美黑吊大战白妞| 亚洲综合日韩| 91精品久久久久久久久久久| 丰满熟妇乱又伦| 久久久久久久久久久久久女国产乱| 色狠狠久久av五月综合| 在线三级中文| 日本精品免费观看高清观看| 亚洲免费黄色录像| 玖玖玖免费嫩草在线影院一区| 亚洲欧洲午夜一线一品| 中文字幕在线观看2018| 日韩午夜在线电影| 国产九九精品视频| 欧美 日韩 国产 成人 在线| 国产午夜精品理论片a级大结局| 一区二区三区四区久久| 僵尸再翻生在线观看| 欧美日韩黄色一区二区| a天堂视频在线观看| 成久久久网站| 亚洲91精品在线观看| 中文字幕人成人乱码亚洲电影| 成人综合婷婷国产精品久久| 天天综合色天天综合色hd| 亚洲欧美成人影院| 欧美在线一二三四区| 久久久无码人妻精品无码| 精品国产视频| 69av视频在线播放| www五月婷婷| 国产精品视频一二三区| 日本午夜激情视频| 精品一区二区三区亚洲| 亚洲一级免费视频| 日韩毛片在线视频| 国产精品99久| 中文字幕一区二区三区有限公司| 日本黄色免费在线| 欧美成人国产一区二区| 在线日韩国产网站| 麻豆精品91| 国产精品一区二区三区不卡| 在线看av的网址| 一本久久综合亚洲鲁鲁五月天 | 国产一区二区三区国产精品| 国产性色av一区二区| 日本熟妇毛耸耸xxxxxx| 国产很黄免费观看久久| 中文字幕久久一区| 福利视频亚洲| 一夜七次郎国产精品亚洲| 色屁屁影院www国产高清麻豆| 99国产精品久久久久久久久久久| 国产精品久久久影院| 成人在线视频区| 色狠狠久久aa北条麻妃| 在线观看av大片| 国产亚洲女人久久久久毛片| 精品一区二区中文字幕| 偷拍精品福利视频导航| 91chinesevideo永久地址| 天天干,夜夜操| 婷婷一区二区三区| 国模私拍在线观看| 在线亚洲精品| 久久久精彩视频| 超碰一区二区| 亚洲欧美制服中文字幕| 国产一级片av| 国产婷婷精品av在线| 国内自拍视频网| 精品国内自产拍在线观看视频| 国产99久久精品一区二区| 男男激情在线| 欧美三级日韩三级国产三级| 潮喷失禁大喷水aⅴ无码| 麻豆国产欧美日韩综合精品二区| 亚洲资源在线网| 亚洲三级在线| 欧美肥臀大乳一区二区免费视频| 亚洲精品911| 欧美日韩激情视频| 精品人伦一区二区三电影| 奇米精品一区二区三区在线观看一| 亚洲欧美日本国产有色| 国产va免费精品观看精品| 色与欲影视天天看综合网| 色噜噜在线播放| 色综合天天综合在线视频| 青青草华人在线视频| 国产美女主播视频一区| 91黄色在线看| 国产成人三级| 91视频免费网站| a'aaa级片在线观看| 亚洲欧美在线免费| 国产欧美日韩成人| 亚洲h在线观看| 黄色片在线观看免费| 国产一区在线视频| 99热在线这里只有精品| 日韩免费久久| 国产传媒一区二区| av有声小说一区二区三区| 日韩在线视频中文字幕| 色丁香婷婷综合久久| 欧美亚洲国产一区二区三区va| av激情在线观看| 91香蕉国产在线观看软件| 中日韩av在线播放| 亚洲国产精品一区| 亚洲伊人婷婷| 婷婷成人综合| 91成人免费看| 搜成人激情视频| 欧美精品videosex性欧美| 国产毛片av在线| 精品国产乱码久久久久久牛牛| 免费一级a毛片| 亚洲大片在线观看| 艳妇荡乳欲伦69影片| 久久综合av免费| 师生出轨h灌满了1v1| 免费在线观看不卡| 国产青青在线视频| 欧美精品导航| 亚洲最新在线| 美女精品一区最新中文字幕一区二区三区| 亚洲精品日产aⅴ| 朝桐光一区二区| 91国内在线视频| 91黄色在线| www日韩欧美| 国产一级片在线| 亚洲国产精品va| 99热这里只有精品5| 欧美网站大全在线观看| 99热只有这里有精品| 亚洲精选视频在线| 免费黄色国产视频| 久久久精品免费网站| 制服丝袜第一页在线观看| 国产一区 二区 三区一级| 国模私拍视频在线观看| 日韩黄色在线观看| 青青草原av在线播放| 136国产福利精品导航网址| 99久热在线精品视频| 99久久亚洲精品蜜臀| 无遮挡亚洲一区| 欧美综合视频| 日韩精品最新在线观看| 国产剧情一区| 欧美性大战久久久久| 亚洲小说图片视频| 精品久久久久久中文字幕动漫| av成人资源| 国产精品视频一区二区三区经| 清纯唯美激情亚洲| 99国产视频| caoporn成人| 国产精品入口免费| 成人av综合网| 国产精品伊人日日| 久9re热视频这里只有精品| 国产亚洲一区二区三区在线播放| 97久久综合区小说区图片区| 福利视频久久| 欧美变态网站| 免费在线一区二区| 国产一区二区三区四区大秀| 视频一区视频二区视频| 日本一二区不卡| 致1999电视剧免费观看策驰影院| 久久久久久影院| 亚洲中文字幕无码一区二区三区 | 欧美大片免费看| 国产三级伦理在线| 欧美性在线观看| 亚洲不卡系列| 成人国产精品久久久| 高清在线一区二区| 国产伦精品一区二区三区四区免费| 老牛国内精品亚洲成av人片| 免费久久一级欧美特大黄| 国产综合久久久| 中国成人在线视频| 狠狠爱成人网| 欧美色图另类小说| 欧美aaa在线| 欧美69精品久久久久久不卡| 成人高清视频在线| 国产ts在线播放| 亚洲男同性视频| 日韩 国产 在线| 在线观看日韩一区| 99er热精品视频| 亚洲级视频在线观看免费1级| 国产小视频免费在线网址| 色狠狠av一区二区三区香蕉蜜桃| 蜜臀av在线播放| 国产999在线观看| 日韩欧美高清一区二区三区| 久久精品国产99精品国产亚洲性色| 第九色区aⅴ天堂久久香| 中文字幕第一页亚洲| 国产精品日本| 日韩av福利在线观看| 久久影院午夜论| 成人免费精品动漫网站| 福利精品视频在线| 一区二区三区亚洲视频| 亚洲国产高清高潮精品美女| 1024国产在线| 91精品国产91久久久久久不卡| 农村妇女一区二区| 精品一卡二卡三卡四卡日本乱码 | 天天操天天射天天舔| 日韩最新在线视频| 老牛影视精品| 91中文字幕在线| 精品成人影院| 日韩精品视频在线观看视频 | 好吊视频一区二区三区四区| 一区二区在线播放视频| 成人动漫精品一区二区| 亚洲女人毛茸茸高潮| 欧美视频中文字幕在线| 精品人妻午夜一区二区三区四区| 国产亚洲视频在线观看| 俺来也官网欧美久久精品| 91久久久久久久久久久| 欧美在线色图| 免费无码av片在线观看| 高潮精品一区videoshd| 91高清免费观看| 欧美日韩的一区二区| 国产毛片av在线| 国产成人aa精品一区在线播放| 国产精品宾馆| 成人在线视频一区二区三区| 精品一区二区三区在线观看 | 国产精品精品一区二区三区午夜版| 亚洲日本va| 久久久久久久香蕉| 国产一区二区三区香蕉| 四虎永久免费地址| 精品视频123区在线观看| 国产黄在线看| 国产成人精品综合| 一个色免费成人影院| av天堂永久资源网| 91蜜桃在线免费视频| 99热只有这里有精品| 日韩h在线观看| 国产美女精品写真福利视频| 国产精品一区二区欧美| 亚洲激情在线| 日本黄色免费观看| 五月激情综合色| 五月婷婷开心中文字幕| 97精品一区二区视频在线观看| 精品成人自拍视频| 青青青在线视频播放| 成人av在线资源| 午夜精品三级久久久有码| 日韩高清免费在线| 日韩福利一区| 视频一区在线免费观看| 美女www一区二区| 亚洲少妇xxx| 欧美一区二区黄色| 草美女在线观看| 国产综合 伊人色| 久久久久免费| 貂蝉被到爽流白浆在线观看| 91精品婷婷国产综合久久竹菊| 黄色在线免费网站| 成人黄色片视频网站| 99精品免费| 五月婷婷欧美激情| 制服.丝袜.亚洲.另类.中文| 国产成人午夜| 国产成人精品日本亚洲11| 国产精品婷婷| 极品久久久久久久| 欧美一区二区三区免费视频 | 污污污www精品国产网站| 欧美性猛交xxxx乱大交3| 9色在线视频| 高清视频一区| 日韩精品乱码免费| 日本精品在线免费观看| 亚洲国产欧美一区| 韩国女主播一区二区| 日本xxx免费| ww久久中文字幕| 在线视频 中文字幕| 久久久噜噜噜久久久| av一区二区在线观看| 手机看片国产精品| 日韩欧美一区二区三区| 黄色网址在线免费观看| 激情欧美一区二区三区中文字幕 | 岛国精品一区二区三区| 激情av一区二区| 秋霞a级毛片在线看| 国产一级精品aaaaa看| 免费一级片91| 久久露脸国语精品国产91| 在线电影欧美日韩一区二区私密| 日韩精品视频一区二区三区| 黄色片视频在线播放| 一区二区三区在线看| 国产精品久久久久久久龚玥菲 | 成人同人动漫免费观看 | 欧美性生活一级片| 又色又爽又黄视频| 日韩欧美国产免费播放| 污网站在线免费看| 亚洲v国产v在线观看| www.av精品| www.天堂av.com| 国产噜噜噜噜噜久久久久久久久|