Badr Interactive Engineering
Berbagi pengalaman untuk menciptakan software yang lebih baik

Realm Database untuk Mobile App

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 android

    • Benchmark pada platform Ios Benchmark 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!