בדף הזה מוסבר על גודל האחסון של ישויות, מפתחות, מאפיינים ורשומות אינדקס ב-Firestore במצב Datastore. מידע על העלויות של האחסון הזה זמין במאמר תמחור של מצב Datastore.
גודל המחרוזת
גודל המחרוזת מחושב כמספר הבייטים בקידוד UTF-8 + 1.
הנתונים הבאים נשמרים כמחרוזות:
- מקשים
- שמות הסוגים
- שמות של מרחבי שמות (גודל מרחב השמות שמוגדר כברירת מחדל הוא 0)
- שמות של מאפיינים
- ערכי מאפיינים מסוג מחרוזת
לדוגמה:
- השם של סוג
Taskמשתמש ב-4 בייטים + בבייט אחד, כלומר ב-5 בייטים בסך הכול. - השם של המאפיין
descriptionמשתמש ב-11 בייטים + ב-1 בייט, כלומר ב-12 בייטים בסך הכול. - השם של מרחב השמות
my_name_spaceמשתמש ב-13 בייטים + ב-1 בייט, ובסך הכול ב-14 בייטים.
גודל המפתח
גודל המפתח הוא סכום
- גודל המחרוזת של מרחב השמות (אם לא במרחב השמות שמוגדר כברירת מחדל)
- הגודל של מחרוזת נתיב המפתח המלא (כל מזהה מספרי הוא 8 בייטים)
- 16 בייטים
למפתח מסוג Task במרחב השמות שמוגדר כברירת מחדל עם מזהה מספרי וללא ישות אב:
Task id:5730082031140864
גודל המפתח הוא 5 + 8 + 16 = 29 בייטים:
- 5 בייטים לשם הסוג
Task - 8 בייט למזהה המספרי
- 16 בייט למפתח
למפתח מסוג Task במרחב השמות שמוגדר כברירת מחדל עם מזהה מחרוזת וללא ישות אב:
Task name:my_task_id
גודל המפתח הוא 5 + 11 + 16 = 32 בייטים:
- 5 בייטים לשם הסוג
Task - 11 בייט למזהה המחרוזת
my_task_id - 16 בייט למפתח
עבור ישות Task עם ישות אב TaskList במרחב השמות שמוגדר כברירת מחדל:
TaskList id:5654313976201216 > Task id:5629499534213120
האב הקדמון משתמש ב-9 + 8 = 17 בייטים:
- 9 בייטים לשם הסוג
TaskList - 8 בייט למזהה המספרי
לכן, גודל המפתח של ישות Task עם ישות אב TaskList הוא 17 + 5 + 8 + 16 = 46 בייטים:
- 17 בייטים לישות האב
- 5 בייטים לשם הסוג
Task - 8 בייט למזהה המספרי
- 16 בייט למפתח
אם הישות הזו נמצאת במרחב השמות my_name_space, גודל המפתח הוא 14 + 46 = 60 בייטים, כי השם my_name_space תופס 14 בייטים.
גודל הנכס
גודל הנכס הוא סכום
- הגודל של מחרוזת שם המאפיין
- הגודל של ערך המאפיין
בטבלה הבאה מוצג הגודל של ערכי המאפיינים לפי סוג.
| סוג | גודל |
|---|---|
| מערך | סכום הגדלים של הערכים שלו |
| Blob | אורך בבייטים |
| בוליאני | בייט אחד |
| כפול | 8 בייטים |
| ישות מוטמעת | גודל הישות |
| נקודה גיאוגרפית | 16 בייטים |
| מספר שלם | 8 בייטים |
| מפתח | גודל המפתח |
| Null | בייט אחד |
| String | מספר הבייטים בקידוד UTF-8 + 1 |
| חותמת הזמן | 8 בייטים |
לדוגמה, מאפיין בשם done עם סוג בוליאני ישתמש ב-6 בייט:
- 5 בייט לשם הנכס
done - 1 בייט לערך הבוליאני
גודל הישות
הגודל של ישות הוא סכום
- גודל המפתח
- סכום גדלי הנכסים
- 32 בייטים
הדוגמה הזו היא לישות מסוג Task במרחב השמות שמוגדר כברירת מחדל עם מזהה מספרי וללא ישות אב:
Task id:5730082031140864 - "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Google Cloud Datastore"
הגודל הכולל של המאפיינים הוא 78 בייטים:
| שם הנכס והערך שלו | גודל הנכס בבייטים |
|---|---|
"type": "Personal" |
14 5 עבור שם המאפיין + 9 עבור ערך המחרוזת של המאפיין |
"done": false |
6 5 עבור שם המאפיין + 1 עבור הערך הבוליאני של המאפיין |
"priority": 1 |
17 9 עבור שם המאפיין + 8 עבור ערך המספר השלם של המאפיין |
"description": "Learn Google Cloud Datastore" |
41 12 עבור שם המאפיין + 29 עבור ערך המחרוזת של המאפיין |
לכן גודל הישות הוא 29 + 78 + 32 = 139 בייטים:
- 29 בייט למפתח
- 78 בייט למאפיינים
- 32 בייטים לישות
גודל רשומה באינדקס
הגודל של רשומה באינדקס מחושב באופן הבא עבור אינדקסים מובנים ומורכבים.
אינדקסים מובנים
הגודל של רשומה באינדקס מובנה הוא סכום הערכים הבאים:
- גודל המפתח של הישות שנוספה לאינדקס
- סכום השמות של המאפיינים שעברו אינדוקס
- סכום ערכי המאפיינים שנוספו לאינדקס
- הגודל של שם סוג הישות שנוספה לאינדקס
- 32 בייטים
לדוגמה, ניקח ישות מסוג Task במרחב השמות שמוגדר כברירת מחדל עם מזהה מספרי וללא ישות אב:
Task id:5730082031140864 - "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Google Cloud Datastore"
אם done הוא מאפיין עם אינדקס, רשומה של אינדקס מובנה לאינדקס של מאפיין יחיד done מורכבת מהמפתח, משם המאפיין done ומהערך שלו, משם הסוג Task ומ-32 בייט לרשומת אינדקס. הגודל הכולל של רשומת האינדקס הזו הוא 72 בייטים:
- 29 למקש
- 6 בשביל שם המאפיין
doneוהערך הבוליאני - 5 בשדה
Taskkind name - 32 לרשומה באינדקס
כברירת מחדל, מסדי נתונים במצב Datastore מגדירים מראש באופן אוטומטי שני אינדקסים של מאפיין יחיד לכל מאפיין של כל סוג ישות, אחד בסדר עולה ואחד בסדר יורד. לכן, לישות הזו יהיה רשומה באינדקס בגודל 72 בייט באינדקס של מאפיין יחיד done בסדר עולה, ורשומה באינדקס בגודל 72 בייט באינדקס של מאפיין יחיד done בסדר יורד.
אינדקסים מורכבים
הגודל של רשומה באינדקס מורכב הוא סכום הערכים הבאים:
- גודל המפתח של הישות שנוספה לאינדקס
- סכום ערכי המאפיינים שנוספו לאינדקס
- 32 בייטים
לדוגמה, ניקח ישות מסוג Task במרחב השמות שמוגדר כברירת מחדל עם מזהה מספרי וללא ישות אב:
indexes:
- kind: Task
properties:
- name: done
direction: asc
- name: priority
direction: ascכדאי לשקול אינדקס מורכב שמשתמש במאפיינים done ו-priority (שניהם בסדר עולה):
הגודל הכולל של רשומת האינדקס באינדקס הזה הוא 70 בייטים:
- 29 למקש
- 1 עבור הערך הבוליאני של המאפיין
done - 8 עבור ערך המספר השלם של המאפיין
priority - 32 לרשומה באינדקס
אם אתם לא רוצים ש-Firestore במצב Datastore ישמור אינדקס למאפיין, אתם צריכים להחריג את המאפיין מהאינדקסים. שימו לב: אם מוציאים נכס, הוא מוסר מכל האינדקסים המורכבים.