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