ב-Google Cloud CLI יש אמולטור מקומי בזיכרון, שמאפשר לפתח ולבדוק את האפליקציות. האמולטור שומר נתונים רק בזיכרון, ולכן כל המצבים, כולל נתונים, סכימה והגדרות, אובדים בהפעלה מחדש. האמולטור מציע את אותם ממשקי API כמו שירות הייצור של Spanner, והוא משמש לפיתוח ולבדיקה מקומיים, ולא לפריסות ייצור.
האמולטור תומך גם בניבים של GoogleSQL וגם בניבים של PostgreSQL. הוא תומך בכל השפות של ספריות הלקוח. אפשר גם להשתמש באמולטור עם ה-CLI של gcloud ועם ממשקי API בארכיטקטורת REST.
האמולטור זמין גם כפרויקט קוד פתוח ב-GitHub.
מגבלות והבדלים
האמולטור לא תומך באפשרויות הבאות:
- TLS/HTTPS, אימות, ניהול זהויות והרשאות גישה (IAM), הרשאות או תפקידים.
- במצבי השאילתה
PLANאוPROFILE, התוכנית לביצוע השאילתה שמוחזרת ריקה. - ההצהרה
ANALYZE. האמולטור מקבל את זה אבל מתעלם מזה. - כל אחד מהכלים לרישום ביומן ביקורת ולמעקב.
- הגנה מפני מחיקת מסד נתונים. האמולטור מקבל את השדה
enable_drop_protection, אבל הוא מאפשר למחוק מסדי נתונים גם אם המאפיין הזה מופעל.
בנוסף, האמולטור שונה משירות הייצור של Spanner בדרכים הבאות:
- יכול להיות שהודעות השגיאה יהיו שונות בין האמולטור לבין שירות הייצור.
- הביצועים והמדרגיות של האמולטור לא משתווים לאלה של שירות הייצור.
- טרנזקציות של קריאה-כתיבה ושינויים בסכימה נועלים את כל מסד הנתונים לגישה בלעדית עד להשלמה.
- האמולטור תומך ב-Partitioned DML וב-
partitionQuery, אבל הוא לא מאמת שההצהרות ניתנות לחלוקה למחיצות. כלומר, יכול להיות שהצהרת DML אוpartitionQueryמחולקת למחיצות תפעל באמולטור, אבל תיכשל בשירות בסביבת הייצור עם השגיאה "הצהרה שלא ניתנת לחלוקה למחיצות".
רשימה מלאה של ממשקי API ותכונות שנתמכים, לא נתמכים ונתמכים באופן חלקי מופיעה בקובץ README ב-GitHub.
אפשרויות להפעלת האמולטור
יש שתי דרכים נפוצות להפעיל את האמולטור:
בחרו את הדרך שמתאימה לתהליך העבודה שלכם לפיתוח ולבדיקה של האפליקציה.
הפעלת האמולטור באמצעות ה-CLI של gcloud
כדי להפעיל את האמולטור באמצעות ה-CLI של gcloud:
מתקינים את הרכיב
cloud-spanner-emulator:gcloud components install cloud-spanner-emulatorאם ה-CLI של gcloud כבר מותקן, מריצים את הפקודה הבאה כדי לוודא שכל הרכיבים שלו מעודכנים:
gcloud components updateמפעילים את האמולטור:
gcloud emulators spanner startהאמולטור משתמש בשתי נקודות קצה מקומיות:
-
localhost:9010לבקשות gRPC -
localhost:9020לבקשות REST
-
הפעלת האמולטור באמצעות Docker
כדי להפעיל את האמולטור באמצעות 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:9020לבקשות REST.
הגדרת ה-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
החלפת הגדרות אישיות
כדי לעבור בין האמולטור לבין הגדרות ברירת המחדל, מריצים את הפקודה:
# To switch to default (production) configuration:
gcloud config configurations activate default
# To switch back to emulator configuration:
gcloud config configurations activate emulator
שימוש בספריות הלקוח עם האמולטור
כדי להשתמש בגרסאות נתמכות של ספריות הלקוח עם האמולטור, צריך להגדיר את משתנה הסביבה 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# | גרסה 3.1.0 ואילך |
| המשך | v1.5.0+ |
| Java | גרסה 1.51.0 ואילך |
| Node.js | גרסה 4.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"
};