Before I start writing on Realm vs Core Data, I would like to take you in a flashback on why and how we started working with Realm database.
In one of our recent mobile application development, we had to choose one best mobile database solution. CoreData, SQLite, and FMDB were already in the list, but before we select database we had to keep few points in mind that our client and our team needed in the mobile application as well as in the database.
- The database should be lightweight
- Should support cross-platform
- Easy to understand, code and maintain
- Should be super speedy
Keeping all these points in mind, we began our search and found one solution which is called Realm Database. Initially, we hesitated using realm db as a database in our mobile application because it would be risky leaving battle tested database solutions like SQLite and CoreData but after successful implementation, we are happy with the outcomes. How? Read more below.
What is Realm Database?
The Realm is an open source database system which is similar to SQLite, but there is nothing to do with SQLite at all. And first of all this not an SQL database system. You can use Realm directly inside your Android and iOS to store & query data locally on the device rather than regular, server-side databases. This flexibility helps mobile app developers build apps rapidly with the significantly higher performance which was previously impossible.
There are many pretty cool features which make fairly easy to use this Realm. Let’s have some details about it further down in the article.
Why Realm Database?
- To use Realm db easily you need very little coding.
- Easy to solve queries in nanoseconds.
- Safe treading use to access the same data at the same time from the multiple threads
- At any platforms and for all application the same Realm is used
- Realm android database system helps you to secure your data with transparent decryption and encryption.
- Reactive architecture is used to connect your user interface to your realm and it will appear automatically with the help of data changes, so you will have the latest data always.
- Utility classes are provided by Realm so it will help you to bind your data with list views and also as recycler views.
- It is helpful to sync your data with all connected devices then you have to build first local realm database and you have to connect with the Realm Mobile Platform.
- It is helpful to add your JSON object directly into it.
- More than 1 billion users are there which rely on Realm.
The Realm is very useful as a database. The information is been described below about how to use realm in your application.
- To use realm for an android developer you must need Android Studio >= 1.5.1
- Along with this you also need to use the recent version of Android SDK.
- JDK version >= 7 is very important to use realm in your application.
- You must have Android API level 9 or above.
CoreData vs Realm
Both CoreData and Realm are based on Objective-C to instantiate original objects which are upheld by some kind of store. By default, SQLite database is used by CoreData and if you like to edit or view database you need some SQLite tools for it. Whereas for Realm, the proprietary format is used for which browser is available on Mac App Store for free to edit and view database.
Why Realm over Core Data?: 5 Reasons
1. Simple & easy to use
CoreData is a powerful database tool yet not easy to use and you may have felt same if you have used it when it comes to maintenance. Whereas Realm is much easy to use than CoreData thanks to traditional NSObject-style classes with @properties. And creating Realm database model object is just a task of few seconds using subclass RLMObject.
Take a look at code snippets
The real beauty of Realm lies in the simplicity of initiating object as a stand-alone object just like regular objects. You can reuse, share Realm object between multiple threads and app launches. All CRUD(Create, Read, Update & Delete) operations on Realm object have to be done through write transactions just as in code snippet example below:
As explained above how to use write transaction to perform an operation on a Realm object, now let’s use [RLMObject allObjects] to query the saved Realm objects, [RLMObject allObjects] returns all RLMObject instances of the same subclass type from the default Realm:
That’s It! Easy isn’t it? It requires no NSManagedObjects, NSPersistentStoreCoordinators, etc.
2. Fabulous Speed
Surprisingly Realm offers an exceptional data storage and execution speed which surpasses all popular mobile data storage solutions like SQLite, FMDB & CoreData. Check the chart below to visually compare Realm over all other database solutions speed wise.
3. Cross Platform
Millions of devices with various platforms(Android, iOS & Windows) being used across the globe. Developing an app for all these users is a real challenge for a business. Keeping this in mind number of cross-platform app development frameworks(PhoneGap, ionic, Xamarin) have been developed to fill this gap of hybrid app development. Similarly, creators at Realm forsee this real problem and came up with an exceptional cross-platform database solution called Realm which is what we are talking about in this post.
Imagine, now you will only have to develop a single database which you can use on both Android and iOS platform and share data seamlessly which is not possible in case you use SQLite or CoreData.
4. Open Source & Well Documented
First and foremost benefit of using Realm is open source. Yes! you heard it right. Realm is open source and completely free to use for commercial use. Not only that but you will get access to well-managed documentation prepared by hard-working engineers at Realm. On top of that, you would get support, access to a forum of more than hundred thousand developers and experts in case if you have question or trouble you want to shoot.
5. Database Management
If are a developer and already have worked with SQLite and Core Data you would better know how hard it is to manage your database model with free and expensive database management tool available like SQLite Professional, Core Data Editor, Core Data Pro. Awesome developers at Realm already got this issue and hit right in the feels and developed a utility called Realm Browser. Realm browser is a database management tool to explore your Realm databases with the ability to edit your database with ease.
There is much more to compare between Realm and CoreData as I’ve compared only pros of Realm over CoreData. It could go vice versa, however, Realm database is definitely a good choice. As a product Realm is the easy-to-setup persistence solution as every developer is expecting. Using Realm database solution in one of our recent project we have nothing but a cool experience with it. Of course, it doesn’t solve all problems a developer facing with CoreData but we should give credit to the excellent developers at Realm who developed a db solution which is able to solve enough of them to make the move worth the while.
CoreData is well tested and Apple supported solution which a developer would feel uneasy to overlook, but Realm is one of the few exceptions and creates a sweet confusion when it comes to selecting the best from best.