במסמך הזה מפורטים פרטי התמחור של Cloud Firestore.
אם אתם משלמים במטבע שאינו דולר ארה"ב, יחולו המחירים הרשומים במטבע שלכם במק"טים של Cloud Platform.
סקירה כללית על תמחור
כשמשתמשים ב-Cloud Firestore, מחויבים על הפעולות הבאות:
- מספר המסמכים שקראתם, כתבתם ומחקתם.
- מספר רשומות האינדקס שנקראו כדי לספק תשובה לשאילתה. פרטים נוספים על קריאות אינדקס
- כמות האחסון שבה נעשה שימוש במסד הנתונים, כולל תקורה של מטא-נתונים ואינדקסים.
- כמות רוחב הפס ברשת שבה אתם משתמשים.
השימוש בנפח האחסון וברוחב הפס מחושב בגיביבייט (GiB), כאשר 1 GiB = 230 bytes. כל החיובים מצטברים מדי יום.
בקטעים הבאים מפורט איך מתבצע החיוב על השימוש ב-Cloud Firestore.
מכסה ללא תשלום
Cloud Firestore מציע נפח אחסון חינמי שמאפשר לכם להתחיל לעבוד ללא עלות. אם אתם צריכים מכסה גדולה יותר, אתם צריכים להפעיל את החיוב בפרויקט Google Cloud.
המכסות חלות מדי יום ומתאפסות בסביבות חצות לפי שעון החוף המערבי.
בטבלה הבאה מפורטים מכסות השימוש בחינם:
תוכנית ללא תשלום | מכסה |
---|---|
נתונים מאוחסנים | 1 GiB |
קריאות של מסמכים | 50,000 ביום |
כתיבה במסמך | 20,000 ביום |
מחיקות של מסמכים | 20,000 ביום |
העברת נתונים יוצאת | 10GiB לחודש |
הפעולות והתכונות הבאות לא כוללות שימוש בחינם. כדי להשתמש בתכונות האלה, צריך להפעיל את החיוב:
- מחיקות TTL
- נתוני PITR
- גיבוי נתונים
- שחזור פעולות
- פעולות שכפול
מידע נוסף על החיוב של התכונות האלה זמין במאמר בנושא תמחור אחסון.
תמחור לפי מיקום
כדי לראות את המחירים של קריאות, כתיבות, מחיקות ואחסון בכל מיקום של Cloud Firestore, אפשר לעיין בתמחור של Google Cloud.
אם אתם משלמים במטבע שאינו דולר ארה"ב, יחולו המחירים הרשומים במטבע שלכם במק"טים של Cloud Platform.
המיכסה ללא תשלום חלה רק על מסד נתונים אחד לכל פרויקט
בכל פרויקט יכול להיות רק מסד נתונים אחד שעומד בדרישות של המכסה ללא תשלום.
כדי ליצור מסדי נתונים נוספים, צריך לשדרג את תוכנית החיוב של הפרויקט.
מסד הנתונים הראשון שיוצרים (לא משנה מה המזהה שלו) נכלל במכסת השימוש החינמית. אם תמחקו את מסד הנתונים הזה, מסד הנתונים הבא שתצרו יהיה מסד הנתונים החדש שעומד בדרישות לשימוש במכסת הנפח בחינם.
יצירה או מחיקה של מסדי נתונים לא כרוכות בעלות נוספת. כל שאילתת נתונים מאותו הרגע תחויב לפי השימוש במסדי הנתונים האלה.
קריאה, כתיבה ומחיקה
אתם מחויבים על מסמכים ורשומות באינדקס שנקראים כדי לספק תשובה לשאילתה. תחויבו על כל פעולת כתיבה ומחיקה של מסמך שתבצעו.
החיובים על פעולות כתיבה ומחיקה הם פשוטים. בפעולות כתיבה, כל פעולה של set
או update
נספרת כפעולת כתיבה אחת.
יש כמה ניואנסים שחשוב לזכור לגבי חיובים על פעולות קריאה. בקטעים הבאים מוסברות הניואנסים האלה בפירוט.
קריאות של רשומות באינדקס
אתם מחויבים בפעולת קריאה אחת לכל קבוצה של עד 1,000 רשומות אינדקס שנקראות על ידי שאילתה, למעט במקרים הבאים:
במקרה של שאילתות חיפוש של וקטורים של K השכנים הקרובים ביותר, תחויבו על פעולת קריאה אחת לכל אצווה של עד 100 רשומות אינדקס של וקטורים של kNN שנקראות על ידי השאילתה.
לדוגמה, אם שאילתת החיפוש הבאה של וקטורים עם
limit: 5
מחזירה 5 מסמכים וקוראת 1,550 רשומות של אינדקס וקטורים של kNN, תחויבו ב-5 פעולות קריאה של המסמכים שהוחזרו וב-16 פעולות קריאה של רשומות האינדקס:// Requires single-field vector index const vectorQuery: VectorQuery = db.collection('cities').findNearest('embedding_field', FieldValue.vector([3.0, 1.0, 2.0]), { limit: 5, distanceMeasure: 'EUCLIDEAN' });
אין חיוב על שאילתות שיש בהן עד שדה טווח אחד, על רשומות אינדקס שנקראות.
לדוגמה, השאילתה הבאה מכילה שדה שוויון אחד (
age
) ושדה טווח אחד (start_date
), ולא יחויב עליה תשלום על רשומות אינדקס שנקראו:db.collection("employees").whereEqualTo("age", 35) .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))
השאילתה הבאה מכילה שני שדות של טווחים (
age
ו-start_date
) והחיוב עליה הוא על קריאות של רשומות באינדקס:db.collection("employees").whereGreaterThanOrEqualTo("age", 35) .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))
שדה שמופיע בסעיף order by נחשב לשדה טווח אם יש לפחות עוד שדה טווח אחד בשאילתה. לכן השאילתה הבאה מכילה שני שדות של טווחים (
age
ו-start_date
) ומתבצע חיוב על קריאות של רשומות באינדקס:db.collection("employees").whereGreaterThanOrEqualTo("age", 35) .orderBy("start_date")
השדה
__name__
תמיד נחשב לשדה טווח, גם אם הוא משמש רק במסנן שוויון. לכן השאילתה הבאה מכילה שני שדות של טווח (age
ו-__name__
) ומתבצע חיוב על קריאות של רשומות באינדקס:db.collection("employees").whereIn("__name__", Arrays.asList("/employees/Alice", "/employees/Bob")) .orderBy("age")
שאילתות צבירה
עבור שאילתות צבירה כמו count()
, sum()
ו-avg()
, החיוב הוא על רשומות האינדקס שהשאילתה קוראת, כפי שמתואר למעלה. לשאילתות צבירה שקוראות 0 רשומות באינדקס, יש חיוב מינימלי של קריאת מסמך אחד.
לדוגמה, על count()
פעולות שקוראות בין 0 ל-1,000 רשומות אינדקס, יחויב חיוב של קריאת מסמך אחד. על count()
פעולה שקוראת 1,500 רשומות אינדקס, תחויבו על 2 קריאות מסמכים.
כדי לקבל מידע נוסף על האינדקסים שבהם נעשה שימוש ועל רשומות האינדקס שנקראו, אפשר להשתמש בQuery Explain.
האזנה לתוצאות של שאילתות
Cloud Firestore מאפשרת להאזין לתוצאות של שאילתה ולקבל עדכונים בזמן אמת כשתוצאות השאילתה משתנות.
כשמקשיבים לתוצאות של שאילתה, מחויבים על קריאה בכל פעם שמסמך בקבוצת התוצאות נוסף או מתעדכן. אתם מחויבים גם על קריאה כשמסמך מוסר מקבוצת התוצאות כי המסמך השתנה. (לעומת זאת, כשמסמך נמחק, לא תחויבו על קריאה שלו).
החיוב על מאזינים בערכות SDK לנייד ולאינטרנט תלוי גם בהגדרה של שמירת נתונים במצב אופליין:
אם האפשרות 'שמירת נתונים במצב אופליין' מופעלת והמאזין מתנתק למשך יותר מ-30 דקות (לדוגמה, אם המשתמש עובר למצב אופליין), תחויבו על מסמכים ועל רשומות אינדקס שנקראו כאילו שלחתם שאילתה חדשה לגמרי.
אם ההתמדה במצב אופליין מושבתת, תחויבו על מסמכים ועל רשומות באינדקס שנקראו כאילו שלחתם שאילתה חדשה לגמרי בכל פעם שהמאזין מתנתק ומתחבר מחדש.
ניהול של קבוצות גדולות של תוצאות
Cloud Firestore כולל כמה תכונות שיעזרו לכם לנהל שאילתות שמחזירות מספר גדול של תוצאות:
- סמנים, שמאפשרים לכם להמשיך שאילתה שפועלת במשך זמן רב.
- אסימוני דפים, שעוזרים להציג את תוצאות השאילתה בדפים.
- מגבלות, שמציינות כמה תוצאות לאחזר.
- Offsets, which allow you to skip a fixed number of documents.
אין עלויות נוספות על שימוש בסמני מיקום, באסימוני דפים ובמגבלות. למעשה, התכונות האלה יכולות לעזור לכם לחסוך כסף כי אתם יכולים לקרוא רק את המסמכים שאתם באמת צריכים.
עם זאת, כששולחים שאילתה שכוללת היסט, מחויבים על קריאה לכל מסמך שדילגו עליו. לדוגמה, אם בשאילתה שלכם נעשה שימוש בהיסט של 10, והשאילתה מחזירה מסמך אחד, תחויבו על 11 קריאות. בגלל העלות הנוספת הזו, מומלץ להשתמש בסמני מיקום במקום בהיסטים, בכל הזדמנות.
שאילתות שאינן קריאת מסמכים
לשאילתות אחרות מלבד קריאת מסמכים, כמו בקשה לקבלת רשימה של מזהי אוספים, תחויבו על קריאת מסמך אחד. אם אחזור של כל מערך התוצאות דורש יותר מבקשה אחת (לדוגמה, אם משתמשים בחלוקה לדפים), החיוב הוא פעם אחת לכל בקשה.
חיוב מינימלי על שאילתות
יש חיוב מינימלי על קריאת מסמך אחד לכל שאילתה שמבצעים, גם אם השאילתה לא מחזירה תוצאות.
Cloud Firestore Security Rules
בספריות לקוח לנייד ולאינטרנט, אם Cloud Firestore Security Rules משתמש ב-exists()
, ב-get()
או ב-getAfter()
כדי לקרוא מסמך אחד או יותר מהמסד הנתונים, תחויבו על קריאות נוספות באופן הבא:
אתם מחויבים על קריאות שנדרשות כדי להעריך את Cloud Firestore Security Rules.
לדוגמה, אם הכללים שלכם מתייחסים לשלושה מסמכים, אבל Cloud Firestore צריך לקרוא רק שניים מהמסמכים האלה כדי להעריך את הכללים, תחויבו על שתי קריאות נוספות של המסמכים התלויים.
תחויבו רק על קריאה אחת לכל מסמך תלוי, גם אם הכללים שלכם מפנים למסמך הזה יותר מפעם אחת.
החיוב על הערכת הכללים מתבצע פעם אחת בלבד לכל בקשה.
כתוצאה מכך, יכול להיות שיהיה זול יותר לקרוא כמה מסמכים מאשר לקרוא מסמך אחד בכל פעם, כי קריאה של כמה מסמכים דורשת פחות בקשות.
כשמקשיבים לתוצאות של שאילתה, נחייב אתכם על הערכת הכלל בכל אחד מהמקרים הבאים:
- כשמריצים את השאילתה.
- בכל פעם שתוצאות השאילתה מתעדכנות.
- בכל פעם שהמכשיר של המשתמש מתנתק מהאינטרנט ואז מתחבר אליו מחדש.
- בכל פעם שמעדכנים את הכללים.
- בכל פעם שמעדכנים את המסמכים התלויים בכללים.
גודל האחסון של מסד הנתונים
החיוב הוא על כמות הנתונים שמאוחסנים ב-Cloud Firestore, כולל תקורה של אחסון. התקורה כוללת מטא-נתונים, אינדקסים אוטומטיים ואינדקסים מורכבים.
כל מסמך שמאוחסן ב-Cloud Firestore צריך לכלול את המטא-נתונים הבאים:
- מזהה המסמך, כולל מזהה האוסף ושם המסמך.
- השם והערך של כל שדה. מכיוון ש-Cloud Firestore הוא חסר סכימה, צריך לאחסן את השם של כל שדה במסמך עם ערך השדה.
- כל האינדקסים המורכבים והאינדקסים עם שדה יחיד שמתייחסים למסמך. כל רשומה באינדקס מכילה את מזהה האוסף, מספר כלשהו של ערכי שדות (בהתאם להגדרת האינדקס) ואת שם המסמך.
עלויות האחסון הן ב-GiB לחודש ומחושבות מדי יום. Cloud Firestore מבצע מדידה של גודל מסד הנתונים מדי יום. במהלך חודש, המערכת מחשבת את הגודל של אחסון מסד הנתונים על ידי חישוב הממוצע של נקודות הדגימה האלה. הערך הממוצע הזה מוכפל במחיר ליחידה של האחסון (GiB-month)
Cloud Firestore מידע על חישוב נפח האחסון זמין במאמר חישוב נפח האחסון.
נתוני PITR
אם מפעילים PITR, מחויבים על אחסון נתוני PITR. רוב הלקוחות יגלו שהעלות הכוללת של אחסון נתוני PiTR דומה לעלות האחסון של מסד הנתונים.
עלויות האחסון של PITR הן ב-GiB לחודש ומחושבות מדי יום. Cloud Firestore מדידה של גודל מסד הנתונים מדי יום. במהלך חודש, הממוצע של נקודות הדגימה האלה משמש לחישוב גודל האחסון של מסד הנתונים. הערך הממוצע הזה מוכפל במחיר ליחידה של PITR (חודש-GiB).
לדוגמה, אם הגודל הממוצע של מסד הנתונים במהלך חודש הוא 1GiB וה-PITR מופעל למשך כל החודש, אז גודל הנתונים של ה-PITR שניתן לחיוב הוא גם 1GiB.
חיוב מינימלי: יכול להיות שתחויבו בעלות של עד יום אחד של אחסון PITR גם אם תשביתו את PITR תוך יום אחד אחרי ההפעלה.
גיבוי נתונים ופעולות שחזור
אם מפעילים גיבויים, מחויבים על נפח האחסון של הגיבויים של מסד הנתונים. גודל האחסון של הגיבוי שווה לגודל האחסון של מסד הנתונים בזמן יצירת הגיבוי.
עלויות האחסון של הגיבויים הן ב-GiB לחודש. במהלך חודש, המערכת גם מחשבת את מספר הימים שבהם כל גיבוי נשמר, בממוצע לחודש. העלות של כל גיבוי מחושבת לפי נפח האחסון של הגיבוי כפול החלק היחסי של החודש שבו הגיבוי נשמר, כפול המחיר ליחידה. גבולות היום מוגדרים לפי אזור הזמן America/Los_Angeles למטרות חיוב.
כשמבצעים פעולת שחזור, Cloud Firestore מודד את גודל הגיבוי לצורך פעולת השחזור. גודל הגיבוי מוכפל במחיר ליחידה של פעולות שחזור (GiB).
הסבר על השאילתה
השימוש ב-Firestore Query Explain כרוך בעלויות.
כשמסבירים שאילתה באמצעות אפשרות ברירת המחדל, לא מתבצעות פעולות קריאה של אינדקסים. לא משנה מה מורכבות השאילתה, נגבית עלות של פעולת קריאה אחת.
כשמסבירים שאילתה באמצעות האפשרות analyze, מתבצעות פעולות של אינדוקס וקריאה, ולכן תחויבו על השאילתה כרגיל. אין חיוב נוסף על הפעילות של ההסבר והניתוח, רק החיוב הרגיל על השאילתה שמופעלת.
רוחב פס ברשת
החיוב הוא על רוחב הפס ברשת שמשמש את הבקשות שלכם ל-Cloud Firestore, כמו שמוצג בקטעים הבאים. העלות של רוחב הפס ברשת של בקשת Cloud Firestore תלויה בגודל התגובה של הבקשה, במיקום של מסד הנתונים של Cloud Firestore וביעד של התגובה.
Cloud Firestore מחשבת את גודל התגובה על סמך פורמט של הודעה שעברה סריאליזציה. תקורה של פרוטוקול, כמו תקורה של SSL, לא נכללת בשימוש ברוחב הפס של הרשת. בקשות שנדחו על ידי Cloud Firestore Security Rules לא נספרות בשימוש ברוחב הפס של הרשת.
כדי לדעת כמה רוחב פס ברשת השתמשתם, אתם יכולים להשתמש במסוף Google Cloud כדי לייצא את נתוני החיוב לקובץ.
תמחור כללי של רשתות
על בקשות שמקורן ב-Google Cloud Platform (לדוגמה, מאפליקציה שפועלת ב-Google Compute Engine), תחויבו באופן הבא:
סוג תנועה | מחיר |
---|---|
העברת נתונים נכנסת | חינם |
העברת נתונים בתוך אזור | חינם |
העברת נתונים בין אזורים באותו אזור גיאוגרפי מרובה | חינם |
העברת נתונים בין אזורים בארה"ב (לכל GiB) | 0.01$ (ה-10GiB הראשונים בכל חודש הם בחינם) |
העברת נתונים בין אזורים, לא כולל תנועת משתמשים בין אזורים בארה"ב | תעריפים של העברת נתונים יוצאים באינטרנט ב-Google Cloud Platform |
אם אתם משלמים במטבע שאינו דולר ארה"ב, יחולו המחירים הרשומים במטבע שלכם במק"טים של Cloud Platform.
Cloud Firestore כפוף גם לחיובים נוספים על יציאת נתונים מהאינטרנט במקרים הבאים:
- בקשות Google Cloud בין אזורים, לא כולל תנועה בין אזורים בארה"ב
- בקשות שמגיעות מחוץ ל-Google Cloud (לדוגמה, ממכשיר נייד של משתמש)
Google Cloudמידע נוסף על תעריפי יציאה של אינטרנט
דוגמה לתמחור
כדי לראות איך מצטברות עלויות החיוב של Cloud Firestore באפליקציה לדוגמה מהעולם האמיתי, אפשר לעיין בCloud Firestore דוגמה לחיוב.
ניהול ההוצאות
כדי להימנע מחיובים לא צפויים בחשבון, כדאי להגדיר תקציבים והתראות חודשיים באמצעות מסוף החיוב של Google Cloud.
כדי לעקוב אחרי השימוש ב-Cloud Firestore, פותחים את Cloud Firestoreהכרטיסייה Usage במסוף Firebase. אפשר להשתמש בלוח הבקרה כדי לאמוד את השימוש בתקופות זמן שונות.