Tag Realm

Realm 在 Android 上的应用

什么是Realm? 在Android平台上,有很多基于SQLite的ORM框架,例如GreenDAO, OrmLite, SugarORM, LitePal等等,对于写习惯了SQL语句的小伙伴们来说,看到SQLite这样的数据库肯定是倍感亲切了,有了这些框架更是如虎添翼。 但是,在我们日常的开发中,数据量并不会特别的大,表的结构也不会特别复杂,用SQL语句有种大(过)材(于)小(繁)用(琐)的感觉,我们需要做的事情可能仅仅是把用户生成的数据对象快速的缓存起来。 这个时候NoSQL就派上了用场,以Mongodb,Redis为代表的NoSQL都引入了一些相对现代化的方式存储数据,比如支持Json,Document的概念,流式api,数据变更通知等等,极大程度的降低了我们学习的成本提高了我们的开发效率。而Realm作为一款移动端的NoSQL框架,官方定位就是替代SQLite等关系型数据库。 Realm是一个由Y Combinator孵化的创业团队开源出来的MVCC(多版本并发控制)的数据库,支持运行在手机,平板和可穿戴设备等嵌入式设备上。 Realm的优点 简单易用 速度快 跨平台 高级功能 可视化 开源 简单易用 上面我们已经说过,Realm并不是基于SQLite上的ORM,它有自己的数据库引擎,使用也非常简单。我们先来看看一段简单的代码。 速度快 我们直接看Realm官方的对比测试数据吧。 每秒能在200K数据记录中进行查询后count的次数: Realm能够达到30.9次,而SQLite只能达到13.6次,Core Data只能达到可怜的一次。 在200K条数据记录进行一次遍历查询,数据和前面的count相似: Realm能够达到每秒遍历200K数据记录31次,SQLite只能达到14次,而Core Data只有可怜的2次。 在一次事物中每秒插入数据量的对比,SQLite可以达到178K条记录,性能最好,Realm可以达到94K,而Core Data再次垫底,只有18K。 我自己也进行一次简单的测试,以JSON格式插入641条记录(好吧,我知道数据量比较小,仅仅只是一个参考,具体的数据可以参考这里)。 207毫秒(Android 7.1.1, Realm 3.0)。 跨平台 Realm目前支持Objective-C(iOS), Swift(iOS), Java(Android), JavaScript, Xamarin等平台。 现在很多应用都需要兼顾iOS和Android两个平台,使用Realm可以使用Realm提供的API,在数据持久化层实现两个平台的无差异化移植,无需对内部数据的架构进行改动。…