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