Realm Java 使用總結(jié)

Realm 是什么?

官網(wǎng):https://realm.io/? 中文:?https://realm.io/cn/

個(gè)人推薦看英文的文檔,一個(gè)是慢慢習(xí)慣英文的文檔,而是中文的更新不一定及時(shí)。

官網(wǎng)介紹:

Realm,為移動(dòng)設(shè)備而生

替代 SQLite 和 Core Data。

為你省下數(shù)周的時(shí)間和數(shù)千行的代碼,

幫你創(chuàng)造出更棒的用戶體驗(yàn)。

為什么用Realm?

因?yàn)楣?5年6月準(zhǔn)備開發(fā)一個(gè)新軟件,本地?cái)?shù)據(jù)要求很高,數(shù)據(jù)在獲取回來之后要離線使用,而且需要增量更新、刪除等等。所以就對(duì)現(xiàn)有的數(shù)據(jù)庫框架做了一個(gè)調(diào)查,速度、加密、存儲(chǔ)路徑、學(xué)習(xí)的簡(jiǎn)易程度等。發(fā)現(xiàn)realm完全符合目前的需求,一下是具體情況:

DBFlow:不支持分庫處理,不支持加密(當(dāng)時(shí))

GreenDAO:不支持分庫,官方不支持加密

ActiveAndroid、ORMlite:相對(duì)上面來說,速度較慢,同樣不支持分庫

注:數(shù)據(jù)比較多,同一個(gè)表里面數(shù)據(jù)太多影響查詢速度,在sqlite數(shù)據(jù)達(dá)到上萬條的時(shí)候速度明顯受到影響,如果表里數(shù)據(jù)比較大速度更慢。

Realm性能如何?

具體性能信息:realm-for-android、realm-for-ios,下面我摘取了Android的一些信息。

?插入操作:在同一個(gè)事務(wù)里,每秒插入100K條記錄(越高代表性能越好)

統(tǒng)計(jì)操作:每秒能在100K條數(shù)據(jù)中進(jìn)行查詢后count的次數(shù)(越高代表性能越好)

查詢操作:在100K中進(jìn)行一次遍歷查詢(越高代表性能越好)

在集成的時(shí)候有一個(gè)需要注意的地方,官方提供的gradle是自帶全平臺(tái)支持的,會(huì)引起安裝包比較大,所以使用google推薦的ndk abifilter去除不需要的架構(gòu),減小apk的體積。

Realm不足的地方

數(shù)據(jù)關(guān)聯(lián):

這個(gè)是一般的ORM框架一樣,需要提前建立好關(guān)系,如果你需要臨時(shí)按照一定條件去查詢,只可以分開多次查詢,不可以像sqlite連表查詢。

穩(wěn)定性:

這個(gè)可能和我自己的需求有關(guān),應(yīng)用有一些數(shù)據(jù)是先準(zhǔn)備好的,軟件把數(shù)據(jù)下載下來使用,現(xiàn)在realm還有新的功能在添加,數(shù)據(jù)保存的格式也會(huì)改動(dòng),數(shù)據(jù)庫需要升級(jí)對(duì)我來說比較痛苦。

更新操作:

需要按照條件查詢出來,寫代碼更新,不像sqlite一個(gè)語句搞定。

不支持分頁:

查詢結(jié)果不支持分頁,但是相對(duì)速度快來說應(yīng)該不是個(gè)事情,25k數(shù)據(jù)查詢出來也是在毫秒級(jí)的。

如果你感覺以上都不是問題,歡迎使用。

FAQ:

更多問題可以看官網(wǎng)的FAQ:https://realm.io/cn/docs/java/latest/#faq

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容