הפעלת אמולטור Datastore

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

בעיות מוכרות

כברירת מחדל, אמולטור Datastore לא מדמה תכונות שהוצגו על ידי Firestore במצב Datastore. ההתנהגויות הבאות של האמולטור שמוגדרות כברירת מחדל לא תואמות למצב Datastore:

  • האמולטור מדמה עקביות הדרגתית כברירת מחדל. ‫Firestore במצב Datastore הוא עקבי באופן חזק.
  • האמולטור לא מאפשר שאילתות שאינן שאילתות צאצא בתוך טרנזקציות. המגבלה הזו כבר לא חלה על Firestore במצב Datastore.
  • האמולטור לא תומך בשאילתות IN, != ו-NOT-IN.
  • האמולטור לא תומך בשאילתות צבירה כמו COUNT(*).

עם זאת, הדגל --use-firestore-in-datastore-mode עוזר להקל על חלק מההגבלות שלמעלה ב-Firestore במצב Datastore.

  • האמולטור מדמה שאילתות לא צאצאיות עם עקביות חזקה.
  • האמולטור מאפשר שאילתות שאינן שאילתות צאצא בתוך טרנזקציות.
  • האמולטור מסיר את המגבלה של 25 קבוצות ישויות בעסקה.

כדי לבצע אמולציה של Firestore במצב Datastore, צריך להשתמש ב-gcloud emulators firestore start --database-mode=datastore-mode.

לפני שמתחילים

כדי להשתמש באמולטור Datastore, צריך:

התקנת האמולטור

אמולטור Datastore הוא רכיב של ה-CLI של gcloud. משתמשים בפקודה gcloud components install כדי להתקין את אמולטור Datastore:

gcloud components install cloud-datastore-emulator

ספריות נתונים של אמולטור

האמולטור מדמה את Datastore על ידי יצירת /WEB-INF/appengine-generated/local_db.bin בספריית נתונים שצוינה ואחסון נתונים ב-local_db.bin. כברירת מחדל, האמולטור משתמש בספריית הנתונים ~/.config/gcloud/emulators/datastore/. הקובץ local_db.bin נשמר בין סשנים של האמולטור. אפשר להגדיר כמה ספריות נתונים ולחשוב על כל אחת מהן כמו על מופע נפרד ומקומי של מצב Datastore. כדי לנקות את התוכן של קובץ local_db.bin, צריך לעצור את האמולטור ולמחוק את הקובץ באופן ידני.

הפעלת האמולטור

מריצים את האמולטור באמצעות הפקודה datastore start משורת הפקודה:

gcloud beta emulators datastore start [flags]

כאשר [flags] הם ארגומנטים אופציונליים לשורת הפקודה שמועברים ל-CLI של gcloud. לדוגמה:

  • --data-dir=[DATA_DIR] משנה את ספריית הנתונים של האמולטור. האמולטור יוצר את הקובץ /WEB-INF/appengine-generated/local_db.bin בתוך [DATA_DIR], או משתמש בקובץ קיים אם יש כזה.

  • ההגדרה --no-store-on-disk קובעת שהאמולטור לא ישמור נתונים בדיסק עבור סשן האמולטור.

כאן אפשר לראות את הרשימה המלאה של הדגלים האופציונליים.gcloud beta emulators datastore start

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

...
[datastore] Dev App Server is now running.

כדי לעצור את האמולטור, מקלידים Control-C בשורת הפקודה.

הגדרת משתני סביבה

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

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

הגדרה אוטומטית של המשתנים

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

‫Linux / macOS

מריצים את הפקודה env-init באמצעות החלפת פקודות:

$(gcloud beta emulators datastore env-init)

Windows

יצירה והרצה של קובץ אצווה באמצעות פלט מ-env-init:

gcloud beta emulators datastore env-init > set_vars.cmd && set_vars.cmd

האפליקציה שלכם תתחבר עכשיו לאמולטור Datastore.

הגדרה ידנית של המשתנים

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

  1. מריצים את הפקודה env-init:

    gcloud beta emulators datastore env-init
  2. במחשב שבו האפליקציה פועלת, מגדירים את משתני הסביבה ואת הערכים שלהם בהתאם לפלט של הפקודה env-init. לדוגמה:

    Linux / macOS
    export DATASTORE_DATASET=my-project-id
    export DATASTORE_EMULATOR_HOST=::1:8432
    export DATASTORE_EMULATOR_HOST_PATH=::1:8432/datastore
    export DATASTORE_HOST=http://::1:8432
    export DATASTORE_PROJECT_ID=my-project-id
    Windows
    set DATASTORE_DATASET=my-project-id
    set DATASTORE_EMULATOR_HOST=::1:8432
    set DATASTORE_EMULATOR_HOST_PATH=::1:8432/datastore
    set DATASTORE_HOST=http://::1:8432
    set DATASTORE_PROJECT_ID=my-project-id

האפליקציה שלכם תתחבר עכשיו לאמולטור Datastore. הערה: מזהה הפרויקט והיציאה שמופיעים בפלט של הפקודה יהיו שונים מהדוגמה שלמעלה.

עדכון ומחיקה של אינדקסים

אם מריצים את האפליקציה באמצעות האמולטור, אפשר ליצור אינדקסים למסד הנתונים במצב Datastore בסביבת הייצור, וגם למחוק אינדקסים שלא צריך. מידע נוסף זמין במאמר בנושא שימוש ב-CLI של gcloud.

הסרת משתני סביבה

אחרי שמסיימים להשתמש באמולטור, צריך לעצור אותו (Control-C) ולהסיר את משתני הסביבה כדי שהאפליקציה תתחבר למסד הנתונים של מצב Datastore בסביבת הייצור.

הסרה אוטומטית של המשתנים

אם האפליקציה והאמולטור פועלים באותה מכונה, אפשר להסיר את משתני הסביבה באופן אוטומטי:

‫Linux / macOS

מריצים את הפקודה env-unset באמצעות החלפת פקודות:

$(gcloud beta emulators datastore env-unset)

Windows

יצירה והרצה של קובץ אצווה באמצעות פלט מ-env-unset:

gcloud beta emulators datastore env-unset > remove_vars.cmd && remove_vars.cmd

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

הסרה ידנית של המשתנים

אם האפליקציה והאמולטור פועלים במכונות שונות, צריך להסיר את משתני הסביבה באופן ידני:

  1. מריצים את הפקודה env-unset:

    gcloud beta emulators datastore env-unset
  2. במחשב שבו האפליקציה פועלת, מסירים את משתני הסביבה בהתאם להוראות שמופיעות בפלט של הפקודה env-unset. לדוגמה:

    Linux / macOS
    unset DATASTORE_DATASET
    unset DATASTORE_EMULATOR_HOST
    unset DATASTORE_EMULATOR_HOST_PATH
    unset DATASTORE_HOST
    unset DATASTORE_PROJECT_ID
    Windows
    set DATASTORE_DATASET=
    set DATASTORE_EMULATOR_HOST=
    set DATASTORE_EMULATOR_HOST_PATH=
    set DATASTORE_HOST=
    set DATASTORE_PROJECT_ID=

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