greenDAO与Realm的探索

作者: 卡咔喀 | 来源:发表于2017-07-05 10:55 被阅读456次

    最近项目中要用到数据库相关的知识,就在网上查了下Android平台上的数据库框架,目前比较热门有GreenDAO和Realm,这两个都是使用者都比较多,并且都在持续发布更新,就对这两个框架进行了一些探索。

    两者的官网和github链接:
    GreenDAO:
    http://greenrobot.org/greendao/
    https://github.com/greenrobot/greenDAO

    Realm:
    https://realm.io/cn/
    https://github.com/realm/realm-java

    简单介绍

    GreenDAO

    greenDao是一款Android平台上的开源框架,提供将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。greenDAO对安卓进行了高度优化,提供了出色的性能和最小的内存消耗。它减轻开发人员处理低级数据库需求,同时节省开发时间,使SQLite数据库的开发变得有趣。

    SQLite是一个令人敬畏的嵌入式关系数据库。不过,编写SQL和解析查询结果是相当乏味和耗时的任务。greenDAO通过将Java对象映射到数据库表(称为ORM ,对象关系映射)将您从其中解脱出来。通过简单的面向对象API,你就可以来存储,更新,删除和查询Java对象。

    功能一览:

    高性能(可能是Android最快的ORM):开源的基准
    易用:功能强大的API涵盖关系和联接
    最小的内存消耗
    精简的库(<100KB):维持较少的编译时间,并避免65k方法数量的限制
    数据库加密:greenDAO支持SQLCipher,以保护用户的数据安全
    强大的社区:GitHub上超过5000个Star(现在已经超过8000了)表明有一个强大和积极的社区

    Realm

    Realm是一款可直接运行在手机,平板电脑或可穿戴设备上的移动数据库。Realm 移动端数据库快速、易用、开源且完全免费,深受开发者和亿万用户喜爱。Realm 是 SQLite 和 Core Data 的替代者,得益于其零拷贝的设计,Realm 比任何 ORM 都要快很多。Realm简单、快速,节约数周的开发时间。几分钟内就能学会使用 Realm。

    功能一览:

    离线优先:即使在离线状态下应用也可正常工作
    查询快速:复杂查询也只需要几纳秒,查询结果与新数据实时同步
    线程安全:多线程访问同一数据毫无问题
    跨平台支持:多个平台不同应用使用同一数据库
    加密:无需额外代码,就能保证你的数据安全
    响应式架构:让Realm连接到UI,及时将数据更新反馈给用户

    使用方法

    我比较懒,贴一下别的博主的博客好了。

    GreenDao3.0简单使用

    这里需要说明的是,greenDAO在github上说

    // In your root build.gradle file:
    buildscript {
        repositories {
            jcenter()
            mavenCentral() // add repository
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.1'
            classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
        }
    }
     
    // In your app projects build.gradle file:
    apply plugin: 'com.android.application'
    apply plugin: 'org.greenrobot.greendao' // apply plugin
     
    dependencies {
        compile 'org.greenrobot:greendao:3.2.2' // add library
    }
    

    这里的root应该是project级的,app project是module级的


    我看很多文章里都没搞对。

    Realm For Android详细教程

    后面有时间的话自己再总结吧

    速度对比

    这里使用的版本是

    greenDAO 3.2.2
    Realm 3.1.1

    速度在不同机型上不同的使用方法肯定会有偏差,这里仅作参考,但还是可以看出Realm在速度上的优势。

    ||增|删|改|查|
    |--|
    |GreenDAO(1条)|10ms|17ms|12ms|1ms|
    |Realm(1条)|5ms|6ms|7ms|1ms|
    |GreenDAO(10条)|47ms|55ms|100ms|2ms|
    |Realm(10条)|6ms|11ms|8ms|1ms|
    |GreenDAO(100条)|402ms|377ms|398ms|3ms|
    |Realm(100条)|10ms|20ms|16ms|1ms|
    |GreenDAO(1000条)|3959ms|3326ms|3297ms|3ms|
    |Realm(1000条)|28ms|71ms|94ms|1ms|

    END

    框架的选择应该结合项目的需求,对比功能,稳定性,拓展性,易用性等多个方面。我也只是个小白,提不了什么有价值的建议。

    最后贴上自己的代码,我只进行了最简单的使用:
    https://github.com/xiaoniu/Database
    需要的可以参考一下,有问题可以评论一下,欢迎探讨。

    相关文章

      网友评论

      • 南通小窝头:你这个比较两个库的插入速度有点问题吧,greendao你是逐条插入的没有做批量处理,所以会开始很多事务,而realm只开启了一次事务,所以没有可比性啊
      • 可乐核桃:realm 个头会比较大;不能跨线程的使用数据,一些情况下也是难受。

      本文标题:greenDAO与Realm的探索

      本文链接:https://www.haomeiwen.com/subject/alvfhxtx.html