Android目前流行三方資料庫ORM分析及對比

Rance935發表於2017-07-03

Android 平臺上的資料庫框架非常多,但是有一個共同特點就是基於物件關係對映(ORM)模型的。實現的目標也都是不需要寫SQL語句,通過對物件的操作儲存和運算元據。要是從語法的簡潔性來說都有自己的特點,總的來說不相上下,因此只能從資料的效能上來抉擇了。

首先我們先看看目前最常用的資料庫框架介紹(排名不分先後)

  • GreenDao
    簡單介紹:GreenDao是為Android設計的物件關係對映(ORM)工具。它提供了物件到關係型資料庫SQLite的相應介面。為了在Android工程中使用greenDao,需要建立另一個“生成器”工程,它的任務是在你的工程域裡生成具體的程式碼。因此相比與其它ORM框架具有出眾效能。
    使用方法:GreenDao:3.2.0用方法

  • LitePal
    簡單介紹:LitePal是物件關係對映(ORM)模型。它使開發者使用SQLite資料庫變得非常容易。 你可以不用寫一句SQL語句就可以完成大部分資料庫操作,包括建立表,更新表,約束操作,聚合功能等等。
    使用方法:(懶人必備)Android開源資料庫LitePal

  • Afinal
    簡單介紹:是一個android的sqlite orm 和 ioc 框架。同時封裝了android中的http框架,使其更加簡單易用。FinalDB模組,android中的orm框架,一行程式碼就可以進行增刪改查。支援一對多,多對一等查詢。
    使用方法:FinalDb操作sqlite的資料庫(增刪改查)

  • ORMLite
    簡單介紹:(Object Relational Mapping Lite)提供了一些輕量級持久化Java物件到SQL資料庫,同時也避免了複雜性和更多的標準的ORM包的開銷功能。它支援的SQL資料庫使用JDBC的數量,還支援原生的Android作業系統資料庫API呼叫sqlite。
    使用方法:Android 資料庫框架ormlite使用精要

  • SugarORM
    簡單介紹:是物件關係對映模式。不用寫複雜的sql語句,而用簡單的API即可完成建立和操縱資料;可以在原有的Bean上僅僅新增小的修改而複用Bean;簡化而明瞭的資料庫設計和建立過程,同時提供表的一對多的支援。
    使用方法:Android SugerORM框架的使用

  • Realm
    簡單介紹:是用來替代sqlite的一種解決方案,它有一套自己的資料庫儲存引擎,比sqlite更輕量級,擁有更快的速度,並且具有很多現代資料庫的特性,比如支援JSON,流式api,資料變更通知,自動資料同步,簡單身份驗證,訪問控制,事件處理,最重要的是跨平臺,目前已有Java,Objective C,Swift,React-Native,Xamarin這五種實現。
    使用方法:Realm for Android詳細教程

  • LiteOrm
    簡單介紹:是android上的一款資料庫(ORM)框架庫。速度快、體積小、效能高。開發者基本一行程式碼實現資料庫的增刪改查操作,以及實體關係的持久化和自動對映。設計原則:輕量、專注、效能優先、執行緒無關,專注資料及其關係儲存和操作;無需工具輔助,不需要無參構造,不需要繁多註解,約定優於配置;使用極致簡約,例如:db.save(u);
    db.query(U.class);
    db.deleteAll(U.class);

    使用方法:Android 資料庫框架LiteOrm使用

  • DBFlow
    簡單介紹:綜合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等庫的優點。同時不是基於反射,所以效能也是非常高,效率緊跟greenDAO其後。基於註解,使用apt技術,在編譯過程中生成操作類,使用方式和ActiveAndroid高度相似,使用簡單。無縫支援多個資料庫,使用annotation processing提高速度,ModelContainer類庫可以直接解析像JSON這樣的資料,增加靈活性的豐富介面。
    使用方法:Android技術前沿:DBFlow的實踐

資料庫效能比較

具體對比仔細檢視下列圖表

Android 資料庫框架效能測試
Android 資料庫框架效能測試

LiteOrm 和 系統原生SQLiteDatabase API 測試資料
LiteOrm 和 系統原生SQLiteDatabase API 測試資料

LiteOrm 和 greenDAO 的效能表現

greenDAO vs LiteOrm 迴圈測試
greenDAO vs LiteOrm 迴圈測試

greenDAO vs LiteOrm 批量測試
greenDAO vs LiteOrm 批量測試

總結

從圖中可以看出 Realm 的效能應該是最好的,同時它執行跨平臺,且並不是採用 SQLite 的持久化引擎。但是也有不少的缺點(具體檢視文章為什麼我不再使用Realm)。

greenDAO 是基於AndroidSQLite的最快、效能最強悍的資料庫框架,因為他不涉及反射,靠的是程式碼輔助生成。

當然,不論哪款ORM或資料庫框架,都各有利弊,至於該選用哪一款,可自行斟酌,開發者最好自己親身體驗下,畢竟絕知此事需躬行,只聽或者看別人的言論和結果,無異於直接吃別人嚼過的東西,沒有味道不重要,變了味會影響個人判斷。

本文原創釋出於公眾號【AndroidParks】,微信搜尋androidparks或者掃一掃關注

來源:https://juejin.im/post/5958fe70f265da6c49777c94

相關文章