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

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

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

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

תיעוד מפורט של השימוש במסוף Google Cloud

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

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

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

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

רק מסד הנתונים (default) עומד בדרישות להקצאת המכסה בחינם.

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

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

  • שימוש במסדי נתונים מוגדרים (לא ברירת המחדל)
  • מחיקה של TTL
  • נתוני PITR
  • גיבוי נתונים
  • פעולות שחזור

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

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

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

מסדי נתונים

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

100

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

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

מגבלה פרטים
מגבלות על מזהי אוספים
  • צריכים להיות תווי 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. כדי ליצור שם שדה עם התו backtick, צריך להשתמש בתו backslash (\) כדי להימנע מהצגת התו backtick. כדי להימנע משימוש במירכאות בשמות שדות, אפשר להעביר את נתיב השדה כאובייקט 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

מדדים

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

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

הגדרה אחת ברמת השדה יכולה להכיל כמה הגדרות לאותו שדה. לדוגמה, החרגה להוספה של שדה יחיד לאינדקס ומדיניות 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 (not permitted)
    המספר המקסימלי של ביטויים שאפשר להעריך בכל בקשה 1,000
    הגודל המקסימלי של קבוצת כללים קבוצות הכללים חייבות לעמוד בשני מגבלות גודל:
    • מגבלה של 256KB על גודל מקור הטקסט של כללי המדיניות שפורסם מהמסוף Firebase או מ-CLI באמצעות firebase deploy.
    • מגבלה של 250KB על גודל קבוצת הכללים המתומצתת שנוצרת כש-Firebase מעבד את המקור ועושה אותו פעיל בקצה העורפי.

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

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

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

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

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

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