ב-Firestore במצב Datastore (Datastore) נשמרים נתונים סטטיסטיים על הנתונים שאתם מאחסנים באפליקציה, כמו מספר הישויות, הסוג שלהן או נפח האחסון שמשמש לערכי מאפיינים מסוג מסוים.
אפשר לראות את הנתונים הסטטיסטיים האלה במסוף Google Cloud באחת מהדרכים הבאות:
- בדף Dashboard.
- בדף Entities (ישויות), מריצים שאילתת GQL בתבנית
SELECT * FROM __Stat_Kind__. - באופן פרוגרמטי בתוך האפליקציה על ידי שליחת שאילתות לגבי ישויות עם שמות מיוחדים באמצעות Datastore API. מידע נוסף על Datastore API זמין במאמר ממשקי API וחומרי עזר.
Datastore משתמש בשמות סוגים שמתחילים ומסתיימים בשני קווים תחתונים כדי לזהות ישויות מיוחדות שמספקות נתונים סטטיסטיים על הנתונים שלכם. הם נקראים ישויות סטטיסטיות. לדוגמה, לכל אפליקציה יש ישות אחת מהסוג __Stat_Total__, שמייצגת נתונים סטטיסטיים על כל הישויות במסד נתונים במצב Datastore.
יחידות סטטיסטיקה עוקבות אחרי מידע על הנתונים שלכם ומספקות תובנות לגבי השימוש בחבילת הגלישה. הם נוצרים באופן אוטומטי. לכל ישות סטטיסטית יש את המאפיינים הבאים:
-
count: מספר הפריטים שנכללים בחישוב הסטטיסטיקה (מספר שלם ארוך) -
bytes: הגודל הכולל של הפריטים בנתון הסטטיסטי הזה (מספר שלם ארוך) timestamp: השעה של העדכון האחרון של הנתון הסטטיסטי (ערך של תאריך ושעה)
כל ישות שייכת לסוג מסוים. סוג הנתונים הסטטיסטיים מציין את הקטגוריה של הנתונים הסטטיסטיים שנאספים או נמצאים בשימוש. אפשר להשתמש בפרמטר kind כדי לזהות את המטרה של נתון סטטיסטי, כמו אופטימיזציה של שאילתה, שיפור הביצועים או ניתוח נתונים.
חלק מסוגי הנתונים הסטטיסטיים כוללים גם מאפיינים נוספים שמפורטים בקטע רשימת הנתונים הסטטיסטיים במסמך הזה.
כשמערכת הסטטיסטיקה יוצרת ישויות סטטיסטיות חדשות, היא לא מוחקת את הישויות הסטטיסטיות הקודמות באופן מיידי. הדרך הכי טובה לקבל תצוגה עקבית של הנתונים הסטטיסטיים היא לשלוח שאילתה לגבי ישות הנתונים הסטטיסטיים עם הערך העדכני ביותר של timestamp, ואז להשתמש בערך חותמת הזמן הזה כמסנן כשמאחזרים ישויות אחרות של נתונים סטטיסטיים.
מערכת הסטטיסטיקות יוצרת גם סטטיסטיקות שספציפיות לכל מרחב שמות. לשמות הסוגים של נתונים סטטיסטיים שספציפיים למרחב שמות מתווסף הקידומת __Stat_Ns__, ואחריה אותן הסיומות כמו לשמות הסוגים של נתונים סטטיסטיים שרלוונטיים לאפליקציה כולה.
אם אפליקציה לא משתמשת במרחבי שמות, מערכת הנתונים הסטטיסטיים לא תיצור נתונים סטטיסטיים ספציפיים למרחב שמות. אפשר למצוא נתונים סטטיסטיים ספציפיים למרחב שמות רק במרחב השמות שהם רלוונטיים אליו.
רשימת נתונים סטטיסטיים
רשימה של נתונים סטטיסטיים זמינים:
| נתון סטטיסטי | סוג הישות של הנתון הסטטיסטי | תיאור |
|---|---|---|
| כל הישויות | __Stat_Total__ ערך ספציפי למרחב שמות: __Stat_Ns_Total__ |
כל הישויות. מאפיינים נוספים: • entity_bytes: נפח האחסון בטבלת הישויות, שנמדד בבייטים.• builtin_index_bytes: האחסון ברשומות של אינדקס מובנה, שנמדד בבייטים.• builtin_index_count: מספר הערכים באינדקס המובנה.• composite_index_bytes: האחסון ברשומות של אינדקס מורכב, שנמדד בבייטים.• composite_index_count: מספר הרשומות באינדקס המורכב. |
| כל הישויות במרחב שמות | __Stat_Namespace__ שימו לב: המערכת יוצרת ישויות __Stat_Namespace__ לכל מרחב שמות שהיא נתקלת בו, והן נמצאות רק במרחב השמות של המחרוזת הריקה. |
כל הישויות במרחב שמות. • subject_namespace: מרחב השמות שמיוצג (מחרוזת)• entity_bytes: נפח האחסון בטבלת הישויות שנמדד בבייטים.• builtin_index_bytes: האחסון ברשומות של אינדקס מובנה, שנמדד בבייטים.• builtin_index_count: מספר הערכים באינדקס המובנה.• composite_index_bytes: האחסון ברשומות של אינדקס מורכב, שנמדד בבייטים.• composite_index_count: מספר הרשומות באינדקס המורכב.מידע נוסף זמין בקטע מגבלות על נתונים סטטיסטיים במסמך הזה. |
| כל הרשומות באינדקסים שהוגדרו באפליקציה | __Stat_Kind_CompositeIndex__ערך ספציפי למרחב שמות: __Stat_Ns_Kind_CompositeIndex__ |
רשומות בטבלת האינדקס המורכב; ישות סטטיסטית אחת לכל סוג של ישות שמאוחסנת. מאפיינים נוספים: • alphanumeric_id: המזהה האלפאנומרי של האינדקס. אותו מזהה שמשמש ב-gcloud וב-API.• index_id: ייצוג פנימי של מספר של מזהה האינדקס. במקום gcloud ובשיטות API, צריך להשתמש ב-alphanumeric_id.• kind_name: השם של הסוג שמיוצג (מחרוזת)• last_known_usage_timestamp: הפעם האחרונה שבה האינדקס הזה הציג שאילתה.הערך תמיד יהיה זמן בין stat_tracked_since_time לבין חותמת הזמן. הערך שמוגדר הוא null אם לא נרשם שימוש בחלון הזמן הזה. לא מופיע עבור __Stat_Ns_Kind_CompositeIndex__.• stat_tracked_since_time: תחילת חלון הזמן שבו ידוע על השימוש באינדקס. לא נכח בפגישה __Stat_Ns_Kind_CompositeIndex__. |
| כל הרשומות באינדקסים המובנים | __Stat_Kind_BuiltinIndex__ |
מידע על האינדקסים המובנים במסד הנתונים. ישות סטטיסטית אחת לכל אינדקס מובנה. מאפיינים נוספים: • property_name: שם המאפיין המאונדקס.• kind_name: השם של הסוג שמיוצג (מחרוזת).• api_scope: Firestore או Datastore.• query_scope: היקף השאילתה של האינדקס. תמיד צריך להגדיר COLLECTION_GROUP (סוג) עבור מסדי נתונים של Datastore.• value_mode: המצב של היקף השאילתה, כמו ASC או DESC.• last_known_usage_timestamp: הפעם האחרונה שבה האינדקס הזה הציג שאילתה. הערך תמיד יהיה זמן בין stat_tracked_since_time לבין חותמת הזמן. הערך שמוגדר הוא null אם לא נרשם שימוש בחלון הזמן הזה.• stat_tracked_since_time: תחילת חלון הזמן שבו ידוע השימוש באינדקס. |
| ישויות מסוג מסוים | __Stat_Kind__ ערך ספציפי למרחב שמות: __Stat_Ns_Kind__ |
ישויות מסוג מסוים; ישות סטטיסטית אחת לכל סוג של ישות שמאוחסנת. מאפיינים נוספים: • kind_name: שם הסוג שמיוצג (מחרוזת)• entity_bytes: האחסון בטבלת הישויות שנמדד בבייט.• builtin_index_bytes: האחסון ברשומות של אינדקס מובנה, שנמדד בבייטים.• builtin_index_count: מספר הערכים באינדקס המובנה.• composite_index_bytes: האחסון ברשומות של אינדקס מורכב, שנמדד בבייטים.• composite_index_count: מספר הרשומות באינדקס המורכב. |
| ישות שורש מסוג מסוים | __Stat_Kind_IsRootEntity__ ערך ספציפי למרחב שמות: __Stat_Ns_Kind_IsRootEntity__ |
ישויות מסוג מסוים שהן ישויות שורש בקבוצת ישויות (אין להן ישות אב); ישות סטטיסטית אחת לכל סוג של ישות שמאוחסנת. מאפיינים נוספים: • kind_name: השם של הסוג שמיוצג (מחרוזת)• entity_bytes: האחסון בטבלת הישויות שנמדד בבייט. |
| ישות מסוג מסוים שאינה ישות שורש | __Stat_Kind_NotRootEntity__ ערך ספציפי למרחב שמות: __Stat_Ns_Kind_NotRootEntity__ |
ישויות מסוג שלא מוגדר כישויות בסיס בקבוצת ישויות (יש להן ישות אב קודמת); ישות סטטיסטית אחת לכל סוג ישות שמאוחסן. מאפיינים נוספים: • kind_name: השם של הסוג שמיוצג (מחרוזת)• entity_bytes: האחסון בטבלת הישויות שנמדד בבייט. |
| מאפיינים של סוג | __Stat_PropertyType__ ערך ספציפי למרחב שמות: __Stat_Ns_PropertyType__ |
מאפיינים של סוג ערך בכל הישויות; ישות סטטיסטית אחת לכל סוג ערך. מאפיינים נוספים: • property_type: שם סוג הערך (מחרוזת)• entity_bytes: האחסון בטבלת הישויות, שנמדד בבייטים.• builtin_index_bytes: האחסון ברשומות של אינדקס מובנה, שנמדד בבייטים.• builtin_index_count: מספר הרשומות באינדקס המובנה. |
| מאפיינים מסוג מסוים לכל סוג | __Stat_PropertyType_Kind__ ערך ספציפי למרחב שמות: __Stat_Ns_PropertyType_Kind__ |
מאפיינים של סוג ערך בישויות מסוג מסוים. יש ישות סטטיסטית אחת לכל שילוב של סוג מאפיין וסוג ישות. מאפיינים נוספים: • property_type: שם סוג הערך (מחרוזת)• kind_name: שם הסוג שמיוצג (מחרוזת)• entity_bytes: האחסון בטבלת הישויות שנמדד בבייטים.• builtin_index_bytes: האחסון באינדקס המובנה, נמדד בבייטים.• builtin_index_count: מספר הרשומות המובנות באינדקס.מידע נוסף זמין בקטע מגבלות על נתונים סטטיסטיים במאמר הזה. |
| נכסים עם שם | __Stat_PropertyName_Kind__ ערך ספציפי למרחב שמות: __Stat_Ns_PropertyName_Kind__ |
מאפיינים עם שם נתון בישויות מסוג נתון. ישות סטטיסטית אחת לכל שילוב של שם מאפיין ייחודי וסוג. מאפיינים נוספים: • property_name: שם המאפיין (מחרוזת)• kind_name: שם הסוג שמיוצג (מחרוזת)• entity_bytes: האחסון בטבלת הישויות, שנמדד בבייט.• builtin_index_bytes: האחסון ברשומות של אינדקס מובנה, שנמדד בבייטים.• builtin_index_count: מספר הרשומות באינדקס המובנה. |
| מאפיינים של סוג מסוים ושם | __Stat_PropertyType_PropertyName_Kind__ ערך ספציפי למרחב שמות: __Stat_Ns_PropertyType_PropertyName_Kind__ |
מאפיינים עם שם נתון וסוג ערך נתון בישויות מסוג נתון; ישות סטטיסטית אחת לכל שילוב של שם מאפיין, סוג ערך וסוג שקיים במסד הנתונים. מאפיינים נוספים: • property_type: שם סוג הערך (מחרוזת)• property_name: שם המאפיין (מחרוזת).• kind_name: השם של הסוג שמיוצג (מחרוזת).• entity_bytes: נפח האחסון בטבלת הישויות, שנמדד בבייטים.• builtin_index_bytes: האחסון ברשומות של אינדקס מובנה, שנמדד בבייטים.• builtin_index_count: מספר הרשומות המובנות באינדקס.מידע נוסף זמין בקטע מגבלות על נתונים סטטיסטיים במאמר הזה. |
חלק מהנתונים הסטטיסטיים מתייחסים לסוגי ערכים של מאפיינים לפי שם, כמחרוזות. השמות האלה הם:
"Blob""BlobKey""Boolean""Category""Date/Time""Email""Float""GeoPt""IM""Integer""Key""Link""NULL""PhoneNumber""PostalAddress""Rating""ShortBlob""String""Text""User"
מגבלות על נתונים סטטיסטיים
המגבלות הבאות חלות על נתונים סטטיסטיים:
- המאפיין
__Stat_PropertyType_Kind__והמאפיין__Stat_PropertyType_PropertyName_Kind__מחזירים מטא-נתונים של סוג המאפיין עבור סוגי ערכים של מערך, ומתעדים בנפרד את סוג המאפיין של כל ערך במערך. לדוגמה, אם מאפיין מסוג מערך מאחסן רשימה של מחרוזות, המאפיין מתעד את סוג המאפיין כ-STRING, אבל סוג המאפיין בפועל הואARRAY<STRING>. - הישויות
__Stat_Namespace__מכילות את אותו המידע שנמצא ברשומות__Stat_Ns_Total__. ישויות__Stat_Namespace__מאוחסנות במרחב השמות הריק ומכילות שדהsubject_namespaceשמתאר את מרחב השמות שאליו הן שייכות. רשומות__Stat_Ns_Total__מאוחסנות במרחב השמות שאליו הן מתייחסות, ולכן הן לא מכילות שדהsubject_namespace. לכן, שאילתה על סוג__Stat_Namespace__(ממרחב השמות של המחרוזת הריקה) שממוינת בסדר יורד לפיbytesתציג את מרחבי השמות שצורכים את נפח האחסון הגדול ביותר ראשונים. מכיוון שאי אפשר לבצע שאילתות על פני מרחבי שמות, כל שאילתה לגבי ישויות__Stat_Ns_Total__תפיק לכל היותר רשומה אחת.
סדר השמטה של ישויות סטטיסטיות
באפליקציות עם אלפי מרחבי שמות, סוגים או שמות מאפיינים נדרשים מספר גדול של ישויות סטטיסטיות. כדי להקטין את התקורה של אחסון ועדכון הנתונים הסטטיסטיים, מסדי נתונים של Firestore במצב Datastore משמיטים בהדרגה ישויות של נתונים סטטיסטיים לפי הסדר שמופיע בהמשך.
הישויות של הסיכומים הסטטיסטיים __Stat_Kind_CompositeIndex__, __Stat_PropertyType__ ו-__Stat_Total__ אף פעם לא מושמטות.
ישויות של נתונים סטטיסטיים מופיעות בקבוצות בסדר ברירת המחדל הבא:
נתונים סטטיסטיים לפי מרחב שמות, לפי סוג ולפי מאפיין:
__Stat_Ns_PropertyName_Kind____Stat_Ns_PropertyType_PropertyName_Kind__
נתונים סטטיסטיים לכל סוג ולכל נכס
__Stat_PropertyName_Kind____Stat_PropertyType_PropertyName_Kind__
נתונים סטטיסטיים לכל מרחב שמות
__Stat_Namespace____Stat_Ns_Kind_CompositeIndex____Stat_Ns_PropertyType____Stat_Ns_Total__
סדר ההשמטה של ישויות סטטיסטיקה מסוג Kind הוא:
סטטיסטיקה לכל מרחב שמות ולכל סוג
__Stat_Ns_Kind____Stat_Ns_Kind_IsRootEntity____Stat_Ns_Kind_NotRootEntity____Stat_Ns_PropertyType_Kind__
נתונים סטטיסטיים לפי סוג
__Stat_Kind____Stat_Kind_IsRootEntity____Stat_Kind_NotRootEntity____Stat_PropertyType_Kind__