Praktik terbaik untuk pemuatan data secara massal
memuat data secara massal ke Firestore dengan kompatibilitas MongoDB menggunakan alat seperti mongoimport dan
mongorestore.
Firestore adalah sistem yang sangat terdistribusi yang menawarkan penskalaan otomatis untuk memenuhi kebutuhan bisnis Anda. Firestore secara dinamis memisahkan dan menggabungkan data Anda berdasarkan beban yang diterima oleh sistem.
Pemisahan berbasis beban terjadi secara otomatis tanpa memerlukan prakonfigurasi. Sistem pemisahan berbasis beban Firestore memiliki beberapa karakteristik penting dan unik dibandingkan dengan database dokumen lain yang penting untuk diingat saat Anda memodelkan data.
Sifat Firestore yang terdistribusi dapat memerlukan perubahan beberapa pilihan desain, khususnya untuk beban kerja yang dioptimalkan untuk database yang replika utamanya menjadi bottleneck untuk throughput penulisan.
Praktik Terbaik
Beban kerja yang memproses data dalam jumlah besar di klien dengan thread tunggal dapat menyebabkan bottleneck. 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 berurutan secara default. Untuk
meningkatkan waktu pemuatan ke Firestore, tetapkan jumlah worker dengan
tanda --numInsertionWorkers. Setelan yang benar mungkin memerlukan penyesuaian berdasarkan
ukuran klien Anda.
mongorestore
Saat menggunakan alat mongorestore, hapus parameter retryWrites=false
dari string koneksi Anda untuk meningkatkan ketahanan terhadap kegagalan
sementara.
Untuk meningkatkan waktu pemuatan ke Firestore, Anda juga dapat meningkatkan jumlah pekerja penyisipan per koleksi dengan tanda --numInsertionWorkersPerCollection dan jumlah koleksi paralel dengan tanda --numParallelCollections. Setelan yang benar mungkin memerlukan penyesuaian berdasarkan ukuran klien Anda.
pemrograman asinkron
Saat mengembangkan software Anda sendiri menggunakan operasi 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 worker komputasi yang diperlukan untuk memproses data.
Kegagalan Sementara
Saat menangani 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 menggagalkan operasi pemuatan massal yang lebih besar.