נהל אינדקסים בענן Firestore

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

צור אינדקס חסר באמצעות הודעת שגיאה

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

בצע את הקישור שנוצר למסוף Firebase, לסקור את המידע מאוכלס באופן אוטומטי, ולחץ על צור.

השתמש במסוף Firebase

ליצירת אינדקס חדש באופן ידני ממסוף Firebase:

תמונה של ממשק האינדקס של Firestore בקונסולת בסיס האש

  1. עבור לסעיף ענן Firestore של קונסולת Firebase .
  2. לכו ללשונית אינדקסים ולחץ על הוסף אינדקס.
  3. הזן את שם האוסף והגדר את השדות שברצונך לסדר את האינדקס לפיהם.
  4. לחץ על צור.

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

הסר אינדקסים

כדי למחוק אינדקס:

  1. עבור לסעיף ענן Firestore של קונסולת Firebase .
  2. לחץ על כרטיסיית האינדקסים.
  3. רחף מעל המדד שאתה רוצה למחוק ובחר Delete מתוך תפריט ההקשר.
  4. אשר שברצונך למחוק אותו על ידי לחיצה על מחק מההתראה.

השתמש ב- Firebase CLI

ניתן גם לפרוס אינדקסים עם Firebase CLI . כדי להתחיל, לרוץ firebase init firestore בספריית הפרויקט שלך. במהלך ההתקנה, ה- CLI של Firebase יוצר קובץ JSON עם אינדקס ברירת המחדל בפורמט הנכון. ערוך את הקובץ להוסיף אינדקסים יותר ולפרוס אותו עם firebase deploy הפקודה. אם אתה רק רוצה לפרוס אינדקסים, להוסיף את --only firestore:indexes הדגל. אם תערוך את האינדקסים באמצעות מסוף Firebase, הקפד לעדכן גם את קובץ האינדקסים המקומיים שלך. עיין הפניה להגדרת מדד JSON .

זמן בניית אינדקס

כדי לבנות אינדקס, Cloud Firestore חייב להגדיר את האינדקס ולאחר מכן למלא מחדש את האינדקס בנתונים קיימים. זמן בניית האינדקס הוא סכום זמן ההתקנה וזמן מילוי:

  • הגדרת אינדקס אורכת מספר דקות. זמן הבנייה המינימלי לאינדקס הוא מספר דקות, אפילו למסד נתונים ריק.

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

אינדקס הבונה הם ארוכים פועל במבצעים.

לאחר שתתחיל לבנות אינדקס, Cloud Firestore מקצה לפעולה שם ייחודי. שמות מבצעים עם קידומת projects/[PROJECT_ID]/databases/(default)/operations/ , למשל:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

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

פירוט כל הפעולות ארוכות הטווח

כדי רשימה ארוכה-פועל במבצעים, להשתמש ברשימת פעולות gcloud firestore הפקודה. פקודה זו מפרטת פעולות מתמשכות שהושלמו לאחרונה. הפעולות מופיעות מספר ימים לאחר השלמתן:

gcloud firestore operations list

בדוק את מצב הפעולה

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

gcloud firestore operations describe operation-name

הערכת זמן ההשלמה

כפי הפעולה שלך פועלת, לראות את הערך של state השדה עבור המצב הכולל של המבצע.

בקשה למעמד של מבצע המתמשך גם מחזירה את המדדים workEstimated ו workCompleted . מדדים אלה מוחזרים למספר המסמכים. workEstimated מציג את המספר כולל המוערך של מסמכים מבצעים יעבדו. workCompleted מציג את מספר המסמכים שעובד עד כה. לאחר משלים פעולה, workCompleted משקף את המספר הכולל של מסמכים שעובדו למעשה, שעשויה להיות שונה מהערך של workEstimated .

פרד workCompleted ידי workEstimated עבור הערכת התקדמות מחוספסת. ההערכה עשויה להיות לא מדויקת מכיוון שהיא תלויה באיסוף נתונים סטטי.

לדוגמה, הנה מצב ההתקדמות של בניית אינדקס:

{
  "operations": [
    {
      "name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI",
      "metadata": {
        "@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata",
        "common": {
          "operationType": "CREATE_INDEX",
          "startTime": "2020-06-23T16:52:25.697539Z",
          "state": "PROCESSING"
        },
        "progressDocuments": {
          "workCompleted": "219327",
          "workEstimated": "2198182"
        }
       },
    },
    ...

כאשר הניתוח מתבצע, בתיאור הפעולה יכיל "done": true . ראה את הערך של state השדה בשביל התוצאה של הפעולה. אם done בשטח אינו מוגדר בתגובה, אז הערך שלו הוא false . אין לסמוך על קיומו של done ערך לפעולות ב-התקדמות.

שגיאות בניית אינדקס

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

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