Praktik terbaik untuk pemuatan data massal
Halaman ini menjelaskan praktik terbaik saat memuat data secara massal ke Firestore dengan kompatibilitas MongoDB menggunakan alat sepertimongoimport
.
Firestore adalah sistem yang sangat terdistribusi yang menawarkan penskalaan otomatis untuk memenuhi kebutuhan bisnis Anda. Firestore secara dinamis membagi dan menggabungkan data Anda berdasarkan beban yang diterima oleh sistem.
Pemisahan berbasis beban terjadi secara otomatis tanpa memerlukan pra-konfigurasi. Sistem pemisahan berbasis beban Firestore memiliki beberapa karakteristik unik yang penting dibandingkan dengan database dokumen lainnya yang penting untuk diingat saat Anda memodelkan data.
Sifat terdistribusi Firestore dapat memerlukan perubahan beberapa pilihan desain, terutama untuk workload yang dioptimalkan untuk database yang replika utamanya menjadi hambatan untuk throughput tulis.
Praktik Terbaik
Beban kerja yang memproses data dalam jumlah besar di klien berutas tunggal dapat menyebabkan hambatan. Klien mungkin dapat menggunakan threading tunggal untuk memuat data secara massal, karena throughput klien dan server cocok. Database Firestore dapat menangani paralelisme yang jauh lebih besar, tetapi Anda harus mengonfigurasi klien untuk mengirim permintaan secara paralel.
mongoimport
Saat menggunakan alat mongoimport
, permintaan dibuat secara berurutan secara default.
Untuk meningkatkan waktu pemuatan ke Firestore,
tetapkan jumlah pekerja dengan tanda --numInsertionWorkers
.
Setelan yang benar mungkin memerlukan penyesuaian berdasarkan
ukuran klien Anda, tetapi umumnya kami menyarankan untuk memulai dengan setidaknya 32
.
pemrograman asinkron
Saat mengembangkan software Anda sendiri menggunakan API yang kompatibel dengan MongoDB, Anda dapat meningkatkan paralelisme dengan cara berikut:
- Framework asinkron: menggunakan framework asinkron memungkinkan Anda memproses dan merespons permintaan secara paralel. Anda tidak perlu mengembangkan penggabungan atau antrean yang kompleks saat melakukan panggilan ke database. Setiap alur permintaan dapat menggunakan koneksi independen dan melakukan panggilan database secara paralel.
- Gunakan penawaran komputasi paralel: dengan menggunakan layanan seperti Cloud Run, sistem Anda dapat menskalakan jumlah pekerja komputasi yang diperlukan untuk memproses data.
Kegagalan Sementara
Saat bekerja dengan sistem terdistribusi besar seperti Firestore, Anda mungkin mengalami kegagalan sementara seperti gangguan jaringan atau pertentangan pada dokumen.
Saat memuat sejumlah besar informasi secara massal, penting untuk mempertahankan strategi percobaan ulang untuk penulisan yang gagal tanpa membuat operasi pemuatan massal yang lebih besar gagal.