大家好,给大家介绍一下,我的新移动端数据库Realm
2017-11-14 本文已影响140人
卡路fly
概述
是一个跨平台移动数据库引擎,支持iOS、OS X(Objective‑C和Swift)以及Android。
Realm相较于SQLite:
- 性能相对其他移动端数据库性能更优。
- 使用相对于SQLite,用法更加简单。
- 据说Realm的目标是为了代替 CoreData 和 SQLite 数据库
特性
- 性能高
一秒钟查询遍历20万条数据的次数 android对比- 简单易用
Realm数据直接暴露成类对象,通过对象查询,避免了ORM映射的维护和性能问题。另外,Realm努力保持API只包括4个基础类(Object, Array, Results and Realms)和一个工具类(Migrations),用户可以凭直觉使用,学习数小时就能在您的App中使用realm
而SQLite,自2000年发布第一个版本,至今已17年。以当今的角度来看,它的编程抽象程度非常低。
- Zero-Copy & LazyLoad
通常数据库查询,先建立连接,然后查询数据库,将查询结果反序列化成实际的对象。而Realm跳过了整个拷贝数据到内存的过程,称之为zero-copy。做到这点是因为文件始终是内存映射的,无论文件是或否在内存当中,访问的都是Realm对象,无需执行任何反序列化操作。
这样就带来了一个问题,难道数据全加载到内存里了?所以这里懒加载应运而生,比如在查询到一组数据后,只有当你真正访问对象的时候才真正加载进来。
- 现代数据库的特性
- 支持json
- 流式API
- 支持关联、泛型、向量化
- 支持数据变更通知,自动数据同步,简单身份验证,访问控制,事件处理
配置
- 在项目的 build.gradle 文件中添加如下 class path 依赖。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:2.1.1"
}
}
- 在 app 的 build.gradle 文件中应用 realm-android 插件
apply plugin: 'realm-android'