嵌入式數據庫是輕量級的,獨立的庫,沒有服務器組件,無需管理,一個小的代碼尺寸,以及有限的資源需求。目前有幾種嵌入式數據庫,你可以在移動應用程序中使用。讓我們來看看這些最流行的數據庫。
Berkeley DB
Berkeley DB是由美國Sleepycat Software公司開發的一套開放源代碼的嵌入式數據庫管理系統(已被Oracle收購),它為應用程序提供可伸縮的、高性能的、有事務保護功能的數據管理服務。
Berkeley DB(BDB)是一個高效的嵌入式數據庫編程庫,C語言、C++、Java、Perl、Python、Tcl以 及其他很多語言都有其對應的API。Berkeley DB可以保存任意類型的鍵/值對(Key/Value Pair),而且可以為一個鍵保存多個數據。Berkeley DB支持讓數千的并發線程同時操作數據庫,支持最大256TB的數據,廣泛用于各種操作系統,其中包括大多數類Unix操作系統、Windows操作系統以及實時操作系統。
Couchbase Lite
Couchbase Lite是一個為滿足在線和離線的移動應用所開發的超輕量的,可靠的,并且安全的JSON數據庫。即使在最不確定的網絡條件下,亦可以給您的移動應用提供富有成效 的和可靠的信譽。除此之外,’同步門戶’功能亦可以提供協作, 社交互動或者是用戶的更新。
Couchbase移動平臺的亮點
-
JSON Anywhere:
使用專為面向對象的移動應用設計的靈活的數據模型,即時適應你的應用程序需要而無需大幅改動應用程序
-
易于同步 (輕松同步):
只須幾行代碼就可以同步就緒;使開發者可以更專注于應用開發本身,而非同步問題。
-
原生 APIs:
使用專門為iOS和Android優化的API管理移動數據庫
-
REST APIs:
基于你的開發需求, REST APIs 提供了一種替代的訪問方法。
LevelDB
LevelDB是Google開源出的一個Key/Value存儲引擎,它采用C++編寫的,支持高并發訪問和寫入,特別適合對于高寫入業務環境。
對于LevelDB的概覽可以參考
數據分析與處理之二(Leveldb 實現原理)對LevelDB的一個描述,本文的圖解更多的是LevelDB的一個實現層的糾纏,版本為LevelDB 1.7.02。
LevelDB存儲主要分為SSTable和MemTable,前者為不可變且存儲于持久設備上,后者位于內存上并且可變(在LevelDB中有兩 個MemTable,一個為當前寫入MemTable,另一個為等待持久化的不可變MemTable)。首先來看SSTable的實現層分析。
SQLite
SQLite是一個開源的嵌入式關系數據庫,實現自包容、零配置、支持事務的SQL數據庫引擎。 其特點是高度便攜、使用方便、結構緊湊、高效、可靠。 與其他數據庫管理系統不同,SQLite 的安裝和運行非常簡單,在大多數情況下 - 只要確保SQLite的二進制文件存在即可開始創建、連接和使用數據庫。如果您正在尋找一個嵌入式數據庫項目或解決方案,SQLite是絕對值得考慮。
UnQLite
UnQLite是,由Symisc Systems公司出品的一個嵌入式C語言軟件庫,它實現了一個自包含、無服務器、零配置、事務化的NoSQL數據庫引擎。UnQLite是一個文檔存儲數據庫,類似于MongoDB、Redis、CouchDB等。同時,也是一個標準的Key/Value存儲,與BerkeleyDB和LevelDB等類似。
UnQLite是一個嵌入式NoSQL(鍵/值存儲和文檔存儲)數據庫引擎。不同于其他絕大多數NoSQL數據庫,UnQLite沒有一個獨立的服務器進程。UnQLite直接讀/寫普通的磁盤文件。包含多個數據集的一個完整的數據庫,存儲在單一的磁盤文件中。數據庫文件格式是跨平臺的,可以在32位和64位系統或大端和小端架構之間,自由拷貝一個數據庫。UnQLite的主要特點,如下:
無服務器
數據庫引擎。事務化
(ACID) 數據庫。零配置
。單一數據庫文件
,不使用臨時文件。跨平臺
的文件格式
。UnQLite是一個自包含的C語言程序庫,
無任何外部依賴
。標準的
Key/Value
存儲。基于
Jx9
的文檔存儲
(JSON)數據庫。支持
游標
,滿足線性記錄遍歷。插件式
運行時可交換存儲引擎。支持
磁盤持久化
和內存模式
的數據庫。內建強大的磁盤存儲引擎,支持
O(1)
查詢。線程安全
,完全可重入。簡單、清晰,很容易使用的
API
。支持
TB(Terabyte)尺寸
的數據庫。采用
BSD開源許可協議
。合并:UnQLite和Jx9相關所有C源代碼文件,都合并到
單一的文件中
。很好的
在線支持
。
可以通過
UnQLite特點一頁,了解更多的細節。(想想:有幾分SQLite的味兒?)
UnQLite是,一個自包含的C庫,無外部依賴。它要求非常小的外部庫或來自操作系統的支持。特別適合應用于嵌入式設備,也適用于應用程序內部(那些需要運行于大量的計算機,而無需修改各種配置)。
UnQLite是,100%手工編碼,使用ANSI C,線程安全,完全可重入,編譯無需修改,而且可運行于絕大多數的平臺,包括受限的嵌入式設備,僅需要一個C編譯器。UnQLite已經在非常廣泛的平臺 進行了測試,包括Windows和UNIX系統,特別是Linux、FreeBSD、Oracle Solaris及Mac OS X。
UnQLite是,一個標準的key/value存儲,與BerkeleyDB和LevelDB等相似。但是,擁有更加豐富的特性集,包括支持事務 (ACID),并發讀等。在KV存儲下,鍵和值都被視為簡單的字節數組,所以內容可以是任何東西,包括ASCII字符串、二進制對象和磁盤文件等。應用程 序,可以通過接口API來訪問KV層,包括
unqlite_kv_store()
unqlite_kv_append()
unqlite_kv_fetch_callback()
unqlite_kv_append_fmt()
unqlite_kv_delete()
等等。
UnQLite用來在數據庫中存儲JSON文檔(如,對象、數組、字符串等)的文檔存儲接口,是通過Jx9編程語言支撐/實現的。Jx9是一種嵌入式的腳本語言,也叫擴展語言,被設計用于通用過程化編程,具備數據表述的特性。Jx9是一個圖靈完備(Turing-Complete),基于JSON的,動態類型編程語言,作為UnQLite內核的一個庫而存在。
總之,UnQLite一塊開源軟件,在 2-Clause BSD協議下開放源代碼。