`
iaiai
  • 浏览: 2195651 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android上替代SQLite的选择:Realm

 
阅读更多
Realm是一个开源的面向对象移动数据库。上个月,Realm的Android版本发布了,比iOS版本晚了三个月。

我们之前已经报道过,Realm没有使用SQLite作为它的引擎,而是用C++写了自己的引擎,他们的目标是提供一个聚焦移动领域的SQLite的替代者。现在它的Android版本已经发布了。

当前 Android 上的Realm的API和 iOS 版本有点不同,这也反映了Objective C和Java的差别。Java版本的API有更高的强类型(strong-typed)要求,也更连贯(fluent)。

比如,在iOS上,查询是通过静态方法如"objectWhere"来进行的,这将返回一个RLMArray。这里的谓词都是基于字符串的。以下就是基于Object C的查询方法:
RLMArray *tanDogs = [Dog objectsWhere:@"color = 'tan' AND name BEGINSWITH 'B'"];

另一方面,在Android下进行相同的查询却是这样的:
RealmResults<Dog> tanDogs = realm.where(Dog.class)
                                  .equalTo("color", "tan")
                                  .beginsWith("name", "B")
                                  .findAll();

当然,这有可能会被一种跨iOS、Android和其他平台的文本查询语言所替代。 Tim Anglade 是Realm的产品主管,他在一封邮件中指出,未来API的发展方向很大程度取决于社区的反馈。

虽然Realm是一个面向对象的数据库,但它和其他同类产品还是有一些明显的不同。Tim解释道,当它用原生对象格式(native object format)来存储数据时,这些对象不会带着其语言特有的格式原封不动地存在磁盘上,而是通过C++引擎存储在一个全局的表中。这使得Realm可以通过各种语言来访问数据,还包括各种 即时查询 (adhoc query)。

相比关系数据库,这种混合了对象和表的方式的优势在于它使图查询(graph query)更高效——甚至在相对老旧的智能手机上,查询深度嵌套的对象图也不会影响系统反应速度。Realm发布的基准测试(benchmark)结果称,在普通操作上,Realm的速度最快要达到原始的SQLite的10倍。

如果你现在有一个应用程序使用CoreData(iOS上)或SQLite(Android上),并且想迁移到Realm,肯定有一些事要做。这不是随便拿来就能用的——Tim解释说,CoreData和SQLite倾向于使用一种非常标准化的形式,这种做法在Realm上行不通。你最好从对象的角度重新思考你的模式(schema)和模型(model)。

一旦你修改了你的模式,使之适用于Realm,接下来把现有数据从CoreData/SQLite迁移过来就简单了。只要配置一次 迁移 操作(从Realm数据库版本0到版本1),在迁移过程中,把你的SQLite数据加载到Realm对象中并保存它们。

或者,如果你的数据保存在远程服务器上,你可以从头新建Realm数据库。

在采用Realm之前,必须要考虑到它是一个最前沿的软件,这意味着将来它的API有可能做出和以前不兼容的修改。

欢迎加Q Q群: 104286694
分享到:
评论

相关推荐

    realm数据库的Android代码使用

    在Android开发中, Realm 提供了替代传统SQLite数据库的选项,它简化了数据管理并支持实时数据,使得应用程序能即时反映出数据变化。 Realm数据库的核心特性包括: 1. **高效性能**:Realm采用原生持久化存储,...

    realm-java:Realm是一个移动数据库:SQLite和ORM的替代品

    快速:在保持非常丰富的功能集的同时,Realm在常规操作上甚至比原始SQLite更快。 入门 请参阅的将Realm添加到您的项目中。 文献资料 可以在找到Realm的文档。 API参考位于 。 获得帮助 有问题吗? :在上查找先前的...

    Realm数据库使用

    4. **性能优化**:相比SQLite,Realm在读写速度上有显著优势,尤其在大量数据操作时。 5. **内存管理**: Realm使用内存映射技术,数据在内存中以原生二进制格式存在,减少了内存分配和释放的开销。 6. **事务处理...

    RealmForAndroidDemor.zip

    在build.gradle文件中,会有添加Realm库的依赖代码,例如`implementation 'io.realm:realm-android:版本号'`。 2. **模型类定义**: Realm允许开发者定义自己的数据模型类,这些类继承自`RealmObject`。每个模型类...

    Java_Realm是一个移动数据库,可以替代SQLite orm.zip

    Java_Realm是一个专门为移动应用设计的高性能、易用的数据库解决方案,它可以替代传统的SQLite ORM(对象关系映射)系统。在Android开发中,SQLite通常被用于数据存储,但随着应用程序复杂性的增加,SQLite的局限性...

    realm-dotnet:Realm是一个移动数据库:SQLite和ORM的替代品

    Realm是直接在手机,平板电脑或可穿戴设备上运行的移动数据库。 该存储库包含Realm的.NET / C#版本的源代码。 当前,我们支持所有主要的移动和桌面操作系统,例如iOS,Android,UWP,macOS,Linux和Windows。 有关...

    intro-to-realm:Realm 简介 - http

    它提供了一种替代传统SQLite和Core Data的方式,以更高效、更直观的方式来处理数据存储。在Objective-C的环境中,Realm为开发者提供了便捷的数据管理方案,使得应用程序能够快速地读写数据,同时保持数据的一致性和...

    Android操作Realm数据库的代码例子

    在Android应用开发中, Realm是一个流行的对象关系映射(ORM)框架,它提供了一种高效且易于使用的本地持久化解决方案,替代传统的SQLite数据库。本示例将深入探讨如何在Android项目中操作Realm数据库,包括创建、...

    Realm是一个移动数据库:SQLite和键值存储的替代品-C/C++开发

    当前,我们仅支持React Native(iOS和Android)以及Node.js(在MacOS和Linux上),但是w Realm是直接在手机,平板电脑或可穿戴设备内部运行的移动数据库。 该项目托管RealmJavaScript版本。 目前,我们仅支持React ...

    RealmDemo:测试 Realm 的简单应用

    Realm 是一个现代化的、高性能的、为移动设备设计的数据库解决方案,尤其在 Android 和 iOS 平台上被广泛使用。它提供了一种替代传统的 SQLite 和 ORM(对象关系映射)的方式,使得数据存储更加高效、便捷。 Realm ...

    MacOS Realm

    **MacOS Realm:深入理解与应用** Realm是一个现代、高性能的对象数据库,专为移动和桌面应用程序设计,包括iOS和MacOS平台。 Realm的核心优势在于它提供了简单易用的API,直接在应用程序内存中操作数据,极大地...

    realm-java-3.1.0.zip

    在这个版本中, Realm 提供了高效的本地数据存储解决方案,可以替代传统的 SQLite 或者基于文件的存储方式。 Realm的核心概念是 Realm Object,它是 Realm 数据库中的基本数据结构。这些对象直接映射到数据库表,...

    RealmTutorials:各种Realm教程的集合。 在realm.ioaddons上获得说明

    Realm 提供了一种替代传统的 SQLite 和 CoreData 的方式,以其出色的性能、易于使用以及对实时同步的支持而受到开发者喜爱。 **Swift与Realm** 在 Swift 开发中, Realm 提供了一个简单且直观的 API,允许开发者...

    Android Studio简易购物车

    综上所述,"Android Studio简易购物车"项目通过结合RecyclerView的列表展示能力和Realm的数据库管理功能,实现了一个实用且高效的购物车应用。这个项目对于初学者来说,是一个很好的实践案例,可以帮助他们掌握...

    Android项目:此文件夹包含所有实现Fragments,ListVIew,Recycler View,SQLite,Firebase数据库,Okhttp,Firebase Cloud,Intent,AsyncTask,Realm的android项目

    Realm是Android上的一个现代对象关系映射(ORM)库,提供了替代SQLite的高性能本地数据存储方案。它支持复杂的查询和实时数据同步,使数据操作更为简便。 10. **REST API Java**: REST(Representational State ...

    Android-今日头条ForAndroid

    - 数据缓存:利用SQLite数据库或Realm存储本地数据,提升用户体验。 5. **多线程处理** - 使用Android的AsyncTask或IntentService进行后台任务处理,避免阻塞主线程。 - 利用RxJava或Kotlin协程实现异步操作,...

    [Android实例] 【版主帖推荐】继人员列表,聊天的实现,包括图片,语音_Android.rar

    - `Realm`或`Room`:更现代的数据持久化库,可能被用到替代SQLite。 3. **网络通信**: - `Retrofit`:一个流行的HTTP客户端库,用于与服务器API交互,发送和接收消息。 - `OkHttp`:作为Retrofit的基础,负责...

    5阿里Android技术手册PDF.zip

    - Realm与LitePal:对比分析Realm和LitePal作为替代SQLite的解决方案。 5. **多线程与异步处理** - AsyncTask与Handler:解析这两个常用异步处理机制的工作原理和适用场景。 - RxJava:介绍响应式编程的概念,...

    react-native-realm-tutorial:React Native领域教程库

    Realm是一种高性能、轻量级的本地对象存储解决方案,尤其适用于移动应用开发,提供了替代传统SQLite或远程API获取数据的方式。 Realm数据库的核心特性包括: 1. **本地存储**:Realm提供了一种快速且高效的本地...

    Android手机淘宝客户端

    2. Realm:替代SQLite的高性能对象关系映射(ORM)框架,提供更简便的数据操作。 3. EventBus:事件总线框架,用于组件间通信,降低耦合度。 五、图片加载与缓存 1. Glide:图片加载库,优化图片加载速度和内存管理...

Global site tag (gtag.js) - Google Analytics