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

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

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

כדי לעקוב אחרי השימוש ב-Cloud Firestore, פותחים את Cloud Firestore הכרטיסייה 'שימוש' במסוף Firebase. אפשר להשתמש במרכז הבקרה כדי להעריך את השימוש שלכם בתקופות זמן שונות.

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

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

מכסה ללא תשלום

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

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

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

תוכנית ללא תשלום מכסה
נתונים מאוחסנים ‫1 GiB
קריאות של מסמכים ‫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. כדי ליצור שם שדה עם התו גרש הפוך, צריך להוסיף לפניו את התו לוכסן הפוך (\). כדי לפשט את התהליך, אפשר להעביר את נתיב השדה כאובייקט FieldPath (לדוגמה, ראו JavaScript FieldPath) במקום להשתמש בשמות שדות עם גרשיים.
הגודל המקסימלי של נתיב שדה ‫1,500 בייטים
הגודל המקסימלי של ערך בשדה ‫‎1 MiB - 89 bytes (1,048,487 bytes)‎
העומק המקסימלי של שדות במפה או במערך

20

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


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

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

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

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

אינדקסים

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

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

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

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

40,000

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

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

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

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

7.5 KiB

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

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

‎8 MiB

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

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

    ‫1,500 בייטים

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

    אורך חיים (TTL)

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

    הגדרה אחת ברמת השדה יכולה להכיל כמה הגדרות לאותו שדה. לדוגמה, פטור מאינדוקס של שדה יחיד ומדיניות 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. התקציבים לא יגבילו את השימוש, אבל אפשר להגדיר התראות כדי לקבל עדכון כשמתקרבים לעלויות המתוכננות לחודש או חורגים מהן.

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

    מידע נוסף על הגדרת תקציבים והתראות על תקציבים