<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## SQLite入門與分析(一)---簡介 寫在前面:出于項目的需要,最近打算對SQLite的內核進行一個完整的剖析,在此希望和對SQLite有興趣的一起交流。我知道,這是一個漫長的過程,就像曾經去讀Linux內核一樣,這個過程也將是辛苦的,但我相信結果一定是美好的... ...接下來是第一章。 ### 1、SQLite介紹 自幾十年前出現的商業應用程序以來,數據庫就成為軟件應用程序的主要組成部分。正與數據庫管理系統非常關鍵一樣,它們也變得非常龐大,并占用了相當多的系統資源,增加了管理的復雜性。隨著軟件應用程序逐漸模塊模塊化,一種新型數據庫會比大型復雜的傳統數據庫管理系統更適應。嵌入式數據庫直接在應用程序進程中運行,提供了零配置(zero-configuration)運行模式,并且資源占用非常少。 SQLite是一個開源的嵌入式關系數據庫,它在2000年由D. Richard Hipp發布,它的減少應用程序管理數據的開銷,SQLite可移植性好,很容易使用,很小,高效而且可靠。 SQLite嵌入到使用它的應用程序中,它們共用相同的進程空間,而不是單獨的一個進程。從外部看,它并不像一個RDBMS,但在進程內部,它卻是完整的,自包含的數據庫引擎。 嵌入式數據庫的一大好處就是在你的程序內部不需要網絡配置,也不需要管理。因為客戶端和服務器在同一進程空間運行。SQLite 的數據庫權限只依賴于文件系統,沒有用戶帳戶的概念。SQLite 有數據庫級鎖定,沒有網絡服務器。它需要的內存,其它開銷很小,適合用于嵌入式設備。你需要做的僅僅是把它正確的編譯到你的程序。 ### 2、架構(architecture) SQLite采用了模塊的設計,它由三個子系統,包括8個獨立的模塊構成。 ![document/2015-09-15/55f7bff14e224](https://box.kancloud.cn/document_2015-09-15_55f7bff14e224.png) #### 2.1、接口(Interface) 接口由SQLite C API組成,也就是說不管是程序、腳本語言還是庫文件,最終都是通過它與SQLite交互的(我們通常用得較多的ODBC/JDBC最后也會轉化為相應C API的調用)。 ####2.2、編譯器(Compiler) 在編譯器中,分詞器(Tokenizer)和分析器(Parser)對SQL進行語法檢查,然后把它轉化為底層能更方便處理的分層的數據結構---語法樹,然后把語法樹傳給代碼生成器(code generator)進行處理。而代碼生成器根據它生成一種針對SQLite的匯編代碼,最后由虛擬機(Virtual Machine)執行。 ####2.3、虛擬機(Virtual Machine) 架構中最核心的部分是虛擬機,或者叫做虛擬數據庫引擎(Virtual Database Engine,VDBE)。它和Java虛擬機相似,解釋執行字節代碼。VDBE的字節代碼由128個操作碼(opcodes)構成,它們主要集中在數據庫操作。它的每一條指令都用來完成特定的數據庫操作(比如打開一個表的游標)或者為這些操作棧空間的準備(比如壓入參數)。總之,所有的這些指令都是為了滿足SQL命令的要求(關于VM,后面會做詳細介紹)。 ####2.4、后端(Back-End) 后端由B-樹(B-tree),頁緩存(page cache,pager)和操作系統接口(即系統調用)構成。B-tree和page cache共同對數據進行管理。B-tree的主要功能就是索引,它維護著各個頁面之間的復雜的關系,便于快速找到所需數據。而pager的主要作用就是通過OS接口在B-tree和Disk之間傳遞頁面。 ###3、SQLite的特點(SQLite’s Features and Philosophy) ####3.1、零配置(Zero Configuration) ####3.2、可移植(Portability): 它是運行在Windows,Linux,BSD,Mac OS X和一些商用Unix系統,比如Sun的Solaris,IBM的AIX,同樣,它也可以工作在許多嵌入式操作系統下,比如QNX,VxWorks,alm OS, Symbin和Windows CE。 ####3.3、Compactness: SQLite是被設計成輕量級,自包含的。one header file, one library, and you’re relational, no external database server required ####3.4、簡單(Simplicity) ####3.5、靈活(Flexibility) ####3.6、可靠(Reliability): SQLite的核心大約有3萬行標準C代碼,這些代碼都是模塊化的,很容易閱讀。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看