Apa itu firebase realtime database

Firebase Realtime Database adalah database yang di-host di cloud yang berbasis NoSQL database. NoSQL database adalah database yang tidak menggunakan sistem relasi layaknya pada database tradisional (MySQL dll.). Metode penyimpanan data di dalam NoSQL menggunakan objek yang menggunakan format JSON (JavaScript Object Notation). Data disimpan sebagai JSON dan disinkronkan secara realtime ke setiap klien yang terhubung. Ketika Anda membuat aplikasi lintas-platform dengan SDK Android, iOS, dan JavaScript, semua klien akan berbagi sebuah instance Realtime Database dan menerima update data terbaru secara otomatis.

Lalu Apa Saja Kelebihan Firebase?

  1. Realtime

Sebagai ganti permintaan HTTP biasa, Firebase Realtime Database menggunakan sinkronisasi data—setiap kali data berubah, semua perangkat yang terhubung akan menerima update dalam waktu milidetik. Memberikan pengalaman yang kolaboratif dan imersif tanpa perlu memikirkan kode jaringan.

  1. Offline

Aplikasi Firebase tetap responsif bahkan saat offline karena SDK Firebase Realtime Database menyimpan data ke disk. Setelah konektivitas pulih, perangkat klien akan menerima setiap perubahan yang terlewat dan melakukan sinkronisasi dengan status server saat ini.

  1. Dapat Diakses dari Perangkat Klien

Firebase Realtime Database dapat diakses secara langsung dari perangkat seluler atau browser web; server aplikasi tidak diperlukan. Keamanan dan validasi data dapat diakses melalui Aturan Keamanan Firebase Realtime Database yang merupakan kumpulan aturan berbasis ekspresi dan dijalankan ketika data dibaca atau ditulis.

  1. Menskalakan di beberapa database

Dengan Firebase Realtime Database pada paket harga Blaze, Anda dapat mendukung kebutuhan data aplikasi Anda pada skala tertentu dengan membagi data Anda di beberapa instance database di project Firebase yang sama. Menyederhanakan autentikasi dengan Firebase Authentication pada project Anda dan mengautentikasi pengguna di instance database Anda. Mengontrol akses ke data di tiap database dengan Aturan Firebase Realtime Database khusus untuk tiap instance database.

Firebase Realtime Database memungkinkan Anda untuk membuat aplikasi kolaboratif dan kaya fitur dengan menyediakan akses yang aman ke database, langsung dari kode sisi klien. Data disimpan di drive lokal. Bahkan saat offline sekalipun, peristiwa realtime terus berlangsung, sehingga pengguna akhir akan merasakan pengalaman yang responsif. Ketika koneksi perangkat pulih kembali, Realtime Database akan menyinkronkan perubahan data lokal dengan update jarak jauh yang terjadi selama klien offline, sehingga setiap perbedaan akan otomatis digabungkan. Realtime Database menyediakan bahasa aturan berbasis ekspresi yang fleksibel, atau disebut juga Aturan Keamanan Firebase Realtime Database, untuk menentukan metode strukturisasi data dan kapan data dapat dibaca atau ditulis. Ketika diintegrasikan dengan Firebase Authentication, developer dapat menentukan siapa yang memiliki akses ke data tertentu dan bagaimana mereka dapat mengaksesnya. Realtime Database adalah database NoSQL, sehingga memiliki pengoptimalan dan fungsionalitas yang berbeda dengan database terkait. API Realtime Database dirancang agar hanya mengizinkan operasi yang dapat dijalankan dengan cepat. Hal ini memungkinkan Anda untuk membangun pengalaman realtime yang luar biasa dan dapat melayani jutaan pengguna tanpa mengorbankan kemampuan respons. Oleh karena itu, perlu dipikirkan bagaimana pengguna mengakses data, kemudian buat struktur data sesuai dengan kebutuhan tersebut.

Referensi: https://firebase.google.com/docs/database?hl=id

By: Dyan Ahadiansyah – Engineering  Laboratory Asisstant

(Penerima Beasiswa Sarjana Muamalat 2019)

Tugas Pembinaan Beasiswa Sarjana Muamalat

Source: https://www.youtube.com/watch?v=peQ9ATXwPwg

Firebase adalah Cloud Service Provider dan Backend as a Service yang dimiliki oleh Google. Firebase merupakan solusi yang ditawarkan oleh Google untuk mempermudah dalam pengembangan aplikasi mobile maupun web. Kita tidak perlu membangun fitur-fitur yang dibuat pada backend dan infrastruktur dari awal sehingga kita dapat fokus untuk mengembangkan aplikasi yang berkualitas tinggi tanpa perlu mengeluarkan effort yang besar.

Firebase memiliki banyak SDK yang memungkinkan untuk mengintegrasi-kan layanan ini dengan Android, iOS, Javascript, C++ hingga Unity.

Fitur-fitur di Firebase

Realtime Database

Salah satu fitur yang menarik di Firebase adalah Realtime Database. Firebase Realtime Database adalah sebuah Cloud-Hosted database yang dapat menyimpan dan melakukan sinkronisasi data secara realtime untuk setiap client yang terhubung. Setiap kali pengguna memperbarui data, itu akan menyimpannya pada cloud dan sekaligus memberitahu ke semua client yang terhubung dan secara otomatis menerima pembaruan dengan data terbaru.

Firebase Realtime Database juga dilengkapi dengan fitur yang mendukung offline mode. Saat melakukan perubahan data pada saat offline mode atau tidak terdapat koneksi ke server, perubahan tersebut disimpan di lokal terlebih dahulu. Ketika device kembali online maka Firebase akan melakukan sinkronisasi terhadap perubahan data lokal dengan pembaruan jarak jauh yang terjadi saat client offline, dengan menggabungkan perbedaan apapun secara otomatis.

Struktur Data

Realtime Database merupakan sebuah NoSQL database sehingga memiliki fungsi dan optimasi yang berbeda dibanding dengan relational database. Pada Realtime Database, data disimpan sebagai JSON objects, sehingga struktur data yang disimpan pada database ini berupa JSON tree.

Tidak seperti SQL database yang terdapat table-table atau records. Ketika data ditambahkan ke JSON tree, itu akan menjadi sebuah node di dalam struktur JSON yang ada dengan sebuah associated key. Associated key dapat berupa user id, semantic names, atau dapat dibuat secara otomatis dengan push().

Contoh sederhana dari struktur JSON tree.

{
"notes": {
"xxxxxx": {
"title": "What is Lorem Ipsum?",
"content": "Lorem Ipsum is simply dummy text of the print..."
},
"yyyyyy": {
"title": "Why do we use it?",
"content": "It is a long established fact that a reader ..."
},
"zzzzzzz": { ... }
}
}

Pada tulisan ini kita akan membuat aplikasi sederhana bernama Noteq dengan menggunakan Firebase Realtime Database untuk penyimpanan datanya. Mari kita memulainya.

Setup Firebase Realtime Database untuk Android

Buat baru Proyek Android seperti biasa, setelah itu buat baru Proyek Firebase untuk ditambahkan ke Proyek Android. Terdapat dua cara untuk menambahkan Firebase ke Proyek Android, yaitu dengan menggunakan Firebase Assistant atau menambahkannya secara manual. Untuk langkah-langkah menambahkan Firebase ke Proyek Android silahkan membacanya pada tulisan ini

Install Dependency Realtime Database

Setelah selesai, tambahkan dependency untuk Firebase Realtime Database ke build.gradle yang terdapat pada folder /app.

compile 'com.google.firebase:firebase-database:10.2.0'

maka isi dari build.gradle akan seperti ini:

apply plugin: 'com.android.application'android {
// ...
}
dependencies {
// ...
compile 'com.google.firebase:firebase-database:10.2.0'
}
apply plugin: 'com.google.gms.google-services'

Lalu klik Sync Now pada notif di Android Studio untuk menginstallnya ke Proyek Android.

Konfigurasi Realtime Database Rules

Firebase Realtime Database menyediakan sebuah declarative rules language yang dapat digunakan salah satunya untuk akses read dan write ke database. Secara default, read dan write ke database dibatasi hanya pengguna yang telah ter-autentikasi yang dapat read atau write data. Pada tulisan ini kita akan mengkonfigurasikan rulesnya untuk dapat diakses oleh publik.

Masuk ke Proyek Firebase yang telah dibuat sebelumnya pada Firebase Console, klik Database lalu pilih tab Aturan. Masukkan aturan dibawah ini pada form yang ada.

{
"rules": {
".read": true,
".write": true
}
}

Setelah menyimpannya akan muncul alert, untuk sekarang abaikan saja alert tersebut.

Prolog

Sedikit penjelasan dasar dalam menggunakan Realtime Database pada Android. Untuk membaca dan menulis data, kita membutuhkan sebuah instance dari DatabaseReference.

private DatabaseReference mDatabase;
// ...
mDatabase = FirebaseDatabase.getInstance().getReference();

Untuk menulis data, kita dapat menggunakan setValue() untuk menyimpan maupun me-replace data yang ada pada spesifik reference. Tipe data yang dapat di-passing pada method tersebut yaitu:

  1. JSON types seperti String, Long, Double, Boolean, Map, dan List.
  2. Custom Java Object.

Untuk membaca maupun menerima perubahan data, kita dapat menambahkan ValueEventListener ke reference yang telah dibuat. Pada ValueEventListener terdapat method onDataChange() yaitu sebuah event callback yang digunakan untuk membaca dan menerima perubahan data. Event Listener inilah yang merupakan core dari konsep realtime pada Firebase Realtime Database.

Implementasi Realtime Database

Setelah kita menyelesaikan setup Firebase Realtime Database untuk Android dan mengetahui dasar-dasar menggunakannya, saatnya kita mulai mencoba untuk mengimplementasikannya di Android.

Pada tulisan ini dari sisi coding kita hanya akan membahas cara implementasi Realtime Database pada Android, untuk lebih lengkap kamu bisa melihatnya pada source code dibawah ini.

Seperti penjelasan sebelumnya, kita membutuhkan sebuah instance dari DatabaseReference:

private DatabaseReference mNoteRef;
// ...
mNoteRef = FirebaseDatabase.getInstance().getReference("notes");

Custom Java Object

Buat Class Note untuk digunakan sebagai custom Java Object, object tersebut akan disimpan ke reference pada Realtime Database. Class ini juga digunakan sebagai data layer untuk ditampilkan ke antarmuka.

Custom Java Object

Menambahkan Data

Untuk menambahkan data ke database, masukkan object dari Class Note yang telah dibuat sebelumnya sebagai parameter ke method setValue().

Code snippet inserting data

Kita dapat men-generate key menggunakan push().getKey() dari reference instance. Key tersebut digunakan sebagai associated key dengan value object dari Class Note untuk node baru yang dibuat.

Menampilkan List Data

Untuk menampilkan list data kita gunakan ValueEventListener lalu tambahkan event listener tersebut ke reference dengan menggunakan method addValueEventListener().

Code snippet listening for data changes

Pada event callback onDataChange(), kita dapat mengakses informasi dengan menggunakan DataSnapshot salah satunya untuk mendapatkan list data (child) pada method getChildren(). Lalu list data tersebut kita passing ke notesView.refreshNoteList() untuk ditampilkan pada List View yang ada di antarmuka aplikasi.

Untuk mengetestnya, kita akan melakukan perubahan data secara langsung dari Firebase Console.

Firebase Realtime Database Demo

Pada gambar diatas terlihat kemampuan realtime dari Firebase Realtime Database. Pembaruan data dari database otomatis akan diterima oleh client yang terhubung untuk ditampilkan ke antarmuka.

Kesimpulan

Realtime Database merupakan salah satu fitur canggih dari Firebase. Dengan SDK yang dimilikinya, kita dapat dengan mudah membangun aplikasi realtime hanya dengan sedikit code tanpa harus membuat web socket dan lain-lain dari awal. Cara penggunaannya juga tidak sulit, struktur data yang dimiliki mirip dengan database NoSQL. Pada SDK-nya terdapat Event Listener yang berguna untuk menerima perubahan data dari database, hal ini yang membuat aplikasi kita menjadi responsive terhadap perubahan data.

Pada tulisan ini kita tidak membahas mengenai kemampuan Realtime Database untuk offline mode, kamu bisa mempelajarinya dengan membaca dokumentasinya disini.

Dengan Firebase Realtime Database kita dapat menggunakannya untuk membangun aplikasi realtime seperti aplikasi chat hingga Realtime Dashboard.

Referensi

  1. Introduction to Firebase Realtime Database
  2. Set up Firebase Realtime Database for Android
  3. Structure Your Database
  4. Read and Write Data on Android
  5. Work with Lists of Data on Android

Jelaskan apa yang dimaksud dengan Firebase Realtime Database?

Realtime Database adalah database asli yang di-host langsung oleh Firebase. Data ini disimpan ke dalam bentuk JSON dan disinkronkan antar pengguna secara realtime. Sinkronisasi ini sendiri bisa dilakukan secara offline maupun online dan berlaku untuk Android maupun iOS.

Mengapa Firebase Realtime Database tetap responsif bahkan saat offline?

Aplikasi Firebase tetap responsif bahkan saat offline karena Firebase Realtime Database SDK mempertahankan data Anda di disk. Setelah konektivitas pulih, perangkat klien akan menerima setiap perubahan yang terlewat dan melakukan sinkronisasi dengan status server saat ini.

Apakah Firebase termasuk backend?

Firebase authentication merupakan layanan back-end, fitur iOS dan Android, SDK, yang mudah penggunaannya. Tampilan antarmuka firebase authentication juga sudah siap pakai untuk melakukan autentikasi kepada pengguna aplikasi yang dibuat oleh pengembang.

Jelaskan apa saja kelebihan menggunakan database Firebase?

Manfaat utama Firebase memiliki API intuitif yang dikemas dalam 1 SDK, sehingga dapat membantu Anda mengembangkan aplikasi berkualitas tinggi dengan cepat. Firebase juga menyediakan banyak fitur yang dapat digunakan untuk memperluas basis pengguna dan menghasilkan lebih banyak uang.