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