פיתוח מבוסס-נתונים מואץ באמצעות MCP Toolbox for AlloyDB באמצעות Gemini CLI ב-Cloud Run

1. סקירה כללית

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

פתרון

בדיוק כאן נכנסת לתמונה היכולת של פיתוח אפליקציות מואץ, ולכן אני נרגש לשתף איך ערכת הכלים של MCP (פלטפורמת ענן מודרנית), שאפשר לגשת אליה דרך Gemini CLI האינטואיטיבי, הפכה לחלק חיוני בערכת הכלים שלי. תארו לעצמכם שאתם יכולים לקיים אינטראקציה חלקה עם מופע AlloyDB, לכתוב שאילתות ולהבין את מערך הנתונים – הכול ישירות בסביבת הפיתוח המשולבת (IDE). זה לא רק עניין של נוחות, אלא של צמצום משמעותי של החיכוך במחזור החיים של הפיתוח, כדי שתוכלו להתמקד בפיתוח תכונות חדשניות במקום להתמודד עם כלים חיצוניים.

בהקשר של אפליקציית המסחר האלקטרוני הקמעונאית שלנו, שבה היינו צריכים לבצע שאילתות יעילות של נתוני מוצרים, לטפל בסינון מורכב ולנצל את הניואנסים של חיפוש וקטורי, היכולת לבצע איטרציות מהירות על אינטראקציות עם מסד הנתונים הייתה חשובה ביותר. ערכת הכלים של MCP, שמבוססת על Gemini CLI, לא רק מפשטת את התהליך הזה אלא גם מאיצה אותו, ומשנה את האופן שבו אנחנו יכולים לחקור, לבדוק ולשפר את הלוגיקה של מסד הנתונים שעומדת בבסיס האפליקציות שלנו. במאמר הזה נסביר איך השילוב המהפכני הזה מאפשר פיתוח Full-stack מהיר, חכם ומהנה יותר.

מה תלמדו ותבנו

אפליקציית חיפוש קמעונאית שמשתמשת ב-MCP Toolbox בסביבת הפיתוח המשולבת (IDE), ומבוססת על Gemini CLI. הנושאים שעליהם נדון:

  1. איך משלבים את MCP Toolbox ישירות בסביבת הפיתוח המשולבת (IDE) כדי ליצור אינטראקציה חלקה עם AlloyDB.
  2. דוגמאות מעשיות לשימוש בממשק Gemini CLI כדי לכתוב ולהריץ שאילתות SQL על נתוני הקמעונאות שלכם.
  3. אפשר להשתמש ב-Gemini CLI כדי ליצור אינטראקציה עם מערך הנתונים שלנו בנושא מסחר אלקטרוני קמעונאי, לכתוב שאילתות שבדרך כלל דורשות כלים נפרדים ולראות את התוצאות באופן מיידי.
  4. תוכלו לגלות דרכים חדשות לבדיקה ולהבנה של הנתונים – מבדיקת מבני טבלאות ועד ביצוע בדיקות מהירות של תקינות הנתונים – והכול באמצעות ממשקי שורת פקודה מוכרים בתוך סביבת הפיתוח המשולבת שלנו.
  5. איך תהליך העבודה המהיר הזה עם מסד הנתונים תורם ישירות לקיצור מחזורי הפיתוח של Full-stack, ומאפשר יצירת אב טיפוס ואיטרציה מהירים.

Techstack

אנחנו משתמשים ב:

  • ‫AlloyDB למסד נתונים
  • ערכת הכלים של MCP להפשטת תכונות מתקדמות של AI גנרטיבי ו-AI של מסדי נתונים מהאפליקציה
  • ‫Cloud Run לפריסה ללא שרת.
  • ממשק Gemini CLI כדי להבין ולנתח את מערך הנתונים וליצור את החלק של מסד הנתונים באפליקציית המסחר האלקטרוני הקמעונאי.

דרישות

  • דפדפן, כמו Chrome או Firefox
  • פרויקט ב-Google Cloud שהחיוב בו מופעל.

‫2. לפני שמתחילים

יצירת פרויקט

  1. ב-Google Cloud Console, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
  2. מוודאים שהחיוב מופעל בפרויקט ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט

לזיכויים ב-Google Cloud: כדי לקבל זיכויים ב-Google Cloud שיעזרו לכם להתחיל להשתמש ב-Google Cloud, אתם יכולים להשתמש בקישור כדי לממש זיכויים. כדי לממש את השובר, אפשר לפעול לפי ההוראות שמופיעות כאן.

  1. תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud. לוחצים על 'הפעלת Cloud Shell' בחלק העליון של מסוף Google Cloud.

תמונה של לחצן Activate Cloud Shell

  1. אחרי שמתחברים ל-Cloud Shell, בודקים שכבר בוצע אימות ושהפרויקט מוגדר למזהה הפרויקט שלכם באמצעות הפקודה הבאה:
gcloud auth list
  1. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שפקודת gcloud מכירה את הפרויקט.
gcloud config list project
  1. אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
  1. מפעילים את ממשקי ה-API הנדרשים: לוחצים על הקישור ומפעילים את ממשקי ה-API.

אפשר גם להשתמש בפקודת gcloud. אפשר לעיין במאמרי העזרה בנושא פקודות gcloud ושימוש בהן.

3. הגדרת מסד נתונים

בשיעור ה-Lab הזה נשתמש ב-AlloyDB כמסד הנתונים של נתוני המסחר האלקטרוני. הוא משתמש באשכולות כדי להכיל את כל המשאבים, כמו מסדי נתונים ויומנים. לכל אשכול יש מופע ראשי שמספק נקודת גישה לנתונים. הטבלאות יכילו את הנתונים בפועל.

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

יצירת אשכול ומופע

  1. עוברים לדף AlloyDB במסוף Cloud. דרך קלה למצוא את רוב הדפים ב-Cloud Console היא לחפש אותם באמצעות סרגל החיפוש של המסוף.
  2. בדף הזה, בוחרים באפשרות יצירת אשכול:

f76ff480c8c889aa.png

  1. יוצג מסך כמו זה שבהמשך. יוצרים אשכול ומופע עם הערכים הבאים (אם משכפלים את קוד האפליקציה מהמאגר, חשוב לוודא שהערכים זהים):
  • cluster id: "vector-cluster"
  • password: "alloydb"
  • PostgreSQL 15 / הגרסה המומלצת האחרונה
  • אזור: "us-central1"
  • רשת: "default"

538dba58908162fb.png

  1. כשבוחרים את רשת ברירת המחדל, מוצג מסך כמו זה שבהמשך.

לוחצים על הגדרת קישור.

7939bbb6802a91bf.png

  1. משם, בוחרים באפשרות שימוש בטווח כתובות IP שהוקצה באופן אוטומטי ולוחצים על 'המשך'. אחרי שבודקים את המידע, לוחצים על CREATE CONNECTION (יצירת חיבור). 768ff5210e79676f.png
  2. אחרי שמגדירים את הרשת, אפשר להמשיך ליצור את האשכול. לוחצים על CREATE CLUSTER (יצירת אשכול) כדי להשלים את הגדרת האשכול, כמו שמוצג בהמשך:

e06623e55195e16e.png

הערה חשובה:

  1. חשוב לשנות את מזהה המופע (שאפשר למצוא בזמן ההגדרה של האשכול או המופע) ל **vector-instance**. אם אין לכם אפשרות לשנות אותו, חשוב לזכור **להשתמש במזהה המופע** בכל ההפניות הבאות.
  2. שימו לב: תהליך יצירת האשכול יימשך כ-10 דקות. אחרי שהפעולה תסתיים בהצלחה, יוצג מסך עם סקירה כללית של האשכול שיצרתם.

4. הטמעת נתונים

עכשיו צריך להוסיף טבלה עם הנתונים על החנות. עוברים אל AlloyDB, בוחרים את האשכול הראשי ואז AlloyDB Studio:

847e35f1bf8a8bd8.png

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

  • שם משתמש : "postgres"
  • מסד נתונים : "postgres"
  • סיסמה : "alloydb"

אחרי שתעברו את תהליך האימות ב-AlloyDB Studio, תוכלו להזין פקודות SQL בכלי העריכה. אפשר להוסיף כמה חלונות של Editor באמצעות סימן הפלוס שמשמאל לחלון האחרון.

91a86d9469d499c4.png

מזינים פקודות ל-AlloyDB בחלונות העריכה, ומשתמשים באפשרויות Run (הפעלה), Format (עיצוב) ו-Clear (ניקוי) לפי הצורך.

הפעלת תוספים

כדי ליצור את האפליקציה הזו, נשתמש בתוספים pgvector ו-google_ml_integration. התוסף pgvector מאפשר לכם לאחסן ולחפש הטמעות של וקטורים. התוסף google_ml_integration מספק פונקציות שמשמשות לגישה לנקודות קצה של חיזוי ב-Vertex AI כדי לקבל חיזויים ב-SQL. מפעילים את התוספים האלה על ידי הפעלת פקודות ה-DDL הבאות:

CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
CREATE EXTENSION IF NOT EXISTS vector;

כדי לבדוק אילו תוספים הופעלו במסד הנתונים, מריצים את פקודת ה-SQL הבאה:

select extname, extversion from pg_extension;

צור טבלה

אתם יכולים ליצור טבלה באמצעות הצהרת ה-DDL שבהמשך ב-AlloyDB Studio:

CREATE TABLE apparels ( 
  id BIGINT, 
  category VARCHAR(100), 
  sub_category VARCHAR(50), 
  uri VARCHAR(200), 
  gsutil_uri VARCHAR(200),
  image VARCHAR(100), 
  content VARCHAR(2000), 
  pdt_desc VARCHAR(5000), 
  color VARCHAR(2000),
  gender VARCHAR(200),
  embedding vector(768),
  img_embeddings vector(1408),
  additional_specification VARCHAR(100000));

בעמודת ההטמעה יאוחסנו ערכי הווקטור של הטקסט.

מתן הרשאה

מריצים את ההצהרה הבאה כדי להעניק הרשאת הפעלה לפונקציה embedding:

GRANT EXECUTE ON FUNCTION embedding TO postgres;

נותנים לחשבון השירות של AlloyDB את התפקיד Vertex AI User

במסוף IAM של Google Cloud, מעניקים לחשבון השירות של AlloyDB (שנראה כך: service-<<PROJECT_NUMBER>>@gcp-sa-alloydb.iam.gserviceaccount.com) גישה לתפקיד Vertex AI User. ‫PROJECT_NUMBER יכיל את מספר הפרויקט.

אפשר גם להריץ את הפקודה הבאה מ-Cloud Shell Terminal:

PROJECT_ID=$(gcloud config get-value project)


gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"

טעינת נתונים למסד הנתונים

  1. מעתיקים את הצהרות השאילתה insert מהגיליון insert scripts sql אל העורך שצוין למעלה. אפשר להעתיק 10-50 הצהרות של INSERT כדי ליצור הדגמה מהירה של תרחיש השימוש הזה. רשימה נבחרת של תוספים מופיעה כאן בכרטיסייה Selected Inserts 25-30 rows.
  2. לוחצים על Run. התוצאות של השאילתה יופיעו בטבלה Results.

הערה חשובה:

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

5. יצירת הטמעות לנתונים

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

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

בעמודת ההטמעה יאוחסנו ערכי הווקטור של הטקסט בתיאור המוצר. בעמודה img_embeddings אפשר לאחסן הטמעות של תמונות (מולטימודאליות). כך תוכלו גם להשתמש בחיפוש לפי טקסט על בסיס מרחק מהתמונה. אבל בשיעור ה-Lab הזה נשתמש רק בהטמעות טקסט.

SELECT embedding('text-embedding-005', 'AlloyDB is a managed, cloud-hosted SQL database service.');

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

25a1d7ef0e49e91e.png

עדכון של שדה הווקטור abstract_embeddings

מריצים את פקודת ה-DML הבאה כדי לעדכן את תיאור התוכן בטבלה עם ההטמעות המתאימות:

UPDATE apparels SET embedding = embedding('text-embedding-005',pdt_desc)::vector 
WHERE pdt_desc IS NOT NULL;

אם אתם משתמשים בחשבון לחיוב עם קרדיט לתקופת ניסיון ב-Google Cloud, יכול להיות שתתקשו ליצור יותר מכמה הטמעות (נניח 20-25 לכל היותר). לכן, כדאי להגביל את מספר השורות בסקריפט ההוספה.

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

update apparels set img_embeddings = ai.image_embedding(
  model_id => 'multimodalembedding@001',
  image => gsutil_uri,
  mimetype => 'image/jpg')       
where gsutil_uri is not null

6. ערכת הכלים של MCP למסדי נתונים (AlloyDB)

מאחורי הקלעים, כלי עבודה חזקים ואפליקציה בנויה היטב מבטיחים פעולה חלקה.

‫MCP (Model Context Protocol) Toolbox for Databases מפשט את השילוב של AI גנרטיבי וכלים שמבוססים על סוכנים עם AlloyDB. הוא פועל כשרת קוד פתוח שמייעל את איגום החיבורים, האימות והחשיפה המאובטחת של פונקציות מסד הנתונים לסוכני AI או לאפליקציות אחרות.

באפליקציה שלנו השתמשנו ב-MCP Toolbox for Databases כשכבת הפשטה לכל השאילתות החכמות של החיפוש ההיברידי.

כדי להגדיר ולפרוס את Toolbox לתרחיש השימוש שלנו:

אפשר לראות שאחד ממסדי הנתונים שנתמכים על ידי MCP Toolbox for Databases הוא AlloyDB, וכבר הקצנו אותו בקטע הקודם, אז נמשיך להגדרת Toolbox.

  1. עוברים אל מסוף Cloud Shell ומוודאים שהפרויקט שלכם נבחר ומוצג בהנחיה של המסוף. מריצים את הפקודה הבאה מ-Cloud Shell Terminal כדי להיכנס לספריית הפרויקט:
mkdir gemini-cli-project

cd gemini-cli-project
  1. מריצים את הפקודה הבאה כדי להוריד ולהתקין את ארגז הכלים בתיקייה החדשה:
# see releases page for other versions
export VERSION=0.7.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox

הפעולה הזו אמורה ליצור את ארגז הכלים בספרייה הנוכחית. מעתיקים את הנתיב לארגז הכלים.

  1. עוברים אל Cloud Shell Editor (למצב עריכת קוד) ובתיקיית השורש של הפרויקט gemini-cli-project, מוסיפים קובץ בשם tools.yaml.
sources:
    alloydb:
        kind: "alloydb-postgres"
        project: "<<YOUR_PROJECT_ID>>"
        region: "us-central1"
        cluster: "vector-cluster"
        instance: "vector-instance"
        database: "postgres"
        user: "postgres"
        password: "alloydb"


tools:
   get-apparels:
    kind: postgres-sql
    source: alloydb
    description: Get all apparel data.
    statement: |
      select id, content, uri, category, sub_category,color,gender from apparels;

הסבר על הקובץ tools.yaml:

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

כלים מגדירים אילו פעולות סוכן יכול לבצע – כמו קריאה וכתיבה במקור. כלי מייצג פעולה שהסוכן יכול לבצע, כמו הפעלת הצהרת SQL. אפשר להגדיר את הכלי כמפה בקטע Tools בקובץ tools.yaml. בדרך כלל, כדי להשתמש בכלי צריך מקור.

לפרטים נוספים על הגדרת הקובץ tools.yaml, אפשר לעיין במסמכי התיעוד.

כפי שאפשר לראות בקובץ Tools.yaml שלמעלה, הכלי get-apparels מציג את כל פרטי הביגוד ממסד הנתונים.

7. הגדרת Gemini CLI

ב-Cloud Shell Editor, יוצרים תיקייה חדשה בשם .gemini בתוך התיקייה gemini-cli-project, ובתוכה יוצרים קובץ חדש בשם settings.json.

{
  "mcpServers": {
"AlloyDBServer": {
  "command": "/home/user/gemini-cli-project/toolbox",
  "args": ["--tools-file", "tools.yaml", "--stdio"]
}
  }
}

בקטע הפקודות בקטע הקוד שלמעלה, מחליפים את /home/user/gemini-cli-project/toolbox בנתיב אל toolbox.

התקנת Gemini CLI

לבסוף, בטרמינל של Cloud Shell, נתקין את Gemini CLI באותה ספרייה gemini-cli-project על ידי הפעלת הפקודה:

sudo npm install -g @google/gemini-cli

הגדרת מזהה הפרויקט

מוודאים שמזהה הפרויקט הפעיל מוגדר בסביבה:

export GOOGLE_CLOUD_PROJECT=<<YOUR_PROJECT_ID>>

איך מתחילים להשתמש ב-Gemini CLI

משורת הפקודה, מזינים את הפקודה:

gemini

אמורה להופיע תגובה שדומה לזו:

94f16dd7b5e2ca77.png

מאמתים את החשבון וממשיכים לשלב הבא.

8. איך מתחילים אינטראקציה עם Gemini CLI

משתמשים בפקודה /mcp כדי להציג את רשימת שרתי ה-MCP שהוגדרו.

83e1c54ec68add5c.png

אמורים לראות את שני השרתים של MCP שהגדרנו: GitHub ו-MCP Toolbox for Databases, שמופיעים יחד עם הכלים שלהם.

84b59c3027d370e2.png

במקרה שלי יש לי עוד כלים. לכן כדאי להתעלם ממנו בשלב הזה. הכלי get-apparels אמור להופיע בשרת AlloyDB MCP.

מתחילים להריץ שאילתות במסד הנתונים דרך ערכת הכלים של MCP

עכשיו ננסה לשאול שאלות בשפה טבעית כדי לאחזר תשובות ושאילתות לגבי מערך הנתונים שאיתו אנחנו עובדים:

> How many types of genders the apparel dataset has?

ae24caa625ef871b.png

> Give me the SQL that I can use to find the number of apparels that are footwear 

b75da65679031c7.png

> What are the unique sub categories that are there?
that I can use to find the number of apparels that are footwear 

c04fd9e113a4ed95.png

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

sources:
    alloydb:
        kind: "alloydb-postgres"
        project: "<<YOUR_PROJECT_ID>>"
        region: "us-central1"
        cluster: "vector-cluster"
        instance: "vector-instance"
        database: "postgres"
        user: "postgres"
        password: "alloydb"

tools:
   get-apparels:
    kind: postgres-sql
    source: alloydb
    description: Get all apparel data.
    statement: |
      select id, content, uri, category, sub_category,color,gender from apparels;

   filtered-vector-search:
    kind: postgres-sql
    source: alloydb
    description: Get the list of facet filter values from the retail dataset.
    parameters:
      - name: categories
        type: array
        description: List of categories preferred by the user.
        items:
          name: category 
          type: string
          description: Category value. 
      - name: subCategories
        type: array
        description: List of sub-categories preferred by the user.
        items:
          name: subCategory 
          type: string
          description: Sub-Category value.
      - name: colors
        type: array
        description: List of colors preferred by the user.
        items:
          name: color 
          type: string
          description: Color value.
      - name: genders
        type: array
        description: List of genders preferred by the user for apparel fitting.
        items:
          name: gender 
          type: string
          description: Gender name.
      - name: searchtext
        type: string
        description: Description of the product that the user wants to find database matches for.    
    statement: |
      SELECT id, content, uri, category, sub_category,color,gender FROM apparels 
      where category = ANY($1) and sub_Category = ANY($2) and color = ANY($3) and gender = ANY($4)
      order by embedding <=> embedding('text-embedding-005',$5)::vector limit 10

עכשיו ננסה חיפוש בשפה טבעית:

> How many yellow shirts are there for boys?

5c3890cf69e3dacb.png

4ec79f49b2eaebbd.png

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

9. פיתוח אפליקציות מואץ

היתרון בשימוש ביכולות של מסד נתונים ישירות בסביבת הפיתוח המשולבת (IDE) באמצעות Gemini CLI ו-MCP Toolbox הוא לא רק תיאורטי. המשמעות היא תהליכי עבודה מוחשיים שמשפרים את המהירות, במיוחד באפליקציה מורכבת כמו חוויית הקמעונאות ההיברידית שלנו. הנה כמה תרחישים:

1. חזרה מהירה על לוגיקת סינון המוצרים

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

בלי שילוב IDE:

סביר להניח שאעבור ללקוח SQL נפרד, אכתוב את השאילתה, אריץ אותה, אנתח את התוצאות, אחזור ל-IDE כדי לשנות את קוד האפליקציה, אעבור חזרה ללקוח ואחזור על הפעולות. החלפת ההקשרים הזו היא בעיה משמעותית.

עם Gemini CLI ו-MCP:

אני יכול להישאר בסביבת הפיתוח המשולבת (IDE) שלי ועוד:

  • שאילתה: אני יכול לעדכן במהירות את השאילתה ב-YAML באמצעות (מערך נתונים היפותטי) "SELECT DISTINCT brand FROM products WHERE category = ‘activewear' AND season = ‘summer'" ולנסות אותה ישירות במסוף שלי.
  • ניתוח נתונים: המותגים שמוחזרים מוצגים באופן מיידי. אם אני רוצה לראות את זמינות המוצרים של מותג מסוים במידה מסוימת, זו שאילתה מהירה נוספת שאפשר להריץ:"SELECT COUNT(*) FROM products WHERE brand = ‘SummitGear' AND size = ‘M' AND category = ‘activewear' AND season = ‘summer'"
  • שילוב קוד: לאחר מכן אוכל לשנות מיד את לוגיקת הסינון של חזית האתר או את הקריאות ל-API של העורף, על סמך התובנות המהירות האלה לגבי הנתונים בסביבת הפיתוח המשולבת (IDE), וכך לקצר משמעותית את לולאת המשוב.

2. שיפור החיפוש הווקטורי להמלצות על מוצרים

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

בלי שילוב IDE:

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

עם Gemini CLI ו-MCP:

  • ניתוח הטמעות: אני יכול לשלוח שאילתה ישירות לגבי הטמעות של מוצרים והמטא-נתונים שמשויכים להן: "SELECT product_id, name, vector_embedding FROM products WHERE category = ‘running shoes' AND gender = ‘male' LIMIT 10"
  • השוואה: אני יכול גם לבצע בדיקה מהירה של הדמיון הווקטורי בפועל בין מוצר נבחר לבין ההמלצות שלו, ישירות שם. לדוגמה, אם מוצר א' מומלץ למשתמשים שהתעניינו במוצר ב', אפשר להריץ שאילתה כדי לאחזר את הטמעות הווקטורים שלהם ולהשוות ביניהן.
  • ניפוי באגים: כך אפשר לנפות באגים מהר יותר ולבדוק השערות. האם מודל ההטמעה מתנהג כמצופה? האם יש אנומליות בנתונים שמשפיעות על איכות ההמלצות? אני יכול לקבל תשובות ראשוניות בלי לצאת מסביבת הקידוד שלי.

3. הסבר על סכימה ועל חלוקת נתונים לתכונות חדשות

נניח שאנחנו מתכננים להוסיף תכונה של ביקורות לקוחות. לפני שכותבים את ה-API של ה-Backend, צריך להבין את נתוני הלקוחות הקיימים ואת מבנה הביקורות.

בלי שילוב IDE:

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

עם Gemini CLI ו-MCP:

  • ניתוח סכימה: אני יכול פשוט לשלוח שאילתה לטבלה בקובץ ה-YAML ולהריץ אותה ישירות במסוף.
  • דגימת נתונים: לאחר מכן אוכל לשלוף נתונים לדוגמה כדי להבין את הדמוגרפיה של הלקוחות ואת היסטוריית הרכישות שלהם: "SELECT customer_id, name, signup_date, total_orders FROM customers ORDER BY signup_date DESC LIMIT 5"
  • תכנון: הגישה המהירה לסקירה ולחלוקת הנתונים עוזרת לנו לקבל החלטות מושכלות לגבי עיצוב טבלת הביקורות החדשה, אילו מפתחות זרים להגדיר ואיך לקשר ביעילות בין ביקורות ללקוחות ולמוצרים, וכל זה לפני שכותבים שורה אחת של קוד אפליקציה לתכונה החדשה.

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

10. הסרת המשאבים

כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם במאמר הזה:

  1. במסוף Google Cloud, עוברים לדף resource manager.
  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
  4. לחלופין, אפשר פשוט למחוק את אשכול AlloyDB (כדי לשנות את המיקום בהיפר-קישור הזה, אם לא בחרתם ב-us-central1 לאשכול בזמן ההגדרה) שיצרנו זה עתה עבור הפרויקט הזה, על ידי לחיצה על הלחצן DELETE CLUSTER (מחיקת האשכול).

11. מזל טוב

מעולה! הצלחתם לשלב את MCP Toolbox ישירות בסביבת הפיתוח המשולבת (IDE) שלכם כדי ליצור אינטראקציה חלקה עם AlloyDB, ולהשתמש ב-Gemini CLI כדי ליצור אינטראקציה עם מערך הנתונים של המסחר האלקטרוני הקמעונאי שלנו ולכתוב שאילתות שבדרך כלל דורשות כלים נפרדים. למדתם דרכים חדשות לבדוק ולהבין את הנתונים – מבדיקת מבני הטבלה ועד לביצוע בדיקות מהירות של תקינות הנתונים – והכול באמצעות ממשקי שורת פקודה מוכרים בתוך סביבת הפיתוח המשולבת שלנו.

אני רוצה שתשכפל את repo, תנתח אותו ותעדכן אותי אם שיפרת את האפליקציה באמצעות Gemini CLI ו-MCP Toolbox for Databases.

כדי לקבל מידע נוסף על אפליקציות מבוססות-נתונים כאלה שנבנו באמצעות Gemini CLI,‏ MCP ונפרסו בסביבות זמן ריצה ללא שרתים, אתם יכולים להירשם לעונה הקרובה של Code Vipassana, שבה תוכלו להשתתף בסדנאות מעשיות בהנחיית מדריכים ולקבל מידע נוסף על סדנאות קוד כאלה.