שיטות מומלצות לטעינת נתונים בכמות גדולה
טעינת נתונים בכמות גדולה ל-Firestore עם תאימות ל-MongoDB באמצעות כלים כמו mongoimport ו-mongorestore.
Firestore היא מערכת מבוזרת מאוד שמציעה התאמה אוטומטית לעומס (scaling) כדי לענות על הצרכים של העסק שלכם. Firestore מפצלת ומשלבת את הנתונים באופן דינמי על סמך העומס שהמערכת מקבלת.
הפיצול לפי עומס מתבצע באופן אוטומטי ללא צורך בהגדרה מראש. למערכת הפיצול מבוסס העומס של Firestore יש כמה מאפיינים חשובים וייחודיים בהשוואה למסדי נתונים אחרים של מסמכים, וכדאי לזכור אותם כשמגדירים את מודל הנתונים.
האופי המבוזר של Firestore עשוי לחייב שינוי של כמה החלטות עיצוביות, במיוחד עבור עומסי עבודה שעברו אופטימיזציה למסדי נתונים שבהם העותק המשוכפל הראשי הוא צוואר הבקבוק של קצב העברת הנתונים לכתיבה.
שיטות מומלצות
עומסי עבודה שמעבדים כמויות גדולות של נתונים בלקוח עם שרשור יחיד יכולים ליצור צוואר בקבוק. יכול להיות שלקוחות יוכלו להשתמש בשרשור יחיד כדי לטעון נתונים בכמות גדולה, כי קצב העברת הנתונים של הלקוח והשרת דומים. מסד נתונים של Firestore יכול להתמודד עם הרבה יותר מקביליות, אבל כדי לעשות את זה צריך להגדיר את הלקוחות כך שישלחו בקשות במקביל.
mongoimport
כשמשתמשים בכלי mongoimport, הבקשות מבוצעות ברצף כברירת מחדל. כדי לשפר את זמן הטעינה ל-Firestore, מגדירים את מספר העובדים באמצעות הדגל --numInsertionWorkers. יכול להיות שתצטרכו לשנות את ההגדרה הנכונה בהתאם לגודל של הלקוח.
mongorestore
כשמשתמשים בכלי mongorestore, צריך להסיר את הפרמטר retryWrites=false ממחרוזת החיבור כדי לשפר את העמידות לכשלים זמניים.
כדי לשפר את זמן הטעינה ל-Firestore, אפשר גם להגדיל את מספר העובדים להוספה לכל אוסף באמצעות הדגל --numInsertionWorkersPerCollection, ואת מספר האוספים המקבילים באמצעות הדגל --numParallelCollections. יכול להיות שתצטרכו לשנות את ההגדרות בהתאם לגודל הלקוח.
תכנות אסינכרוני
כשמפתחים תוכנה משלכם באמצעות פעולות שתואמות ל-MongoDB, אפשר לשפר את ההרצה המקבילית בדרכים הבאות:
- מסגרות אסינכרוניות: שימוש במסגרות אסינכרוניות מאפשר לעבד בקשות ולהגיב להן במקביל. כשמבצעים קריאות למסד הנתונים, אין צורך לפתח מאגרי חיבורים או תורים מורכבים. כל תהליך בקשה יכול להשתמש בחיבורים עצמאיים ולבצע את הקריאות למסד הנתונים במקביל.
- שימוש בשירותי מחשוב מקביליים: באמצעות שירותים כמו Cloud Run, המערכת יכולה להגדיל את מספר העובדים שנדרשים לעיבוד נתונים.
כשלים זמניים
כשעובדים עם מערכת מבוזרת גדולה כמו Firestore, יכול להיות שתיתקלו בכשלים זמניים כמו שיבושים ברשת או התנגשות במסמך.
כשמעלים כמויות גדולות של מידע, חשוב לשמור על אסטרטגיית ניסיון חוזר לכתיבות שנכשלו, בלי שהפעולה הגדולה יותר של העלאה בכמות גדולה תיכשל.