最近項(xiàng)目中要用到數(shù)據(jù)庫(kù)相關(guān)的知識(shí)惦费,就在網(wǎng)上查了下Android平臺(tái)上的數(shù)據(jù)庫(kù)框架哮塞,目前比較熱門有GreenDAO和Realm南蹂,這兩個(gè)都是使用者都比較多佃乘,并且都在持續(xù)發(fā)布更新囱井,就對(duì)這兩個(gè)框架進(jìn)行了一些探索。
兩者的官網(wǎng)和github鏈接:
GreenDAO:
http://greenrobot.org/greendao/
https://github.com/greenrobot/greenDAO
Realm:
https://realm.io/cn/
https://github.com/realm/realm-java
簡(jiǎn)單介紹
GreenDAO
greenDao是一款A(yù)ndroid平臺(tái)上的開源框架恕稠,提供將對(duì)象映射到SQLite數(shù)據(jù)庫(kù)中的輕量且快速的ORM解決方案琅绅。greenDAO對(duì)安卓進(jìn)行了高度優(yōu)化,提供了出色的性能和最小的內(nèi)存消耗鹅巍。它減輕開發(fā)人員處理低級(jí)數(shù)據(jù)庫(kù)需求千扶,同時(shí)節(jié)省開發(fā)時(shí)間,使SQLite數(shù)據(jù)庫(kù)的開發(fā)變得有趣骆捧。
SQLite是一個(gè)令人敬畏的嵌入式關(guān)系數(shù)據(jù)庫(kù)澎羞。不過(guò),編寫SQL和解析查詢結(jié)果是相當(dāng)乏味和耗時(shí)的任務(wù)敛苇。greenDAO通過(guò)將Java對(duì)象映射到數(shù)據(jù)庫(kù)表(稱為ORM 妆绞,對(duì)象關(guān)系映射)將您從其中解脫出來(lái)。通過(guò)簡(jiǎn)單的面向?qū)ο驛PI枫攀,你就可以來(lái)存儲(chǔ)括饶,更新,刪除和查詢Java對(duì)象来涨。
功能一覽:
高性能(可能是Android最快的ORM):開源的基準(zhǔn)
易用:功能強(qiáng)大的API涵蓋關(guān)系和聯(lián)接
最小的內(nèi)存消耗
精簡(jiǎn)的庫(kù)(<100KB):維持較少的編譯時(shí)間图焰,并避免65k方法數(shù)量的限制
數(shù)據(jù)庫(kù)加密:greenDAO支持SQLCipher,以保護(hù)用戶的數(shù)據(jù)安全
強(qiáng)大的社區(qū):GitHub上超過(guò)5000個(gè)Star(現(xiàn)在已經(jīng)超過(guò)8000了)表明有一個(gè)強(qiáng)大和積極的社區(qū)
Realm
Realm是一款可直接運(yùn)行在手機(jī)蹦掐,平板電腦或可穿戴設(shè)備上的移動(dòng)數(shù)據(jù)庫(kù)技羔。Realm 移動(dòng)端數(shù)據(jù)庫(kù)快速僵闯、易用、開源且完全免費(fèi)藤滥,深受開發(fā)者和億萬(wàn)用戶喜愛鳖粟。Realm 是 SQLite 和 Core Data 的替代者,得益于其零拷貝的設(shè)計(jì)拙绊,Realm 比任何 ORM 都要快很多向图。Realm簡(jiǎn)單、快速标沪,節(jié)約數(shù)周的開發(fā)時(shí)間张漂。幾分鐘內(nèi)就能學(xué)會(huì)使用 Realm。
功能一覽:
離線優(yōu)先:即使在離線狀態(tài)下應(yīng)用也可正常工作
查詢快速:復(fù)雜查詢也只需要幾納秒谨娜,查詢結(jié)果與新數(shù)據(jù)實(shí)時(shí)同步
線程安全:多線程訪問(wèn)同一數(shù)據(jù)毫無(wú)問(wèn)題
跨平臺(tái)支持:多個(gè)平臺(tái)不同應(yīng)用使用同一數(shù)據(jù)庫(kù)
加密:無(wú)需額外代碼,就能保證你的數(shù)據(jù)安全
響應(yīng)式架構(gòu):讓Realm連接到UI磺陡,及時(shí)將數(shù)據(jù)更新反饋給用戶
使用方法
我比較懶趴梢,貼一下別的博主的博客好了。
這里需要說(shuō)明的是币他,greenDAO在github上說(shuō)
// In your root build.gradle file:
buildscript {
repositories {
jcenter()
mavenCentral() // add repository
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
}
}
// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
dependencies {
compile 'org.greenrobot:greendao:3.2.2' // add library
}
這里的root應(yīng)該是project級(jí)的坞靶,app project是module級(jí)的
我看很多文章里都沒搞對(duì)。
后面有時(shí)間的話自己再總結(jié)吧
速度對(duì)比
這里使用的版本是
greenDAO 3.2.2
Realm 3.1.1
速度在不同機(jī)型上不同的使用方法肯定會(huì)有偏差蝴悉,這里僅作參考彰阴,但還是可以看出Realm在速度上的優(yōu)勢(shì)。
||增|刪|改|查|
|--|
|GreenDAO(1條)|10ms|17ms|12ms|1ms|
|Realm(1條)|5ms|6ms|7ms|1ms|
|GreenDAO(10條)|47ms|55ms|100ms|2ms|
|Realm(10條)|6ms|11ms|8ms|1ms|
|GreenDAO(100條)|402ms|377ms|398ms|3ms|
|Realm(100條)|10ms|20ms|16ms|1ms|
|GreenDAO(1000條)|3959ms|3326ms|3297ms|3ms|
|Realm(1000條)|28ms|71ms|94ms|1ms|
END
框架的選擇應(yīng)該結(jié)合項(xiàng)目的需求拍冠,對(duì)比功能尿这,穩(wěn)定性,拓展性庆杜,易用性等多個(gè)方面射众。我也只是個(gè)小白,提不了什么有價(jià)值的建議晃财。
最后貼上自己的代碼叨橱,我只進(jìn)行了最簡(jiǎn)單的使用:
https://github.com/xiaoniu/Database
需要的可以參考一下,有問(wèn)題可以評(píng)論一下断盛,歡迎探討罗洗。