iOS 数据库比较:SQLite vs. Core Data vs. Realm

如果你想开发一个能够快速运行并没有Bug的伟大应用,你就必须得仔细的考虑一下你的应用的各个方面。有这么一个你必须解决的方面是怎样存储和查询大数据,那么你就很可能会使用到数据库。在大多数情况下,IOS 数据库都会选择SQLite和Core Data,还有一个相对较新的数据库Realm。

这篇文章讲述了每种选择的优缺点,并讨论了如果你已经使用了SQLite 或 Core Data,那么怎么转换到Realm的过程。

SQLite

SQLite是在世界上使用的最多的数据库引擎,并且还是开源的。它实现了无配置,无服务要求的事务数据库引擎。SQLite可以在Mac OS-X, iOS, Android, Linux, 和 Windows上使用.

由于它是使用ANSI-C开发的,因此它提供了一个简单的,方便使用的编程接口。SQLite也是一个小的,轻量级的,可以被存储在跨平台磁盘文件的完善的数据库。

SQLite之所以这么流行的原因是:

Core Data

Core Data 是App开发者可以使用的第二大主要的IOS存储技术。你需要根据数据类型和数据量进行管理和存储,SQLite和Core Data都有它们各自的优缺点。Core Data 更加关注于对象而不是传统的表数据库方法。使用Core Data,你可以存储一个Objective-C类的对象。

尽管它们从本质上不相同,但是Core data::

Realm 

Realm 是个新技术。Realm天生比前面提到的数据库解决方案更快,更高效。新的解决方案就叫做Realm,它是一个跨平台的移动数据库。它可以在Objective-C 和Swift中使用,并且它是专门为 iOS 和 Android设计的数据库。

Realm最主要的优势是:

Realm 的最大亮点是仅仅用一两行代码就能解决所有问题。Realm易于安装,并且运行速度比SQLite 和 Core Data都快。而且数据库文件即可以在IOS上使用,也可以在Android上使用。

如果你的App的数据量很大,并且用户的使用量也很大,那么你就得在起步时就特别注意可测量性这一方面。Realm就是这方面最好的选择,并它可以让你快速的处理大量数据。

要想使用Realm,只需要iOS 8 或 OS X 10.9以上的系统就可以了。旧的系统还不支持这种新的直接了当的管理本地存储和数据库的解决方式。

切换到Realm

如果你已经使用了Core Data,并且你想转换到Realm,过程很简单。很多开发者用了一两小时就完成了。注意Core Data 和 Realm 都是以对象的形式处理数据的,因此你只需要重构Core Data 代码,使用Realm就可以了。

Realm已经概括了切换的过程, 这里是我对它的总结:

关键是要在使用最好的技术和工具的时候保持你设计的流程简单。一旦你花费时间在建立了你的行之有效的流程,就不要让“新的吸引力”带你走。让“新的”成为你的流程的一部分,然后让时间决定是否值得。