5個最流行的可用於移動開發的嵌入式資料庫簡介
嵌入式資料庫是輕量級的,獨立的庫,沒有伺服器組件,無需管理,一個小的代碼尺寸,以及有限的資源需求。目前有幾種嵌入式資料庫,你可以在行動裝置 App程式中使用。讓我們來看看這些最流行的資料庫。
| 資料庫 |
資料類型儲存 |
License |
支援平台 |
| BerkeleyDB |
relational, objects, key-value pairs, documents |
AGPL 3.0 |
Android, iOS |
| Couchbase Lite |
documents |
Apache 2.0 |
Android, iOS |
| LevelDB |
key-value pairs |
New BSD |
Android, iOS |
| SQLite |
relational |
Public Domain |
Android, iOS, Windows Phone, Blackberry |
| UnQLite |
key-value pairs, documents |
BSD 2-Clause |
Android, iOS, Windows Phone |
Berkeley DB
Berkeley DB是由美國Sleepycat Software公司開發的一套開放原始碼的嵌入式資料庫管理系統已被Oracle收購),它為應用程式提供可伸縮的、高效能的、有事務保護功能的資料管理服務。
Berkeley DBBDB)是一個高效的嵌入式資料庫編程庫,C語言、C++、Java、Perl、Python、Tcl以及 其他很多語言都有其對應的API。Berkeley DB可以儲存任意類型的鍵/值對Key/Value Pair),而且可以為一個鍵儲存多個資料。Berkeley DB支援讓數千的並發線程同時操作資料庫,支援最大256TB的資料,廣泛用於各種作業系統,其中包括大多數類Unix作業系統、Windows作業系統 以及即時作業系統。
Couchbase Lite
Couchbase Lite是一個為滿足線上和離線的行動裝置 App所開發的超輕量的,可靠的,並且安全的JSON資料庫。即使在最不確定的網路條件下,亦可以給您的行動裝置 App提供富有成效的和可靠的信譽。除此之外,’同步門戶’功能亦可以提供協作, 社互動動或者是使用者的更新。
Couchbase移動平台的亮點
JSON Anywhere
使用專為物件導向的行動裝置 App設計的靈活的資料模型,即時適應你的應用程式需要而無需大幅改動應用程式。
易於同步 輕鬆同步)
只須幾行代碼就可以同步就緒;使開發人員可以更專註於應用開發本身,而非同步問題。
原生 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的主要特點,如下:
可以通過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協議下開放原始碼。