Realm Java 使用總結(jié)

Realm 是什么?

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

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

官網(wǎng)介紹:

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

替代 SQLite 和 Core Data。

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

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

為什么用Realm?

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

DBFlow:不支持分庫處理,不支持加密(當時)

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

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

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

Realm性能如何?

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

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

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

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

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

Realm不足的地方

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

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

穩(wěn)定性:

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

更新操作:

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

不支持分頁:

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

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

FAQ:

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

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

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

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