Mode Native Firestore terdiri dari dua set operasi, yaitu operasi Firestore Core dan Firestore Pipeline.
Operasi Firestore Core menyediakan fungsi standar Pembuatan, Pembacaan, Pembaruan, dan Penghapusan (CRUD) dokumen, beserta dukungan bawaan untuk kueri pemrosesan real-time dan persistensi offline. Perbedaan operasional yang signifikan dalam edisi ini adalah indeks yang bersifat opsional dan tidak dibuat secara otomatis untuk setiap kolom. Hal ini memang memungkinkan kueri dijalankan tanpa konfigurasi indeks di awal, tetapi kueri yang tidak diindeks akan secara default memindai seluruh koleksi. Hal ini dapat menyebabkan peningkatan latensi dan biaya seiring bertambahnya ukuran set data.
Operasi Firestore Pipeline adalah fitur utama edisi Firestore Enterprise, yang dibuat di mesin kueri canggih untuk secara signifikan memperluas rentang kueri yang dapat dijalankan. Operasi Firestore Pipeline menggunakan sintaksis kueri yang fleksibel dan metode pengindeksan yang berbeda, dengan indeks yang bersifat opsional dan tidak dibuat secara otomatis, sehingga memungkinkan operasi pengambilan data lanjutan untuk aplikasi.
Fitur operasi Firestore Core
Operasi Core memungkinkan operasi CRUD standar dan kueri pemrosesan real-time. Namun, saat menggunakan operasi ini di edisi Enterprise, perilaku mendasar terkait pengindeksan dan penagihan akan berubah secara signifikan dibandingkan dengan di edisi Standard.
Fungsi dan Kontinuitas
Operasi Core masih dilengkapi sintaksis penggabungan metode yang sudah dikenal (misalnya,
.where(), .orderBy()) yang juga digunakan dalam edisi Standard. Operasi ini mendukung
kueri pemrosesan real-time dan persistensi offline untuk klien seluler maupun web. Sebaiknya
gunakan operasi ini untuk beban kerja transaksional standar,
pencarian sederhana, dan migrasi kode aplikasi yang sudah ada.
Pengindeksan Kustom
Tidak seperti edisi Standard, operasi Core di edisi Enterprise tidak otomatis membuat indeks kolom tunggal. Indeks bersifat opsional dan tidak diperlukan untuk menjalankan kueri. Jika indeks tertentu tidak ada, kueri akan melakukan pemindaian koleksi secara keseluruhan. Meskipun memungkinkan pembuatan prototipe yang cepat, kueri yang tidak terindeks mungkin akan berjalan lebih lambat dan memerlukan biaya lebih mahal seiring pertumbuhan set data. Developer harus membuat indeks secara manual untuk mengoptimalkan performa kueri dan mengurangi konsumsi Unit Baca.
Model Penagihan (Berbasis Unit)
Unit Baca dikenai biaya dalam porsi 4 KB, bukan per jumlah dokumen. Kueri tidak terindeks yang memindai koleksi besar akan menggunakan Unit Baca berdasarkan total byte yang dipindai di semua dokumen. Unit Tulis dikenai biaya dalam porsi 1 KB. Penulisan dokumen akan menggunakan unit untuk data serta unit tambahan untuk setiap entri indeks yang diperbarui. Tidak seperti di edisi Standard, yang menerapkan pengindeksan kolom tunggal otomatis, Anda kini dapat memilih kolom tertentu untuk diindeks guna mengoptimalkan biaya dan performa penulisan.
Fitur operasi Firestore Pipeline
Edisi Firestore Enterprise dengan operasi Pipeline menggunakan mesin kueri canggih yang menghilangkan banyak batasan yang ada pada edisi Firestore Standard. Operasi Firestore Pipeline menyediakan ratusan fitur kueri tambahan. Operasi Firestore Pipeline memiliki kemampuan berikut:
Sintaksis Composable Berbasis Tahap
Kueri Pipeline dibuat dengan menentukan serangkaian tahap berurutan yang dijalankan sesuai urutan. Hal ini memungkinkan operasi yang kompleks, seperti memfilter hasil agregasi, yang sebelumnya tidak dapat dilakukan.
Contoh berikut menunjukkan kueri pipeline yang menemukan jumlah ID produk unik yang dilihat dalam sebulan terakhir:
guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
return
}
let snapshot = try await db.pipeline()
.collection("productViews")
.where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
.aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
.execute()
Kemampuan yang Diperluas
Kueri Pipeline menghadirkan berbagai kemampuan baru, termasuk:
- Agregasi: Dukungan untuk fungsi agregasi baru (seperti
sum(...),min(...), dancount_distinct(...)) yang dikombinasikan dengan kolom pengelompokan arbitrer. - Pemfilteran Kompleks: Dukungan ratusan fungsi tambahan untuk mengekspresikan
pernyataan
where(...)yang kompleks secara arbitrer, termasukregex_match(...),add(...), danstr_contains(...), semuanya tanpa persyaratan indeks yang sulit. - Proyeksi/Pembacaan Parsial: Memungkinkan pengambilan sebagian dokumen dinamis menggunakan
select(...),remove_fields(...), dan banyak tahap manipulasi dokumen lainnya.
Untuk mempelajari lebih lanjut kemampuan ini, lihat Menjalankan kueri data dengan operasi Pipeline.
Dukungan Real-time dan Offline
Untuk memanfaatkan dukungan Real-time dan Offline, developer dapat menggunakan operasi Firestore Core di edisi Firestore Enterprise.
Integrasi Klien dan Alat
Edisi Enterprise menghadirkan fitur khusus untuk mengelola dan berinteraksi dengan Kueri Pipeline:
- Penjelasan dan profiling kueri: Anda dapat menggunakan hasil Query Explain untuk memahami jumlah unit baca atau tulis yang digunakan kueri dan menganalisis eksekusinya.
- Query Insights: Edisi Enterprise mendukung Query Insights yang membantu Anda menentukan tempat indeks dapat dibuat untuk meningkatkan performa dan efisiensi biaya dengan memberikan visibilitas terkait kueri terpopuler yang dijalankan di database Anda beserta karakteristik performa kueri tersebut.
- Jenis indeks baru: Anda dapat membuat indeks khusus untuk edisi Enterprise, termasuk jenis indeks seperti indeks sparse, non-sparse, dan unik. Fitur ini juga mendukung pembuatan dan pengeditan indeks penelusuran vektor untuk database Enterprise.
Perbedaan antara Firestore Standard dan Firestore Enterprise
Perbedaan operasional utama antara operasi Core dan Pipeline terletak pada pengelolaan pengindeksan, yang secara langsung memengaruhi performa dan biaya.
| Firestore Standard - Operasi Core | Firestore Enterprise - Operasi Core dan Pipeline | |
| Persyaratan pengindeksan | Indeks diperlukan untuk kueri.
Indeks untuk setiap kolom dibuat secara otomatis, sementara kueri yang lebih kompleks mengandalkan indeks komposit atau indeks kelompok koleksi yang harus dikonfigurasi secara manual. |
Indeks tidak diperlukan, sehingga bersifat opsional untuk kueri.
Anda dapat menentukan indeks sesuai kebutuhan. Edisi Enterprise juga mendukung berbagai jenis indeks yang lebih luas, termasuk indeks unik dan sparse/non-sparse. |
| Performa | Kueri terindeks: Performa dan biaya disesuaikan dengan ukuran set hasil. |
Kueri tidak terindeks: Performa dan biaya disesuaikan dengan ukuran set data. Kueri terindeks: Performa dan biaya disesuaikan dengan ukuran set hasil. Sebaiknya gunakan alat Query Explain dan Query Insights untuk membuat indeks serta meningkatkan performa dan efisiensi biaya kueri Anda. |
| Implikasi Biaya Penyimpanan | Anda akan dikenai overhead penyimpanan dari indeks otomatis dan indeks komposit. | Anda akan menghemat biaya penyimpanan karena indeks tidak dibuat secara otomatis untuk setiap kolom. |
| Dasar Biaya | Dikenai biaya per operasi baca, tulis, dan hapus dokumen. | Dikenai biaya per Unit Baca (porsi 4 KB) dan Unit Tulis (porsi 1 KB). Penulisan entri indeks akan memakan kuota Unit Tulis.
Pelajari harga baru dengan beberapa contoh. |
| Aturan Keamanan | Aturan Keamanan melindungi koleksi dengan memverifikasi izin baca/tulis. | Aturan Keamanan melindungi koleksi dengan memverifikasi izin baca/tulis. Pelajari cara membuat model data untuk mendukung kueri pipeline dalam panduan Model Data. |