移動(dòng)端常用數(shù)據(jù)庫(kù)

常用數(shù)據(jù)庫(kù),通常面試都會(huì)說(shuō)用SQLite

嵌入式數(shù)據(jù)庫(kù)是輕量級(jí)的炸站,獨(dú)立的庫(kù)星澳,沒(méi)有服務(wù)器組件,無(wú)需管理武契,一個(gè)小的代碼尺寸募判,以及有限的資源需求。目前有幾種嵌入式數(shù)據(jù)庫(kù)咒唆,你可以在移動(dòng)應(yīng)用程序中使用届垫。讓我們來(lái)看看這些最流行的數(shù)據(jù)庫(kù)。

Berkeley DB

Berkeley DB是由美國(guó)Sleepycat Software公司開(kāi)發(fā)的一套開(kāi)放源代碼的嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)(已被Oracle收購(gòu))全释,它為應(yīng)用程序提供可伸縮的装处、高性能的、有事務(wù)保護(hù)功能的數(shù)據(jù)管理服務(wù)浸船。

Berkeley DB(BDB)是一個(gè)高效的嵌入式數(shù)據(jù)庫(kù)編程庫(kù)妄迁,C語(yǔ)言、C++李命、Java登淘、Perl、Python封字、Tcl以 及其他很多語(yǔ)言都有其對(duì)應(yīng)的API黔州。Berkeley DB可以保存任意類型的鍵/值對(duì)(Key/Value Pair)耍鬓,而且可以為一個(gè)鍵保存多個(gè)數(shù)據(jù)。Berkeley DB支持讓數(shù)千的并發(fā)線程同時(shí)操作數(shù)據(jù)庫(kù)流妻,支持最大256TB的數(shù)據(jù)牲蜀,廣泛用于各種操作系統(tǒng)怪蔑,其中包括大多數(shù)類Unix操作系統(tǒng)汽久、Windows操作系統(tǒng)以及實(shí)時(shí)操作系統(tǒng)浦旱。

Couchbase Lite

Couchbase Lite是一個(gè)為滿足在線和離線的移動(dòng)應(yīng)用所開(kāi)發(fā)的超輕量的燥撞,可靠的,并且安全的JSON數(shù)據(jù)庫(kù)疾党。即使在最不確定的網(wǎng)絡(luò)條件下温峭,亦可以給您的移動(dòng)應(yīng)用提供富有成效 的和可靠的信譽(yù)暂吉。除此之外浑度,’同步門戶’功能亦可以提供協(xié)作林螃, 社交互動(dòng)或者是用戶的更新。

Couchbase移動(dòng)平臺(tái)的亮點(diǎn)

  • JSON Anywhere:

    使用專為面向?qū)ο蟮囊苿?dòng)應(yīng)用設(shè)計(jì)的靈活的數(shù)據(jù)模型俺泣,即時(shí)適應(yīng)你的應(yīng)用程序需要而無(wú)需大幅改動(dòng)應(yīng)用程序

  • 易于同步 (輕松同步):

    只須幾行代碼就可以同步就緒;使開(kāi)發(fā)者可以更專注于應(yīng)用開(kāi)發(fā)本身完残,而非同步問(wèn)題伏钠。

  • 原生 APIs:

    使用專門為iOS和Android優(yōu)化的API管理移動(dòng)數(shù)據(jù)庫(kù)

  • REST APIs:

    基于你的開(kāi)發(fā)需求, REST APIs 提供了一種替代的訪問(wèn)方法。

LevelDB

LevelDB是Google開(kāi)源出的一個(gè)Key/Value存儲(chǔ)引擎谨设,它采用C++編寫(xiě)的熟掂,支持高并發(fā)訪問(wèn)和寫(xiě)入,特別適合對(duì)于高寫(xiě)入業(yè)務(wù)環(huán)境扎拣。

對(duì)于LevelDB的概覽可以參考

數(shù)據(jù)分析與處理之二(Leveldb 實(shí)現(xiàn)原理)對(duì)LevelDB的一個(gè)描述赴肚,本文的圖解更多的是LevelDB的一個(gè)實(shí)現(xiàn)層的糾纏,版本為L(zhǎng)evelDB 1.7.02二蓝。

LevelDB存儲(chǔ)主要分為SSTable和MemTable誉券,前者為不可變且存儲(chǔ)于持久設(shè)備上,后者位于內(nèi)存上并且可變(在LevelDB中有兩 個(gè)MemTable刊愚,一個(gè)為當(dāng)前寫(xiě)入MemTable踊跟,另一個(gè)為等待持久化的不可變MemTable)。首先來(lái)看SSTable的實(shí)現(xiàn)層分析鸥诽。

SQLite

SQLite是一個(gè)開(kāi)源的嵌入式關(guān)系數(shù)據(jù)庫(kù)商玫,實(shí)現(xiàn)自包容、零配置牡借、支持事務(wù)的SQL數(shù)據(jù)庫(kù)引擎拳昌。 其特點(diǎn)是高度便攜、使用方便钠龙、結(jié)構(gòu)緊湊炬藤、高效御铃、可靠。 與其他數(shù)據(jù)庫(kù)管理系統(tǒng)不同刻像,SQLite 的安裝和運(yùn)行非常簡(jiǎn)單畅买,在大多數(shù)情況下 - 只要確保SQLite的二進(jìn)制文件存在即可開(kāi)始創(chuàng)建、連接和使用數(shù)據(jù)庫(kù)细睡。如果您正在尋找一個(gè)嵌入式數(shù)據(jù)庫(kù)項(xiàng)目或解決方案谷羞,SQLite是絕對(duì)值得考慮。

UnQLite

UnQLite是溜徙,由Symisc Systems公司出品的一個(gè)嵌入式C語(yǔ)言軟件庫(kù)湃缎,它實(shí)現(xiàn)了一個(gè)自包含、無(wú)服務(wù)器蠢壹、零配置嗓违、事務(wù)化的NoSQL數(shù)據(jù)庫(kù)引擎。UnQLite是一個(gè)文檔存儲(chǔ)數(shù)據(jù)庫(kù)图贸,類似于MongoDB蹂季、Redis、CouchDB等疏日。同時(shí)偿洁,也是一個(gè)標(biāo)準(zhǔn)的Key/Value存儲(chǔ),與BerkeleyDB和LevelDB等類似沟优。

UnQLite是一個(gè)嵌入式NoSQL(鍵/值存儲(chǔ)和文檔存儲(chǔ))數(shù)據(jù)庫(kù)引擎涕滋。不同于其他絕大多數(shù)NoSQL數(shù)據(jù)庫(kù),UnQLite沒(méi)有一個(gè)獨(dú)立的服務(wù)器進(jìn)程挠阁。UnQLite直接讀/寫(xiě)普通的磁盤文件宾肺。包含多個(gè)數(shù)據(jù)集的一個(gè)完整的數(shù)據(jù)庫(kù),存儲(chǔ)在單一的磁盤文件中侵俗。數(shù)據(jù)庫(kù)文件格式是跨平臺(tái)的锨用,可以在32位和64位系統(tǒng)或大端和小端架構(gòu)之間,自由拷貝一個(gè)數(shù)據(jù)庫(kù)隘谣。UnQLite的主要特點(diǎn)黔酥,如下:

  1. 無(wú)服務(wù)器數(shù)據(jù)庫(kù)引擎。

  2. 事務(wù)化 (ACID) 數(shù)據(jù)庫(kù)洪橘。

  3. 零配置跪者。

  4. 單一數(shù)據(jù)庫(kù)文件,不使用臨時(shí)文件熄求。

  5. 跨平臺(tái)文件格式渣玲。

  6. UnQLite是一個(gè)自包含的C語(yǔ)言程序庫(kù),無(wú)任何外部依賴弟晚。

  7. 標(biāo)準(zhǔn)的Key/Value存儲(chǔ)忘衍。

  8. 基于Jx9文檔存儲(chǔ)(JSON)數(shù)據(jù)庫(kù)逾苫。

  9. 支持游標(biāo),滿足線性記錄遍歷枚钓。

  10. 插件式運(yùn)行時(shí)可交換存儲(chǔ)引擎铅搓。

  11. 支持磁盤持久化內(nèi)存模式的數(shù)據(jù)庫(kù)。

  12. 內(nèi)建強(qiáng)大的磁盤存儲(chǔ)引擎搀捷,支持O(1)查詢星掰。

  13. 線程安全,完全可重入嫩舟。

  14. 簡(jiǎn)單氢烘、清晰,很容易使用的API家厌。

  15. 支持TB(Terabyte)尺寸的數(shù)據(jù)庫(kù)播玖。

  16. 采用BSD開(kāi)源許可協(xié)議

  17. 合并:UnQLite和Jx9相關(guān)所有C源代碼文件饭于,都合并到單一的文件中蜀踏。

  18. 很好的在線支持

可以通過(guò)

UnQLite特點(diǎn)一頁(yè)掰吕,了解更多的細(xì)節(jié)脓斩。(想想:有幾分SQLite的味兒?)

UnQLite是畴栖,一個(gè)自包含的C庫(kù),無(wú)外部依賴八千。它要求非常小的外部庫(kù)或來(lái)自操作系統(tǒng)的支持吗讶。特別適合應(yīng)用于嵌入式設(shè)備,也適用于應(yīng)用程序內(nèi)部(那些需要運(yùn)行于大量的計(jì)算機(jī)恋捆,而無(wú)需修改各種配置)照皆。

UnQLite是,100%手工編碼沸停,使用ANSI C膜毁,線程安全,完全可重入愤钾,編譯無(wú)需修改瘟滨,而且可運(yùn)行于絕大多數(shù)的平臺(tái),包括受限的嵌入式設(shè)備能颁,僅需要一個(gè)C編譯器杂瘸。UnQLite已經(jīng)在非常廣泛的平臺(tái) 進(jìn)行了測(cè)試,包括Windows和UNIX系統(tǒng)伙菊,特別是Linux败玉、FreeBSD敌土、Oracle Solaris及Mac OS X。

UnQLite是运翼,一個(gè)標(biāo)準(zhǔn)的key/value存儲(chǔ)返干,與BerkeleyDB和LevelDB等相似。但是血淌,擁有更加豐富的特性集矩欠,包括支持事務(wù) (ACID),并發(fā)讀等六剥。在KV存儲(chǔ)下晚顷,鍵和值都被視為簡(jiǎn)單的字節(jié)數(shù)組,所以內(nèi)容可以是任何東西疗疟,包括ASCII字符串该默、二進(jìn)制對(duì)象和磁盤文件等。應(yīng)用程 序策彤,可以通過(guò)接口API來(lái)訪問(wèn)KV層栓袖,包括

unqlite_kv_store()
unqlite_kv_append()
unqlite_kv_fetch_callback() 
unqlite_kv_append_fmt()
unqlite_kv_delete()

等等。

UnQLite用來(lái)在數(shù)據(jù)庫(kù)中存儲(chǔ)JSON文檔(如店诗,對(duì)象裹刮、數(shù)組、字符串等)的文檔存儲(chǔ)接口庞瘸,是通過(guò)Jx9編程語(yǔ)言支撐/實(shí)現(xiàn)的捧弃。Jx9是一種嵌入式的腳本語(yǔ)言,也叫擴(kuò)展語(yǔ)言擦囊,被設(shè)計(jì)用于通用過(guò)程化編程违霞,具備數(shù)據(jù)表述的特性。Jx9是一個(gè)圖靈完備(Turing-Complete)瞬场,基于JSON的买鸽,動(dòng)態(tài)類型編程語(yǔ)言,作為UnQLite內(nèi)核的一個(gè)庫(kù)而存在贯被。

總之眼五,UnQLite一塊開(kāi)源軟件,在 2-Clause BSD協(xié)議下開(kāi)放源代碼彤灶。

realm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末看幼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子幌陕,更是在濱河造成了極大的恐慌桌吃,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苞轿,死亡現(xiàn)場(chǎng)離奇詭異茅诱,居然都是意外死亡逗物,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門瑟俭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)翎卓,“玉大人,你說(shuō)我怎么就攤上這事摆寄∈П” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵微饥,是天一觀的道長(zhǎng)逗扒。 經(jīng)常有香客問(wèn)我,道長(zhǎng)欠橘,這世上最難降的妖魔是什么矩肩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮肃续,結(jié)果婚禮上黍檩,老公的妹妹穿的比我還像新娘。我一直安慰自己始锚,他們只是感情好刽酱,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瞧捌,像睡著了一般棵里。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姐呐,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天殿怜,我揣著相機(jī)與錄音,去河邊找鬼皮钠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赠法,可吹牛的內(nèi)容都是我干的麦轰。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼砖织,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼款侵!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起侧纯,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤新锈,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后眶熬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體妹笆,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡块请,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拳缠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墩新。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖窟坐,靈堂內(nèi)的尸體忽然破棺而出海渊,到底是詐尸還是另有隱情,我是刑警寧澤哲鸳,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布臣疑,位于F島的核電站,受9級(jí)特大地震影響徙菠,放射性物質(zhì)發(fā)生泄漏讯沈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一懒豹、第九天 我趴在偏房一處隱蔽的房頂上張望芙盘。 院中可真熱鬧,春花似錦脸秽、人聲如沸儒老。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)驮樊。三九已至,卻和暖如春片酝,著一層夾襖步出監(jiān)牢的瞬間囚衔,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工雕沿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留练湿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓审轮,卻偏偏與公主長(zhǎng)得像肥哎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疾渣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容