שימוש ומגבלות

במדריך הזה מוסברות המגבלות של Cloud Firestore, ובמאמר התמחור של Cloud Firestore מוסברות העלויות של Cloud Firestore, כולל דברים שצריך לשים לב אליהם.

מעקב אחרי השימוש

כדי לעקוב אחרי השימוש ב-Cloud Firestore במסוף Firebase, עוברים אל הכרטיסייה Databases & Storage ‏ > Firestore ‏ > Usage. אתם יכולים להשתמש במרכז הבקרה הזה כדי לבדוק את השימוש שלכם בתקופות שונות.

שימוש מפורט במסוף Google Cloud

כשיוצרים פרויקט ב-Firebase, יוצרים גם פרויקט ב-Google Cloud. בדפים Cloud Firestore API Quotas ו-App Engine Quotas במסוף Google Cloud אפשר לעקוב אחרי השימוש ב-Cloud Firestore ומידע על המכסות.

מכסה חינמית

ב-Cloud Firestore יש מכסה בחינם שמאפשרת לכם להתחיל בלי לשלם. אם אתם צריכים מכסה גדולה יותר, אתם צריכים להפעיל את החיוב בפרויקט Google Cloud.

המכסות חלות על בסיס יומי ומתאפסות בסביבות חצות לפי שעון החוף המערבי.

בטבלה הבאה מפורטות המכסות החינמיות:

תוכנית בחינם מכסה
נתונים מאוחסנים ‫1GiB
קריאות של מסמכים ‫50,000 ביום
כתיבת מסמכים ‫20,000 ביום
מחיקות של מסמכים ‫20,000 ביום
העברת נתונים יוצאת ‫10GiB לחודש

הפעולות והתכונות הבאות לא כוללות שימוש בחינם. כדי להשתמש בתכונות האלה, צריך להפעיל את החיוב:

  • מחיקות TTL
  • נתוני PITR
  • גיבוי הנתונים
  • פעולות שחזור
  • פעולות שכפול

למידע נוסף על החיוב של התכונות האלה, ראו תמחור האחסון.

מגבלות רגילות

בטבלאות הבאות מפורטות המגבלות שחלות על Cloud Firestore. אלה מגבלות קשיחות, אלא אם צוין אחרת.

מסדי נתונים

מגבלה פרטים
מספר מסדי הנתונים המקסימלי בכל פרויקט

100

כדי להגדיל את המגבלה, אפשר לפנות לתמיכה.

מספר מקסימלי של מסדי נתונים עם מפתחות הצפנה בניהול הלקוח (CMEK) לכל פרויקט

0

כברירת מחדל, המכסה היא 0 כי התכונה הזו נמצאת ברשימת היתרים. כדי לבקש להגדיל את המכסה, צריך למלא את טופס הבקשה לגישה ל-CMEK.

אוספים, מסמכים ושדות

מגבלה פרטים
אילוצים על מזהי אוספים
  • חייב להכיל תווי UTF-8 תקינים
  • האורך המקסימלי הוא 1,500 בייטים
  • לא יכול להכיל קו נטוי (/)
  • לא יכול להכיל רק נקודה אחת (.) או שתי נקודות (..)
  • לא ניתן להתאים לביטוי הרגולרי __.*__
עומק מקסימלי של אוספי משנה 100
מגבלות על מזהי מסמכים
  • חייב להכיל תווי UTF-8 תקינים
  • האורך המקסימלי הוא 1,500 בייטים
  • לא יכול להכיל קו נטוי (/)
  • לא יכול להכיל רק נקודה אחת (.) או שתי נקודות (..)
  • לא ניתן להתאים לביטוי הרגולרי __.*__
  • אם מייבאים ישויות של Datastore למסד נתונים של Firestore, מזהי הישויות המספריים נחשפים בתור __id[0-9]+__
הגודל המקסימלי של שם מסמך ‎6 KiB
הגודל המקסימלי של מסמך ‫1MiB‏ (1,048,576 בייטים)
מגבלות על שמות של שדות
  • חייב להכיל תווי UTF-8 תקינים
  • לא ניתן להתאים לביטוי הרגולרי __.*__
הגודל המקסימלי של שם שדה ‫1,500 בייטים
אילוצים על נתיבי שדות
  • צריך להפריד בין שמות השדות באמצעות נקודה אחת (.)
  • אפשר להעביר את הפרמטר כמחרוזת של פלחים שמופרדים בנקודות (.), כשכל פלח הוא שם שדה פשוט או שם שדה במירכאות (מוגדר בהמשך).
שם שדה פשוט הוא שם שבו כל התנאים הבאים מתקיימים:
  • מכיל רק את התווים a-z, A-Z, 0-9 וקו תחתון (_)
  • לא מתחיל ב-0-9
שם שדה במירכאות מתחיל ומסתיים בתו הגרש ההפוך (`). לדוגמה, foo.`x&y` מתייחס לשדה x&y שמוטמע בשדה foo. כדי ליצור שם שדה עם תו הגרש ההפוך, צריך להוסיף תו בריחה (escape) של לוכסן הפוך (\). כדי להימנע משמות שדות במירכאות, אפשר להעביר את נתיב השדה כאובייקט FieldPath (לדוגמה, ראו JavaScript FieldPath).
הגודל המקסימלי של נתיב שדה ‫1,500 בייטים
הגודל המקסימלי של ערך שדה ‫1MiB פחות 89 בייטים (1,048,487 בייטים)
עומק מקסימלי של שדות במפה או במערך

20

שדות של מפות ומערכים מוסיפים רמה אחת לעומק הכולל של אובייקט. לדוגמה, לאובייקט הבא יש עומק כולל של שלוש רמות:


{
  nested_map: {         #depth 1
    nested_array: [     #depth 2
      {
        foo: "bar"      #depth 3
      }
    ]
  }
}
      

כתיבה ועסקאות

בנוסף למגבלות האלה, כדאי לעיין בשיטות המומלצות לתכנון בקנה מידה רחב.

מגבלה פרטים
גודל מקסימלי של בקשת API ‎10 MiB
מגבלת הזמן לעסקה ‫270 שניות, עם זמן תפוגה של 60 שניות ללא פעילות
מספר הטרנספורמציות המקסימלי שאפשר לבצע בשדות של מסמך אחד בפעולת Commit או בטרנזקציה 500

אינדקסים

המגבלות הבאות חלות על אינדקסים של שדה יחיד ועל אינדקסים מורכבים:

מגבלה פרטים
המספר המקסימלי של אינדקסים מורכבים במסד נתונים
מספר מקסימלי של הגדרות שדה יחיד למסד נתונים
  • ‫200 אם לא הפעלתם את החיוב בפרויקט Google Cloud.

    אם אתם צריכים להגדיל את המכסה, אתם צריכים להפעיל את החיוב בפרויקט Google Cloud.

  • ‫1,000 כשמפעילים את החיוב בפרויקט Google Cloud.

הגדרה אחת ברמת השדה יכולה להכיל כמה הגדרות לאותו שדה. לדוגמה, החרגה של הוספה לאינדקס של שדה יחיד ומדיניות TTL באותו שדה נחשבות כהגדרה אחת של שדה במגבלה.

מספר הערכים המקסימלי באינדקס לכל מסמך

40,000

מספר הרשומות באינדקס הוא הסכום של הרכיבים הבאים במסמך:

  • מספר הרשומות באינדקס של שדה יחיד
  • מספר הרשומות באינדקס המורכב

כדי לראות איך Cloud Firestore הופך מסמך וקבוצת אינדקסים לרשומות באינדקס, אפשר לעיין בדוגמה הזו לספירת רשומות באינדקס.

מספר השדות המקסימלי באינדקס מורכב 100
הגודל המקסימלי של רשומה באינדקס

7.5 KiB

כדי לראות איך Cloud Firestore מחשב את גודל הרשומה באינדקס, קראו את המאמר גודל הרשומה באינדקס.

הסכום המקסימלי של הגדלים של רשומות האינדקס של מסמך

8 MiB

הגודל הכולל הוא הסכום של הערכים הבאים במסמך:

  • סכום הגודל של רשומות האינדקס של שדה יחיד במסמך
  • סכום הגודל של רשומות האינדקס המורכב של מסמך
  • הגודל המקסימלי של ערך שדה שנוסף לאינדקס

    ‫1,500 בייטים

    ערכי שדות שגדולים מ-1,500 בייטים נחתכים. שאילתות שכוללות ערכי שדות חתוכים עשויות להחזיר תוצאות לא עקביות.

    אורך חיים (TTL)

    מגבלה פרטים
    מספר מקסימלי של הגדרות שדה יחיד למסד נתונים
    • ‫200 אם לא הפעלתם את החיוב בפרויקט Google Cloud.

      אם אתם צריכים להגדיל את המכסה, אתם צריכים להפעיל את החיוב בפרויקט Google Cloud.

    • ‫1,000 כשמפעילים את החיוב בפרויקט Google Cloud.

    הגדרה אחת ברמת השדה יכולה להכיל כמה הגדרות לאותו שדה. לדוגמה, החרגה של הוספה לאינדקס של שדה יחיד ומדיניות TTL באותו שדה נחשבות כהגדרה אחת של שדה במגבלה.

    ייצוא/ייבוא

    המגבלות הבאות חלות על פעולות ייבוא וייצוא מנוהלות:

    מגבלה פרטים
    המספר המקסימלי של בקשות ייצוא וייבוא שמותר לשלוח בכל דקה בפרויקט 20
    המספר המקסימלי של פעולות ייצוא וייבוא בו-זמניות 50
    המספר המקסימלי של מסננים לפי מזהה אוסף לבקשות ייצוא וייבוא 100

    כללי אבטחה

    מגבלה פרטים
    מספר הקריאות המקסימלי ל-exists(), ל-get() ול-getAfter() בכל בקשה
    • ‫10 לבקשות של מסמך יחיד ולבקשות של שאילתות.
    • ‫20 לפעולות קריאה של כמה מסמכים, טרנזקציות וכתיבה באצווה. המגבלה הקודמת של 10 חלה גם על כל פעולה.

      לדוגמה, נניח שאתם יוצרים בקשת כתיבה באצווה עם 3 פעולות כתיבה, וכללי האבטחה שלכם משתמשים ב-2 קריאות גישה למסמכים כדי לאמת כל כתיבה. במקרה הזה, כל פעולת כתיבה משתמשת ב-2 מתוך 10 קריאות הגישה שלה, ובקשת הכתיבה באצווה משתמשת ב-6 מתוך 20 קריאות הגישה שלה.

    אם חורגים מאחת מהמגבלות, מתקבלת הודעת שגיאה על דחיית הרשאה.

    יכול להיות שחלק מהקריאות לגישה למסמכים נשמרות במטמון, וקריאות שנשמרות במטמון לא נספרות במגבלות.

    עומק מקסימלי של הצהרת match מקוננת 10
    אורך הנתיב המקסימלי, בקטעי נתיב, שמותר בתוך קבוצה של הצהרות match מקוננות 100
    המספר המקסימלי של משתנים לתיעוד נתיב שמותר להגדיר בקבוצה של הצהרות match בתצורה מקוננת 20
    עומק מקסימלי של קריאה להפעלת פונקציה 20
    מספר הארגומנטים המקסימלי של פונקציה 7
    מספר מקסימלי של קישורי משתנים מסוג let לכל פונקציה 10
    המספר המקסימלי של קריאות רקורסיביות או מחזוריות להפעלת פונקציות ‫0 (לא מותר)
    המספר המקסימלי של ביטויים שמוערכים בכל בקשה 1,000
    הגודל המקסימלי של קבוצת כללים יש שתי מגבלות על הגודל של קבוצות כללים:
    • מגבלה של 256KB על גודל מקור הטקסט של קבוצת הכללים שפורסמה ממסוף Firebase או מה-CLI באמצעות firebase deploy.
    • מגבלה של 250KB על גודל קובץ הכללים המקומפל שנוצר כש-Firebase מעבדת את המקור ומפעילה אותו בקצה העורפי.

    ניהול ההוצאות

    כדי להימנע מחיובים לא צפויים בחשבון, כדאי להגדיר תקציבים חודשיים והתראות.

    הגדרת תקציב חודשי

    כדי לעקוב אחרי העלויות של Cloud Firestore, אתם יכולים ליצור תקציב חודשי במסוף Google Cloud. התקציבים לא מגבילים את השימוש, אבל אתם יכולים להגדיר התראות שיודיעו לכם כשאתם מתקרבים לעלויות המתוכננות לחודש או חורגים מהן.

    כדי להגדיר תקציב, נכנסים לקטע Billing במסוף Google Cloud ויוצרים תקציב לחשבון Cloud Billing. אתם יכולים להשתמש בהגדרות ברירת המחדל של ההתראות, או לשנות אותן כדי לקבל התראות באחוזים שונים של התקציב החודשי.

    איך מגדירים תקציבים והתראות לגבי תקציבים