用於移動開發的5個最流行的資料

edithfang發表於2014-11-21
嵌入式資料庫是輕量級的,獨立的庫,沒有伺服器元件,無需管理,一個小的程式碼尺寸,以及有限的資源需求。目前有幾種嵌入式資料庫,你可以在移動應用程式中使用。讓我們來看看這些最流行的資料庫。
 


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指令碼擴充套件其值。

其他有用的連結

  • 下載: 獲取最新開放版本的UnQLite,開始嵌入,並享受程式設計的樂趣。
  • UnQLite特色: 這個文件列舉,並介紹了UnQLite的一些特色和擴充套件,以及資料庫模型相關的Jx9程式語言。
評論(1)

相關文章