SQLite 是一個類似Access 的輕量級數據庫系統,但是更小、更快、容量更大,并發更高。為什么說SQLite 最適合中小站點網站制作呢?并不是說其他數據庫不好, Oracle、MySQL、SQLServer 也都是非常優秀的DBS,只不過他們設計目標不同,特性不同,所以只有更適用某個應用場景,沒有絕對的好壞之分。
SQLite 數據庫的優勢
真正開源的小型嵌入式數據庫,支持事務、觸發器器。
性能至少優于MySql 4.1.0 。
目前已被幾乎所有的高級程序開發語言支持。
由于可以自定義數據庫函數,尤其在php 的擴展中可支持全部php 函數,其性能可以說是無上限的。
有很多用PHP 開發的管理工具,與PhpMyAdmin 的界面很相似,比如常見的:SQLiteManager。
明月作為一個運維人員,搭建、運營和管理過很多中小型站點,也總結出了一個大概的“中小型站點特點”出來:
中小型站點的特點
數據量不超過10 萬
日頁面訪問量不超過10 萬
一部分網站全部生成靜態頁面,一部分網站實時查詢數據庫動態訪問。
站長不懂技術,不懂得復雜的數據庫維護,只會用FTP 管理網站。
個人站點基本上是一個人管理,一般情況下只有一個人在訪問后臺,沒有并發。
對數據庫來說是讀多寫少,只有在站長訪問后臺的時候才會寫入。
多運行于虛擬主機又或者輕量應用云服務器,大部分PHP 主機均同時支持MySQL,小部分PHP 主機需要單獨購買MySQL,而輕量應用云服務器更是有CPU 基準限制等等。
多數中小站點的HTTP 服務與MySQL 部署在同一服務器上。
綜上所述可見中小型站點的性能需求是很小的,基于這個最大的特點來看,使用SQLite 數據庫顯得更加的契合,對于后期管理維護也是超級的簡單和高效。
SQLite 在中小型站點下的突出表現
與MySQL 相比,它更徹底的免費,并且沒有任何使用上的限制。
非常小巧,PHP5 以上版本中無需任何配置即可支持SQLite。
無需單獨購買數據庫服務,無服務器進程,配置成本為零。
整個數據庫存儲在一個單個的文件中,數據導入導出備份恢復都是復制文件,維護難度為零。
讀速度快,在數據量不是很大的情況下速度較快,更重要的是:省掉了一次數據庫遠程鏈接沒有復雜的權限驗證,打開就能操作。
選擇SQLite 后成本的降低幾乎是必然的,技術上的支持和兼容更是毫無壓力,后期維護備份幾乎是無腦操作即可,整體的性能表現也完美的契合了硬件配置。當然SQLite 的缺點也是不可避免的,但是在中小型站點上能很好的規避:
并發低動態訪問時當訪問量不超過10 萬PV 的時候,SQLite 超過Access 的并發能力已經綽綽有余;生成靜態頁后更無需考慮數據庫的并發問題。
在大數據量的情況下表現較差但是中小站點一般情況下數據量不超過10 萬,而SQlite 在100 萬數據量之下表現還不錯,因為省掉了對數據庫服務器的遠程連接甚至會更快。
寫入較慢默認配置下的SQlite 的寫入速度比MySQL 慢了很多,但是CMS 應用場景的寫入操作較少。在插入新文章的時候基本感受不到慢。集中的寫數據庫操作只有在安裝的時候會出現,不過只出現一次,可以忽略。
為已有的表加索引較慢但是在中小站點CMS 中不會有這樣的需求,可以忽略。
無法將MySQL 部署到與前端機不同的服務器上,但是中小站點也沒有分開部署的需求。
對于中小型站點來說MySQL 這類數據庫確實非常先進,但說實話都是“大材小用”、“殺雞焉用牛刀”了,甚至可以毫不夸張的說大部分中小型站點需求僅僅用到了MySQL 這類數據庫10%的功能而已,還得為了適配MySQL 在硬件上做出取舍(比如:內存低于2G 是無法使用MySQL 高版本的)徒增成本而已,與其這樣為啥不簡單的選擇SQLite 這類輕量的數據庫來使用呢?