Advertisement
  1. Code
  2. Android SDK

Memulai dengan Cloud Firestore untuk Android

by
Read Time:10 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Imam Firmansyah (you can also view the original English article)

Cloud Firestore adalah suatu penambahan yang baru pada produk keluarga Firebase. Meskipun masih dalam versi beta, Cloud Firestore sudah dihadirkan oleh Google sebagai alternatif yang lebih fleksibel dan kaya akan fitur untuk Firebase Realtime Database.

Jika Anda pernah menggunakan Realtime Database, Anda mungkin sadar bahwa pada dasarnya dokumen JSON yang besar paling cocok untuk menyimpan pasangan nilai key yang sederhana saja. Menyimpan data hierarkis secara efisien dan aman, meskipun memungkinkan, menjadi cukup rumit dan memerlukan strategi yang matang, yang biasanya melibatkan perataan data sebanyak mungkin atau mendenormalkannya. Tanpa strategi seperti itu, query pada Realtime Database cenderung menghabiskan banyak bandwith yang tidak perlu.

Cloud Firestore, karena lebih mirip dengan database berorientasi pada dokumen seperti MongoDB dan CouchDB, tidak memiliki masalah seperti itu. Selain itu, ia hadir dengan sejumlah besar fitur yang sangat berguna, seperti dukungan untuk batch operations, atomic writes, dan indexed queries.

Pada tutorial ini, Saya akan membantu Anda memulai dengan menggunakan Cloud Firestore di Platform Android.

Prasyarat

Untuk dapat mengikuti tutorial ini, Anda akan membutuhkan:

  • Versi terakhir dari Android Studio
  • Akun Firebase
  • dan Perangkat atau Emulator yang menajalankan Android Versi 4.4 atau Lebih tinggi

1. Membuat Project Firebase

Sebelum Anda menggunakan produk Firebase diaplikasi Android, Anda harus membuat sebuah project baru untuknya pada console Firebase. Untuk melakukannya, Login ke console dan tekan tombol Add project pada Layar Selamat Datang (Welcome Screen).

Welcome screen of Firebase consoleWelcome screen of Firebase consoleWelcome screen of Firebase console

Di dialog yang muncul, berikan nama yang berarti untuk project tersebut, secara opsional berikan ID yang berarti untuk itu, dan tekan tombol Create Project.

Add a project dialogAdd a project dialogAdd a project dialog

Setelah proyek dibuat, Anda dapat mengatu Firestore sebagai databasenya dengan menavigasi ke Develop > Database dan tekan tombol Try Firestore Beta.

Database selection pageDatabase selection pageDatabase selection page

Pada layar berikutnya, pastikan Anda memilih pilihan Start in test mode dan tekan tombol Enable.

Firestore security configuration pageFirestore security configuration pageFirestore security configuration page

Pada tahap ini, Anda akan memiliki database Firestore kosong yang siap digunakan pada aplikasi Anda.

Empty Firestore databaseEmpty Firestore databaseEmpty Firestore database

2. Mengkonfigurasi Android Project

Project Android Studio Anda masih tidak mengetahui tentang project Firebase yang telah Anda buat pada langkah sebelumnya. Cara termudah untuk menghubungkan antara keduanya adalah dengan menggunakan Android Studio Firebase Assistant.

Buka Tools > Firebase untuk membuatk Assistant.

Firebase Assistant windowFirebase Assistant windowFirebase Assistant window

Karena Firestore masih dalam versi beta, Asisten belum mendukungnya. Namun demikian, dengan menambahkan Firebase Analytics ke aplikasi Anda, Anda akan dapat mengotomatiskan sebagian besar langkah konfigurasi yang diperlukan.

Mulai dengan mengklik tautan Log an Analytics Event di bagian bawah Analytics dan tekan tombol Connect to Firebase. Jendela browser baru harusnya sekarang muncul menanyakan apakah Anda ingin mengizinkan Android Studio untuk, antara lain, mengelola data Firebase.

Android Studio requesting permissionsAndroid Studio requesting permissionsAndroid Studio requesting permissions

Tekan tombol Allow untuk melanjutkan.

Kembali pada Android Studio, pada dialog yang muncul, pilih opsi Choose an existing Firebase or Google project, pilih proyek Firebase yang Anda buat sebelumnya, dan tekan tombol Connect to Firebase.

Connect to Firebase dialogConnect to Firebase dialogConnect to Firebase dialog

Selanjutnya, tekan tombol Add Analytics to your app untuk menambahkan dependensi core Firebase untuk proyek Anda.

Akhirnya, untuk menambahkan Firestore sebagai dependensi implementation, tambahkan baris berikut dalam modul app build.gradle file:

Jangan lupa untuk menekan tombol Sync Now untuk menyelesaikan konfigurasi. Jika Anda mengalami kesalahan konflik versi selama proses sinkronisasi, pastikan bahwa versi dependensi Firestore dan dependensi Firebase core memiliki kesamaan dan cobalah kembali.

3. Memahami Dokumen dan Collection

Firestore adalah NoSQL database yang memungkinkan Anda untuk menyimpan data seperti dalam bentuk dokumen JSON. Namun, dokumen yang disimpan didalamnya tidak ada secara mandiri. Firestore harus selalu dimiliki oleh collection. Seperti namanya, collection hanyalah sekelompok dokumen.

Dokumen-dokumen dalam collection adalah jelas memiliki hubungan. Jika Anda ingin membangun hubungan antara parent - child diantara keduanya, meskipun Anda harus menggunakan sub collection. Sub collection hanyalah collection yang dimilik dokumen. Secara default, dokumen secara otomatis menjadi parent dari semua dokumen milik sub collection-nya.

Hal ini juga perlu dicatat bahwa Firestore mengelola proses pembuatan dan penghapusan collection dan sub collection sendiri. Setiap kali Anda mencoba untuk menambahkan dokumen ke collection yang tidak tersedia, itu akan menciptakan collection. Sama halnya, setelah Anda menghapus semua dokumen dari collection, maka akan menghapus collection itu sendiri.

4. Membuat Document

Untuk dapat menulis ke database Firestore dari aplikasi Android Anda, Anda terlebih dahulu harus mendapat referensi untuk melakukannya, dengan cara memanggil method getInstance() dari class FirebaseFirestore.

Selanjutnya, Anda harus membuat collection baru atau mendapatkan referensi ke collection yang ada, dengan memanggil method collection(). Sebagai contoh, pada database yang kosong, kode berikut menciptakan collection baru bernama solar_system:

Setelah Anda memiliki referensi ke collection, Anda dapat mulai menambahkan dokumen dengan memanggil method add(), yang mengharapkan map sebagai argumen.

Method add() secara otomatis menghasilkan dan menetapkan pengidentifikasi alfanumerik yang unik untuk setiap dokumen yang yang diciptakan. Sebagai gantinya jika Anda ingin dokumen Anda memiliki kustom ID Anda sendiri, Anda harus secara manual terlebih dahulu membuat dokumen-dokumen tersebut dengan memanggil method document(), yang mengambil ID unik bertipe String sebagai input. Anda kemudian dapat mengisi dokumen dengan memanggil method set(), yang seperti method add, mengharapkan map hanya sebagai argumen.

Sebagai contoh, kode berikut membuat dan mengisi dokumen baru yang disebut PLANET_EARTH:

Jika Anda menuju console Firebase dan lihatlah isi dari database, Anda dapat melihat kustom ID dengan mudah.

New entries in the Firestore databaseNew entries in the Firestore databaseNew entries in the Firestore database

Berhati-hatilah jika kustom ID Anda melewati method document() yang sudah ada dalam database, method set() akan menimpa isi dokumen terkait.

5. Membuat Sub Collections

Dukungan untuk sub collection adalah salah satu fitur Firestore yang paling powerful dan yang membuatnya sangat berbeda dari Firebase Realtime Database. Menggunakan sub collection, Anda tidak hanya dapat dengan mudah menambahkan struktur berlapis ke data Anda tetapi juga memastikan bahwa query Anda akan mengkonsumsi bandwidth dalam jumlah yang minimal.

Membuat sub collection seperti memebuat banyak collection. Semua yang perlu Anda lakukan adalah memanggil method collection() pada objek DocumentReference dan melewati string, yang akan digunakan sebagai nama sub collection.

Sebagai contoh, kode berikut menciptakan sub collection yang disebut satellites dan menghubungkan dengan PLANET_EARTH dokumen:

Setelah Anda memiliki referensi ke sub collection, Anda akan bebas untuk memanggil method add() atau set() untuk menambahkan dokumen.

Setelah Anda menjalankan kode di atas, dokumen PLANET_EARTH akan terlihat seperti ini pada console Firebase:

Subcollection of a documentSubcollection of a documentSubcollection of a document

6. Menjalankan Query

Melakukan operasi read pada database Firestore Anda sangatlah mudah jika Anda tahu ID dokumen yang Anda ingin baca. Mengapa? Karena Anda langsung bisa mendapatkan referensi ke dokumen dengan memanggil method collection() dan document(). Sebagai contoh, berikut adalah bagaimana Anda bisa mendapatkan referensi ke dokumen PLANET_EARTH yang dimiliki oleh collection solar_system:

Untuk benar-benar membaca isi dari dokumen, Anda harus memanggil method asinkronus get(), yang mengembalikan Task. Dengan menambahkan OnSuccessListener, Anda dapat diberitahu ketika operasi read selesai dengan sukses.

Hasil dari operasi read adalah sebuah objek DocumentSnapshot, yang berisi pasangan key-value yang ada dalam dokumen. Dengan menggunakan method get(), Anda bisa mendapatkan nilai dari setiap key yang berlaku. Contoh berikut ini menunjukkan Anda bagaimana:

Jika Anda tidak mengetahui ID dari dokumen yang ingin Anda baca, Anda harus menjalankan query tradisional pada seluruh collection. Firestore API menyediakan method filter intuitif bernama whereEqualTo(), whereLessThan() dan whereGreaterThan(). Karena method filter dapat mengembalikan beberapa dokumen sebagai hasilnya, Anda akan memerlukan sebuah loop dalam OnSuccessListener untuk menangani setiap hasil.

Misalnya, untuk mendapatkan isi dari dokumen untuk planet Venus, yang kami tambahkan pada langkah sebelumnya, Anda dapat menggunakan kode berikut:

Terakhir, jika Anda tertarik untuk melakukan proses pembacaan pada semua dokumen yang dimiliki oleh collection, Anda dapat langsung memanggil method get() pada collection. Misalnya, disini adalah bagaimana Anda bisa membuat daftar dari semua planet yang ada dalam collection solar_system:

Perhatikan bahwa, secara default, tidak ada urutan yang pasti dimana hasil dikembalikan. Jika Anda ingin mengurutkan berdasarkan key yang ada pada semua hasil, Anda dapat menggunakan method orderBy(). Kode berikut mengurutkan hasil berdasarkan nilai key angka / number:

7. Menghapus Data

Untuk menghapus dokumen dengan ID yang dikenal, semua yang perlu Anda lakukan adalah mendapatkan referensi untuk melakukannya dan kemudian memanggil method delete().

Menghapus banyak dokumen-dokumen yang Anda peroleh sebagai hasil query - sedikit lebih rumit karena tidak ada method bawaan untuk melakukannya. Ada dua pendekatan berbeda yang bisa Anda ikuti.

Pendekatan termudah dan paling intuitif — meskipun hanya cocok untuk sejumlah kecil dokumen — adalah melakukan perulangan melalui data yang dihasilkan, mendapatkan referensi ke setiap dokumen, dan kemudian memanggil method delete(). Inilah cara Anda menggunakan pendekatan untuk menghapus semua dokumen dalam collection solar_system:

Pendekatan yang lebih efisien dan skalabel adalah dengan menggunakan operasi batch. Operasi batch tidak hanya dapat menghapus beberapa dokumen secara atomik tetapi juga secara signifikan mengurangi jumlah koneksi jaringan yang diperlukan.

Untuk membuat batch baru, Anda harus memanggil method batch() dari database Anda, yang mengembalikan instance pada class WriteBatch. Kemudian, Anda bisa melakukan perulangan melalui semua hasil query dan menandainya untuk dihapus dengan meneruskannya ke method delete() pada objek WriteBatch. Akhirnya, untuk benar-benar memulai proses penghapusan, Anda dapat memanggil method commit(). Kode berikut memperlihatkan kepada Anda bagaimana:

Perhatikan bahwa untuk mencoba menambahkan terlalu banyak dokumen ke operasi single batch dapat menyebabkan kesalahan berlebihannya penggunaan memori. Oleh karena itu, jika permintaan Anda cenderung mengembalikan sejumlah besar dokumen, Anda harus memastikan bahwa anda membaginya menjadi beberapa kelompok

Kesimpulan

Dalam tutorial pengantar ini, Anda belajar cara melakukan operasi read dan write pada Google Cloud Firestore. Saya sarankan Anda mulai menggunakannya pada proyek Android Anda segera. Ada kemungkinan besar Cloud Firestore akan menggantikan Realtime Database dimasa depan. Bahkan, Google sudah mengatakan bahwa pada saat Cloud Firestore keluar dengan versi beta, Cloud Firestore akan jauh lebih handal dan skalabel daripada Realtime Database.

Untuk mempelajari lebih lanjut tentang Cloud Firestore, Anda dapat merujuk ke dokumentasi resmi.

Dan sementara Anda berada di sini, periksalah beberapa tutorial kami untuk Firebase dan Android app development!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.