ה-CLI של gcloud מספק אמולטור מקומי בזיכרון, שבו אפשר להשתמש כדי לפתח ולבדוק את האפליקציות. הסיבה לכך היא שהאמולטור מאחסן נתונים רק בזיכרון, ולכן כל המצב, כולל נתונים, סכימה והגדרות, אובד בהפעלה מחדש. האמולטור מציע את אותם ממשקי API כמו שירות הייצור של Spanner, והוא מיועד לפיתוח ולבדיקות מקומיים, ולא לפריסות בייצור.
האמולטור תומך בניבי השפה GoogleSQL ו-PostgreSQL. היא תומכת בכל השפות של ספריות הלקוח. אפשר גם להשתמש באמולטור עם Google Cloud CLI ועם ממשקי REST API.
האמולטור זמין גם כפרויקט קוד פתוח ב-GitHub.
מגבלות והבדלים
האמולטור לא תומך בפעולות הבאות:
- TLS/HTTPS, אימות, ניהול זהויות והרשאות גישה, הרשאות או תפקידים.
- במצבי שאילתה
PLANאוPROFILE, תוכנית השאילתה שמוחזרת ריקה. ANALYZEדוח התנועות בחשבון. האמולטור מקבל את ההודעה אבל מתעלם ממנה.- כל אחד מכלי רישום הביקורת והמעקב.
בנוסף, האמולטור שונה משירות הייצור של Spanner בדרכים הבאות:
- יכול להיות שהודעות השגיאה לא יהיו זהות בין האמולטור לבין שירות הייצור.
- הביצועים והמדרגיות של האמולטור לא ניתנים להשוואה לאלה של שירות הייצור.
- עסקאות של קריאה וכתיבה ושינויים בסכימה נועלים את כל מסד הנתונים לגישה בלעדית עד שהם מסתיימים.
- יש תמיכה ב-Partitioned DML וב-
partitionQuery, אבל האמולטור לא בודק אם אפשר לחלק את ההצהרות. המשמעות היא שאולי אפשר להריץ אמולטור של DML או של משפטpartitionQueryמחולק, אבל יכול להיות שהפעולה תיכשל בשירות הייצור עם השגיאה של משפט שלא ניתן לחלוקה.
רשימה מלאה של ממשקי API ותכונות שנתמכים, לא נתמכים או נתמכים באופן חלקי זמינה בקובץ README ב-GitHub.
אפשרויות להפעלת האמולטור
יש שתי דרכים נפוצות להפעלת האמולטור:
בוחרים את הדרך שמתאימה לפיתוח האפליקציה ולתהליך העבודה של הבדיקות.
הגדרת האמולטור ל-CLI של gcloud
משתמשי Windows ו-macOS צריכים לבצע את הפעולות הבאות לפני התקנת האמולטור:
מתקינים את הרכיבים של ה-CLI של gcloud בתחנת העבודה:
gcloud components install cloud-spanner-emulatorאם ה-CLI של gcloud כבר מותקן, מריצים את הפקודה הבאה כדי לוודא שכל הרכיבים שלו מעודכנים:
gcloud components update
יצירה והגדרה של האמולטור באמצעות ה-CLI של gcloud
כדי להשתמש באמולטור עם ה-CLI של gcloud, צריך להשבית את האימות ולשנות את נקודת הקצה. מומלץ ליצור הגדרה נפרדת של ה-CLI של gcloud כדי שתוכלו לעבור במהירות בין האמולטור לבין שירות הייצור.
יצירה והפעלה של הגדרות אמולטור:
gcloud config configurations create emulator gcloud config set auth/disable_credentials true gcloud config set project your-project-id gcloud config set api_endpoint_overrides/spanner http://localhost:9020/אחרי שמגדירים את ה-CLI של gcloud, הפקודות נשלחות לאמולטור במקום לשירות הפרודקשן. כדי לוודא זאת, אפשר ליצור מכונה עם הגדרות המכונה של האמולטור:
gcloud spanner instances create test-instance \ --config=emulator-config --description="Test Instance" --nodes=1כדי לעבור בין האמולטור לבין הגדרות ברירת המחדל, מריצים את הפקודה:
gcloud config configurations activate [emulator | default]מפעילים את האמולטור באמצעות ה-CLI של gcloud.
התקנת האמולטור ב-Docker
מתקינים את Docker במערכת ומוסיפים אותו לנתיב המערכת.
מורידים את תמונת האמולטור העדכנית:
docker pull gcr.io/cloud-spanner-emulator/emulatorמריצים את האמולטור ב-Docker:
docker run -p 9010:9010 -p 9020:9020 gcr.io/cloud-spanner-emulator/emulatorהפקודה הזו מפעילה את האמולטור וממפה את היציאות בקונטיינר לאותן יציאות במארח המקומי. האמולטור משתמש בשתי נקודות קצה מקומיות:
localhost:9010לבקשות gRPC ו-localhost:9010לבקשות REST.localhost:9020מפעילים את האמולטור באמצעות ה-CLI של gcloud.
הפעלת האמולטור באמצעות ה-CLI של gcloud
מפעילים את האמולטור באמצעות הפקודה gcloud emulators spanner:
gcloud emulators spanner start
האמולטור משתמש בשתי נקודות קצה מקומיות:
localhost:9010לבקשות gRPC-
localhost:9020לבקשות REST
שימוש בספריות הלקוח עם האמולטור
אפשר להשתמש בגרסאות נתמכות של ספריות הלקוח עם האמולטור על ידי הגדרת משתנה הסביבה SPANNER_EMULATOR_HOST.
יש הרבה דרכים לעשות את זה. לדוגמה:
Linux/macOS
export SPANNER_EMULATOR_HOST=localhost:9010
Windows
set SPANNER_EMULATOR_HOST=localhost:9010
או באמצעות gcloud env-init:
Linux/macOS
$(gcloud emulators spanner env-init)
Windows
gcloud emulators spanner env-init > set_vars.cmd && set_vars.cmd
כשהאפליקציה מופעלת, ספריית הלקוח בודקת אוטומטית אם יש SPANNER_EMULATOR_HOST ומתחברת לאמולטור אם הוא פועל.
אחרי שמגדירים את SPANNER_EMULATOR_HOST, אפשר לבדוק את האמולטור באמצעות המדריכים לתחילת העבודה. אפשר להתעלם מההוראות שקשורות ליצירת פרויקט, לאימות ולפרטי כניסה, כי לא צריך אותן כדי להשתמש באמולטור.
איך מתחילים ב-C# צריך להגדיר את האפשרויות של מחרוזת החיבור. הוראות נוספות ל-C#
גרסאות נתמכות
בטבלה הבאה מפורטות הגרסאות של ספריות הלקוח שתומכות באמולטור.
| ספריית לקוח | גרסת מינימום |
|---|---|
| C++ | v0.9.x+ |
| C# | v3.1.0+ |
| Go | v1.5.0+ |
| Java | v1.51.0+ |
| Node.js | v4.5.0+ |
| PHP | v1.25.0+ |
| Python | v1.15.0+ |
| Ruby | v1.13.0+ |
הוראות נוספות ל-C#
בספריית הלקוח של C#, צריך לציין גם את האפשרות emulatordetection במחרוזת החיבור.
בניגוד לספריות לקוח אחרות, ספריית הלקוח C# מתעלמת ממשתנה הסביבה SPANNER_EMULATOR_HOST כברירת מחדל. דוגמה למחרוזת החיבור:
var builder = new SpannerConnectionStringBuilder
{
DataSource = $"projects/{projectId}/instances/{instanceId}/databases/{databaseId}";
EmulatorDetection = "EmulatorOnly"
};