Firestore dalam mode Datastore (Datastore) adalah database dokumen NoSQL yang dibangun untuk penskalaan otomatis, performa tinggi, dan kemudahan pengembangan aplikasi. Fitur Datastore meliputi:
- Transaksi atom. Datastore dapat menjalankan serangkaian operasi yang semua operasi akan berhasil, atau tidak akan ada operasi yang terjadi.
- Ketersediaan baca dan tulis yang tinggi. Datastore berjalan di pusat data Google, yang menggunakan redundansi untuk meminimalkan dampak dari titik kegagalan.
- Skalabilitas besar dengan performa tinggi. Datastore menggunakan arsitektur terdistribusi untuk mengelola penskalaan secara otomatis. Datastore menggunakan campuran indeks dan batasan kueri sehingga kueri Anda diskalakan dengan ukuran set hasil, bukan ukuran set data.
- Penyimpanan dan pembuatan kueri data yang fleksibel. Datastore dipetakan secara alami ke bahasa berorientasi objek dan skrip, serta diekspos ke aplikasi melalui beberapa klien. Datastore juga menyediakan bahasa kueri seperti SQL.
- Konsistensi kuat. Datastore memastikan bahwa semua kueri sangat konsisten.
- Enkripsi dalam penyimpanan. Datastore secara otomatis mengenkripsi semua data sebelum ditulis ke disk dan secara otomatis mendekripsi data tersebut saat dibaca oleh pengguna yang diotorisasi. Untuk informasi selengkapnya, lihat Enkripsi Sisi Server.
- Terkelola sepenuhnya tanpa periode nonaktif terencana. Google menangani administrasi layanan sehingga Anda dapat berfokus pada permohonan Anda. Aplikasi Anda tetap dapat menggunakan Datastore saat layanan menerima upgrade terencana.
Perbandingan dengan database relasional
Meskipun antarmuka Datastore memiliki banyak fitur yang sama dan mirip dengan database relasional, sebagai database NoSQL, antarmuka ini bervariasi dalam menjelaskan hubungan antar-objek data. Berikut adalah perbandingan tingkat tinggi antara Datastore dan konsep database relasional:
Konsep | Datastore | Firestore | Database relasional |
---|---|---|---|
Kategori objek | Jenis | Grup koleksi | Tabel |
Satu objek | Entity | Dokumen | Baris |
Data individual untuk sebuah objek | Properti | Kolom | Kolom |
ID unik untuk objek | Kunci | ID dokumen | Kunci utama |
Tidak seperti baris dalam tabel database relasional, entity Datastore dengan jenis yang sama dapat memiliki properti yang berbeda, dan entity yang berbeda dapat memiliki properti dengan nama yang sama tetapi jenis nilai yang berbeda. Karakteristik unik ini menyiratkan cara yang berbeda dalam mendesain dan mengelola data untuk memanfaatkan kemampuan untuk menskalakan secara otomatis. Secara khusus, Datastore berbeda dari database relasional tradisional dalam hal penting berikut:
- Datastore dirancang untuk menskalakan set data yang sangat besar secara otomatis, sehingga performa aplikasi tetap tinggi saat traffic meningkat:
- Datastore menulis skala dengan mendistribusikan data secara otomatis sesuai kebutuhan.
- Datastore membaca skala karena satu-satunya kueri yang didukung adalah kueri yang performanya diskalakan dengan ukuran set hasil (bukan set data). Artinya, kueri yang set hasilnya berisi 100 entity memiliki performa yang sama, baik menelusuri lebih dari seratus entity maupun satu juta entity. Properti ini adalah alasan utama beberapa jenis kueri tidak didukung.
- Karena semua kueri dilayani oleh indeks yang dibuat sebelumnya, jenis kueri yang dapat dieksekusi lebih ketat daripada yang diizinkan pada database relasional dengan SQL. Secara khusus, Datastore tidak menyertakan dukungan untuk operasi join, pemfilteran ketidaksetaraan pada beberapa properti, atau pemfilteran data berdasarkan hasil subkueri.
- Tidak seperti database relasional yang menerapkan skema, Datastore tidak memiliki skema. Datastore tidak memerlukan entity dengan jenis yang sama agar dapat memiliki kumpulan properti yang konsisten (meskipun Anda dapat memilih untuk menerapkan persyaratan tersebut dalam kode aplikasi Anda sendiri).
Efektif untuk
Datastore sangat ideal untuk aplikasi yang mengandalkan data terstruktur yang sangat tersedia dalam skala besar. Anda dapat menggunakan Datastore untuk menyimpan dan membuat kueri semua jenis data berikut:
- Katalog produk yang menyediakan inventaris real-time dan detail produk untuk retailer.
- Profil pengguna yang memberikan pengalaman yang disesuaikan berdasarkan aktivitas dan preferensi sebelumnya dari pengguna.
- Transaksi berdasarkan properti ACID. Misalnya, mentransfer dana dari satu rekening bank ke rekening bank lainnya.
Opsi penyimpanan dan database lainnya
Datastore tidak ideal untuk setiap kasus penggunaan. Misalnya, Datastore bukanlah database relasional, dan bukan solusi yang efektif untuk data analisis.
Berikut adalah beberapa skenario umum yang mungkin perlu dipertimbangkan sebagai alternatif untuk Datastore:
- Jika Anda memerlukan database relasional dengan dukungan SQL penuh untuk sistem pemrosesan transaksi online (OLTP), pertimbangkan Cloud SQL.
- Jika Anda tidak memerlukan dukungan untuk transaksi ACID atau jika data Anda tidak terlalu terstruktur, pertimbangkan Bigtable.
- Jika Anda memerlukan kueri interaktif dalam sistem pemrosesan analisis online (OLAP), pertimbangkan BigQuery.
- Jika Anda perlu menyimpan blob besar yang tidak dapat diubah, seperti gambar atau film berukuran besar, pertimbangkan Cloud Storage.
Untuk informasi selengkapnya tentang opsi database lainnya, lihat ringkasan layanan database.
Langkah selanjutnya
- Pelajari cara menyimpan dan membuat kueri data menggunakan Konsol Google Cloud
- Pelajari model data Datastore
- Lihat praktik terbaik untuk Datastore