Realm Database untuk Mobile App
29 May 2016
Introduction
Saat ini, kompleksitas aplikasi mobile hampir sama dengan aplikasi desktop maupun web. Aplikasi mobile yang mengharuskan load data besar, biasanya membutuhkan database internal / local database. Hal ini akan membantu untuk memperkecil size aplikasi yang diupload ke store karena data akan diload ketika aplikasi first initiate.
Apa itu Realm?
Seperti judul di atas, Realm adalah mobile database. Ya, database yang digunakan untuk penyimpanan data secara local pada aplikasi berbasis mobile. Mungkin kalian akan berpikir “kan ada sqlite?”, “bedanya dengan sqlite apa?”. Realm dan Sqlite sama merupakan database mobile, namun ada bedanya. Dilansir dari situs resminya realm.io, bahwa “Realm is a replacement for SQLite & Core Data”. Hmmm… apa ya maksud nya? Yupz, Realm menggantikan konsep SQlite yang based on SQL syntax dengan konsep based on Object. Hal inilah yang membuat realm lebih cepat dan lebih ringan dibandingkan dengan SQLite. O iya, Realm ini sudah release 1.0 per 25 May 2016 kemarin loh, sejak pertama kali dibuat pada Juli 2014 hingga release, sudah 13,949 Commit dan 6,148 Issues terselesaikan. Jadi jangan khawatir realm ini belum stabil ya. Insya Allah Realm ini pasti stabil.
Kelebihan Realm
Pasti ada alasan kenapa kita harus menggunakan realm? Ya, alasanya yaitu :
-
Mudah digunakan Hmm.. Mudahnya dimana sih? Ya, sesuai yang saya jelaskan tadi bahwa realm ini tidak menggunakan syntax SQL untuk proses transaksinya. Selain itu, dengan Realm ini kita tidak perlu generate masing tabel berikut field-fieldnya lagi karena kelas object yang biasa kita buat di layer model(konsep OOP) akan tergenerate otomatis sebagai tabel dengan field yang tergenerate dari atribut yang dimiliki object itu sendiri. Hal itulah yang membuat proses inisial table lebih mudah dan bahkan lebih cepat. Contoh class object yang tergenerate jadi table:
public class User extends RealmObject { private String name; private int age; @Ignore private int sessionId; // Standard getters & setters generated by your IDE� public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getSessionId() { return sessionId; } public void setSessionId(int sessionId) { this.sessionId = sessionId; } }
-
Insert Data
User user = new User("John"); user.setEmail("john@corporation.com"); // Copy the object to Realm. Any further changes must happen on realmUser realm.beginTransaction(); User realmUser = realm.copyToRealm(user); realm.commitTransaction();
-
Delete Data
// obtain the results of a query final RealmResults<Dog> results = realm.where(Dog.class).findAll(); // All changes to data must happen in a transaction realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { // remove single match results.deleteFirstFromRealm(); results.deleteLastFromRealm(); // remove a single object Dog dog = results.get(5); dog.deleteFromRealm(); // Delete all matches results.deleteAllFromRealm(); } });
-
-
Cepat
Wow, cepat? Ya, Realm ini lebih cepat dibandingkan dengan database mobile lainnya. Berikut benchmark proses insert data:
-
Benchmark pada platform Android
-
Benchmark pada platform Ios
-
-
Lintas Platform Realm ini supoort di beberapa bahasa pemrogramman mobile, seperti Java(Android), Objective C, dan Swift. Kalian bisa berbagi file realm lintas platform namun dengan lyer model yang sama dan business logic yang sama.
-
Advance Realm ini support fitur-fitur advance seperti enkripsi, graph query, serta migrasi yang mudah.
-
Terpercaya Realm sudah banyak dipakai pada aplikasi-aplikasi besar seperti bank, kesehatan, provider, atau aplikasi enterprise lainnya. Bahkan Starbucks sudah memakai realm pada aplikasinya.
-
Communnity-Driven Di github, realm sudah mendapatkan bintang 4. Komunitasnya sudah membuat ratusan aplikasi, plugin, dan component.
-
Supported Kalau kalian bingung atau dapa masalah yang berhubungan dengan realm, silahkan tanya saja via Github, StackOverflow, & Twitter offcial realm akan menjawab dengan cepat.
So, bagimana? tertarik menggunakan realm? tunggu artikel saya selanjutnya di Best Practice Menggunakan Realm!