Realm 是什么围段?
官網(wǎng):https://realm.io/? 中文:?https://realm.io/cn/
個人推薦看英文的文檔寸爆,一個是慢慢習(xí)慣英文的文檔寞钥,而是中文的更新不一定及時蹋肮。
官網(wǎng)介紹:
Realm胶滋,為移動設(shè)備而生
替代 SQLite 和 Core Data。
為你省下數(shù)周的時間和數(shù)千行的代碼皆的,
幫你創(chuàng)造出更棒的用戶體驗(yàn)覆履。
為什么用Realm?
因?yàn)楣?5年6月準(zhǔn)備開發(fā)一個新軟件费薄,本地?cái)?shù)據(jù)要求很高硝全,數(shù)據(jù)在獲取回來之后要離線使用,而且需要增量更新楞抡、刪除等等伟众。所以就對現(xiàn)有的數(shù)據(jù)庫框架做了一個調(diào)查,速度召廷、加密凳厢、存儲路徑、學(xué)習(xí)的簡易程度等竞慢。發(fā)現(xiàn)realm完全符合目前的需求先紫,一下是具體情況:
DBFlow:不支持分庫處理,不支持加密(當(dāng)時)
GreenDAO:不支持分庫筹煮,官方不支持加密
ActiveAndroid泡孩、ORMlite:相對上面來說,速度較慢寺谤,同樣不支持分庫
注:數(shù)據(jù)比較多仑鸥,同一個表里面數(shù)據(jù)太多影響查詢速度,在sqlite數(shù)據(jù)達(dá)到上萬條的時候速度明顯受到影響变屁,如果表里數(shù)據(jù)比較大速度更慢眼俊。
Realm性能如何?
具體性能信息:realm-for-android粟关、realm-for-ios,下面我摘取了Android的一些信息疮胖。
?插入操作:在同一個事務(wù)里,每秒插入100K條記錄(越高代表性能越好)
統(tǒng)計(jì)操作:每秒能在100K條數(shù)據(jù)中進(jìn)行查詢后count的次數(shù)(越高代表性能越好)
查詢操作:在100K中進(jìn)行一次遍歷查詢(越高代表性能越好)
在集成的時候有一個需要注意的地方,官方提供的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ù)是先準(zhǔn)備好的顶瞒,軟件把數(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