一、一般的單機版軟件(不聯(lián)網)用什么存儲數(shù)據
1、SQLite
SQLite是一種輕量級的關系型數(shù)據庫引擎,可以直接將數(shù)據存儲在一個文件中,無需單獨安裝數(shù)據庫服務。SQLite支持標準的SQL語言,并提供了對事務、索引、觸發(fā)器等數(shù)據庫特性的支持,適用于小規(guī)模的數(shù)據存儲和管理。
2、鍵值對存儲
鍵值對存儲是一種輕量級的非關系型數(shù)據庫,使用簡單,并且支持高速讀寫,常見的鍵值存儲有Redis、LevelDB等。但鍵值對存儲不支持SQL,其功能比較簡單,適用于小型應用,對于關聯(lián)查詢等復雜操作支持不太理想。
3、本地文件系統(tǒng)
將數(shù)據以文本或二進制格式的文件保存在計算機的硬盤上,可以使用常見的TXT、XML、JSON、CSV等格式。這種方式簡單易用,適用于小規(guī)模數(shù)據存儲,但數(shù)據訪問效率相對較低,對大規(guī)模數(shù)據存儲和處理不太適合。
4、內存存儲
將數(shù)據存儲在內存中,可以提供非??焖俚淖x寫速度和響應時間,適用于小規(guī)模的數(shù)據,如緩存和臨時數(shù)據存儲等。但由于內存大小限制,不能存儲大規(guī)模數(shù)據且不支持永久存儲。
二、SQLite介紹
1、簡介
SQLite,是一款輕型的數(shù)據庫,是遵守ACID的關系型數(shù)據庫管理系統(tǒng),它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域項目。它的設計目標是嵌入式的,而且已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源的世界知名數(shù)據庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite名列前茅個Alpha版本誕生于2000年5月。 至2021年已經接近有21個年頭,SQLite也迎來了一個版本 SQLite 3已經發(fā)布。
2、工作原理
不像常見的客戶—服務器范例,SQLite引擎不是個程序與之通信的獨立進程,而是連接到程序中成為它的一個主要部分。所以主要的通信協(xié)議是在編程語言內的直接API調用。這在消耗總量、延遲時間和整體簡單性上有積極的作用。整個數(shù)據庫(定義、表、索引和數(shù)據本身)都在宿主主機上存儲在一個單一的文件中。它的簡單的設計是通過在開始一個事務的時候鎖定整個數(shù)據文件而完成的。
3、功能特性
ACID事務零配置,無需安裝和管理配置儲存在單一磁盤文件中的一個完整的數(shù)據庫數(shù)據庫文件可以在不同字節(jié)順序的機器間自由的共享支持數(shù)據庫大小至2TB足夠小,大致13萬行C代碼,4.43M比一些流行的數(shù)據庫在大部分普通數(shù)據庫操作要快簡單,輕松的API包含TCL綁定,同時通過Wrapper支持其他語言的綁定良好注釋的源代碼,并且有著90%以上的測試覆蓋率獨立,沒有額外依賴源碼完全的開源,你可以用于任何用途,包括出售它支持多種開發(fā)語言,C,C++,PHP,Perl,Java,C#,Python,Ruby等同時它還支持事務處理功能等等。也有人說它象Microsoft的Access,有時候真的覺得有點象,但是事實上它們區(qū)別很大。比如SQLite 支持跨平臺,操作簡單,能夠使用很多語言直接創(chuàng)建數(shù)據庫,而不象Access一樣需要Office的支持。如果你是個很小型的應用,或者你想做嵌入式開發(fā),沒有合適的數(shù)據庫系統(tǒng),那么你可以考慮使用SQLite。到2013年10月17日最新版本是 3.8.1 。能在上面獲得源代碼和文檔。同時因為數(shù)據庫結構簡單,系統(tǒng)源代碼也不是很多,也適合想研究數(shù)據庫系統(tǒng)開發(fā)的專業(yè)人士。
4、常用函數(shù)
SQLite 有許多內置函數(shù)用于處理字符串或數(shù)字數(shù)據。下面列出了一些有用的 SQLite 內置函數(shù),且所有函數(shù)都是大小寫不敏感,這意味著您可以使用這些函數(shù)的小寫形式或大寫形式或混合形式。欲了解更多詳情,請查看 SQLite 的官方文檔:
SQLite COUNT 函數(shù):SQLite COUNT?聚集函數(shù)是用來計算一個數(shù)據庫表中的行數(shù)。SQLite MAX 函數(shù):SQLite MAX?聚合函數(shù)允許我們選擇某列的最大值。SQLite MIN 函數(shù):SQLite MIN?聚合函數(shù)允許我們選擇某列的最小值。SQLite?AVG?函數(shù):SQLite AVG 聚合函數(shù)計算某列的平均值。SQLite SUM 函數(shù):SQLite SUM 聚合函數(shù)允許為一個數(shù)值列計算總和。SQLite RANDOM 函數(shù):SQLite RANDOM 函數(shù)返回一個介于 -9223372036854775808 和 +9223372036854775807 之間的偽隨機整數(shù)。SQLite?ABS?函數(shù):SQLite ABS 函數(shù)返回數(shù)值參數(shù)的絕對值。SQLite UPPER 函數(shù):SQLite UPPER 函數(shù)把字符串轉換為大寫字母。SQLite LOWER 函數(shù):SQLite LOWER 函數(shù)把字符串轉換為小寫字母。SQLite LENGTH 函數(shù):SQLite LENGTH 函數(shù)返回字符串的長度。SQLite sqlite_version 函數(shù):SQLite sqlite_version 函數(shù)返回 SQLite 庫的版本。5、語言綁定
可以從C/C++程序中使用這個庫,還可以獲得對Tcl和一些其他腳本語言的綁定。在CPAN的DBD::SQLite上有一個Perl的DBI/DBD模塊,它不是到SQLite的接口,而是包括整個SQLite數(shù)據庫引擎在其中并不需要任何額外的軟件。還有一個Python模塊叫做PySQLite。PHP從PHP5.0開始包含了SQLite,但是自5.1版之后開始成為一個延伸函式庫。SQLite能與PHP4一起工作但不包含在其中。Rails2.0.3將缺省的數(shù)據庫配置改為了SQLite 3。
延伸閱讀1:WAL恢復法簡介
WAL是關系型數(shù)據庫中用于實現(xiàn)事務性和持久性的一系列技術。數(shù)據文件(存儲著表和索引)的修改必須在這些動作被WAL記錄之后才被寫入,即在描述這些改變的日志記錄被刷到持久存儲以后,數(shù)據庫在執(zhí)行命令之前先將它記下來。比如,人們平時會寫備忘錄,記錄自己要做的事,WAL就是那個備忘錄。SQLite3可以通過命令“PRAGMA journal_mode=WAL”打開WAL模式。