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-android、realm-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