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協議下開放原始碼。
UnQLite程式設計介面
以下文件描述了,如何使用API進行UnQLite程式設計。UnQLite的學習成本很低,對於變成新手,也很容易學習。有用的連結,如下:
- 5分鐘玩轉UnQLite: 這是一個非常初級的UnQLite程式設計指南,通過C語言實現的列子展開介紹。
- UnQLite C/C++介面介紹: 描繪了一個UnQLite C/C++程式設計介面的概覽和路線圖。
- Jx9介紹: Jx9就是支撐UnQLite文件儲存介面的嵌入式指令碼語言。Jx9是一個圖靈完備(Turing-Complete),基於JSON的,程式語言,作為UnQLite核心的一個庫而存在。
- C/C++ API參考指南: 這個文件描述了每個API函式的具體細節。
- UnQLite資料庫引擎架構: 概括的介紹了UnQLite的上層構架和相關的介面。
- 外部函式實現: 這是一個howto指南,介紹如何建立和安裝外部函式(一般為C/C++實現),以及如何通過Jx9指令碼進行呼叫。
- 常量擴充套件機制: 這是一個howto指南,介紹載入外部常量(一般為C/C++實現),以及如何通過Jx9指令碼擴充套件其值。
其他有用的連結
評論(1)