बल्क डेटा लोड करने के सबसे सही तरीके

Cloud Firestore में एक साथ कई फ़ाइलें अपलोड करना, mongoimport और mongorestore जैसे टूल की मदद से.

Cloud Firestore डिस्ट्रिब्यूटेड सिस्टम है. यह आपके कारोबार की ज़रूरतों के हिसाब से, अपने-आप स्केल हो जाता है. Cloud Firestore सिस्टम पर लोड के हिसाब से आपके डेटा को डाइनैमिक तरीके से बांटता और जोड़ता है.

लोड के हिसाब से डेटा को बांटने की प्रोसेस, बिना किसी प्री-कॉन्फ़िगरेशन के अपने-आप होती है. Cloud Firestore के लोड के हिसाब से डेटा को बांटने वाले सिस्टम की कुछ अहम और खास विशेषताएं हैं. डेटा को मॉडल करते समय, इन विशेषताओं को ध्यान में रखना ज़रूरी है. ये विशेषताएं, दस्तावेज़ों के अन्य डेटाबेस की तुलना में अलग हैं.

Cloud Firestore के डिस्ट्रिब्यूटेड नेचर की वजह से, डिज़ाइन से जुड़े कुछ विकल्पों में बदलाव करना पड़ सकता है . खास तौर पर, उन वर्कलोड के लिए जिन्हें ऐसे डेटाबेस के लिए ऑप्टिमाइज़ किया गया था जहां प्राइमरी रेप्लिका, राइट थ्रूपुट के लिए बॉटलनेक है.

सबसे अच्छे तरीके

सिंगल थ्रेड वाले क्लाइंट में, बड़ी मात्रा में डेटा प्रोसेस करने वाले वर्कलोड, बॉटलनेक बना सकते हैं. क्लाइंट, एक साथ कई फ़ाइलें अपलोड करने के लिए सिंगल थ्रेडिंग का इस्तेमाल कर सकते हैं. ऐसा इसलिए, क्योंकि क्लाइंट और सर्वर का थ्रूपुट एक जैसा होता है. A Cloud Firestore डेटाबेस, ज़्यादा पैरललिज़म को हैंडल कर सकता है. हालांकि, इसके लिए आपको क्लाइंट को एक साथ कई अनुरोध भेजने के लिए कॉन्फ़िगर करना होगा.

mongoimport

mongoimport टूल का इस्तेमाल करने पर, डिफ़ॉल्ट रूप से अनुरोध क्रम से किए जाते हैं. Cloud Firestore में कॉन्टेंट लोड होने में लगने वाला समय बेहतर बनाने के लिए, --numInsertionWorkers फ़्लैग की मदद से वर्कर की संख्या सेट करें. क्लाइंट के साइज़ के हिसाब से, सही सेटिंग के लिए ट्यूनिंग की ज़रूरत पड़ सकती है.

mongorestore

mongorestore टूल का इस्तेमाल करते समय, कुछ समय के लिए होने वाली गड़बड़ियों से निपटने की क्षमता बेहतर बनाने के लिए, अपनी कनेक्शन स्ट्रिंग से retryWrites=false पैरामीटर हटाएं.

Cloud Firestore में लोड होने का समय बेहतर बनाने के लिए, आप फ़्लैग--numInsertionWorkersPerCollection की मदद से हर कलेक्शन के लिए इंसर्शन वर्कर की संख्या बढ़ा सकते हैं. साथ ही, --numParallelCollections फ़्लैग की मदद से, एक साथ कई कलेक्शन की संख्या भी बढ़ा सकते हैं. क्लाइंट के साइज़ के हिसाब से, सही सेटिंग के लिए ट्यूनिंग की ज़रूरत पड़ सकती है.

एसिंक प्रोग्रामिंग

MongoDB के साथ काम करने वाली कार्रवाइयों का इस्तेमाल करके, अपना सॉफ़्टवेयर डेवलप करते समय, इन तरीकों से पैरललिज़म को बेहतर बनाया जा सकता है:

  • एसिंक फ़्रेमवर्क: एसिंक फ़्रेमवर्क का इस्तेमाल करके, अनुरोधों को एक साथ प्रोसेस किया जा सकता है और उनके जवाब दिए जा सकते हैं. अपने डेटाबेस पर कॉल करते समय, जटिल पूलिंग या क्यूइंग डेवलप करने की ज़रूरत नहीं होती. अनुरोध के हर फ़्लो के लिए, अलग-अलग कनेक्शन का इस्तेमाल किया जा सकता है. साथ ही, डेटाबेस पर कॉल एक साथ किए जा सकते हैं.
  • पैरललाइज़्ड कंप्यूट ऑफ़रिंग का इस्तेमाल करना: Cloud Run जैसी सेवाओं का इस्तेमाल करके, आपका सिस्टम डेटा प्रोसेस करने के लिए ज़रूरी कंप्यूटेशन वर्कर की संख्या को स्केल कर सकता है.

कुछ समय के लिए होने वाली गड़बड़ियां

Cloud Firestore जैसे बड़े डिस्ट्रिब्यूटेड सिस्टम के साथ काम करते समय, आपको कुछ समय के लिए होने वाली गड़बड़ियां आ सकती हैं. जैसे, नेटवर्क में गड़बड़ी या किसी दस्तावेज़ पर विवाद.

बड़ी मात्रा में जानकारी एक साथ लोड करते समय, यह ज़रूरी है कि फ़ेल हुए राइट के लिए फिर से कोशिश करने की रणनीति अपनाई जाए. ऐसा करने से, एक साथ कई फ़ाइलें अपलोड करने की बड़ी कार्रवाई फ़ेल नहीं होती.