מדריך למתחילים בנושא Spanner Omni

במדריך הזה מוסבר איך להתחיל להשתמש ב-Spanner Omni ולבדוק חלק מהתכונות שלו על ידי הפעלת קונטיינר של שרת יחיד.

הפעלה של מאגר תגים יחיד בצד השרת

כדי להגדיר ולהפעיל מיכל Spanner Omni, בצע את השלבים הבאים:

  1. יוצרים נפח אחסון של Docker לאחסון נתונים של Spanner Omni. שימוש בווליום מונע אובדן נתונים אם הקונטיינר נמחק בטעות.

    docker volume create spanner
    
  2. מפעילים את שרת Spanner Omni:

    docker run -d --network host --name spanneromni -v "spanner:/spanner" us-docker.pkg.dev/spanner-omni/images/spanner-omni:2026.r3-beta start-single-server
    

    הדגל --network host פותח את הפורטים עבור Spanner Omni במחשב המארח. בטבלה הבאה מתוארים הפורטים שבהם נעשה שימוש ב-Spanner Omni:

    טווח יציאות מטרה
    15000 עד 15025 שרתי Spanner Omni
    15026 שרת מסוף Spanner Omni
  3. ודא שהקונטיינר פועל:

    docker ps
    
  4. יוצרים מסד נתונים לדוגמה.

    Spanner Omni כולל פקודות ליצירת מסד נתונים לדוגמה ולאכלוסו בנתונים. הפקודה הבאה יוצרת מסד נתונים לדוגמה בשם retail-sample.

    docker exec -it spanneromni /google/spanner/bin/spanner databases create-sample-db retail --database-name=retail-sample
    
  5. ודא שמסד הנתונים נוצר:

    docker exec -it spanneromni /google/spanner/bin/spanner databases list
    

    הפלט מראה שנוצר מסד נתונים בשם retail-sample.

  6. בדוק את הסכימה של מסד הנתונים:

    docker exec -it spanneromni /google/spanner/bin/spanner databases ddl describe retail-sample
    

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

  7. התחברו למסד הנתונים ופתחו את מעטפת ה-SQL:

    docker exec -it spanneromni /google/spanner/bin/spanner sql --database=retail-sample
    

    מופיעה ההנחיה spanner-cli>, שמאפשרת להריץ שאילתות.

  8. עיון בטבלאות של מסד הנתונים:

    SHOW TABLES;
    

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

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

חיפוש מוצרים לפי שם

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

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

SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Name_Tokens, 'phone')
ORDER BY PriceUSD DESC
LIMIT 10;

חיפוש מוצרים לפי תיאור

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

בדוגמה הבאה מחפשים את waterproof בכל קטגוריות המוצרים:

SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Description_Tokens, 'waterproof')
ORDER BY PriceUSD
LIMIT 10;

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

מחליפים את PRODUCT_ID במזהה של המוצר שרוצים לקבל לגביו המלצות:

WITH
 ReferenceProduct AS (
   SELECT ProductEmbedding
   FROM Products
   WHERE ProductID = PRODUCT_ID
 )
SELECT p.ProductID, p.Name, p.Description, p.PriceUSD
FROM Products p, ReferenceProduct rp
WHERE p.ProductID != PRODUCT_ID AND p.ProductEmbedding IS NOT NULL
ORDER BY
 COSINE_DISTANCE(
   rp.ProductEmbedding,
   p.ProductEmbedding)
LIMIT 5;

אחזור היסטוריית הרכישות של משתמש

אחזור היסטוריית הרכישות המלאה עבור משתמש ספציפי, כולל פרטי מוצר ומחירים היסטוריים.

מחליפים את USER_ID במזהה של משתמש היעד:

SELECT o.OrderID, o.OrderDate, p.Name, p.Category, oi.Quantity, oi.PriceAtOrderUSD
FROM Orders o
JOIN OrderItems oi
 ON o.OrderID = oi.OrderID
JOIN Products p
 ON oi.ProductID = p.ProductID
WHERE o.UserID = USER_ID
ORDER BY o.OrderDate DESC;

חיפוש הזמנות לפי סטטוס

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

SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE SEARCH(OrderStatus_Tokens, 'shipped')
ORDER BY OrderDate DESC
LIMIT 20;

זיהוי הזמנות עם ערך גבוה

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

SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE
 OrderDate BETWEEN 'START_DATE' AND 'END_DATE'
 AND TotalAmountUSD > 500
ORDER BY TotalAmountUSD DESC
LIMIT 10;

ניתוח ביצועי המכירות לפי קטגוריה

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

SELECT
 p.Category,
 COUNT(oi.OrderItemID) AS total_sales,
 SUM(oi.Quantity) AS units_sold,
 SUM(oi.PriceAtOrderUSD * oi.Quantity) AS revenue
FROM Products p
JOIN OrderItems oi
 ON p.ProductID = oi.ProductID
JOIN Orders o
 ON oi.OrderID = o.OrderID
WHERE o.OrderDate BETWEEN 'START_DATE' AND 'END_DATE'
GROUP BY p.Category
ORDER BY revenue DESC;

חיפוש תשלומים לפי שיטת תשלום

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

SELECT p.PaymentID, p.OrderID, p.PaymentDate, p.AmountUSD, p.Status
FROM Payments p
WHERE SEARCH(p.PaymentMethod_Tokens, 'credit card')
ORDER BY p.PaymentDate DESC
LIMIT 20;

חיפוש משתמשים שרכשו מוצר באמצעות שאילתת גרף

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

מחליפים את PRODUCT_ID במזהה מוצר היעד:

GRAPH ECommerceGraph
  MATCH (p:Products { ProductID: PRODUCT_ID })<-[:OrderItems]-(o:Orders)
  MATCH (u:Users)
  WHERE u.UserID = o.UserID
  RETURN DISTINCT u.UserID, u.Email;

התנסות במסוף Spanner Omni

Spanner Omni כולל קונסולת Spanner Omni מבוססת אינטרנט לניטור וניהול. כדי להפעיל את מסוף Spanner Omni, מריצים את הפקודה הבאה:

docker exec -it spanneromni /google/spanner/bin/omni-jre/bin/java -jar /google/spanner/bin/spanner-console

כדי לגשת למסוף Spanner Omni, עוברים אל http://localhost:15026 בדפדפן. במסוף Spanner Omni מוצג המידע הבא:

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

  • ‫Databases: רשימה של כל מסדי הנתונים בפריסה.

  • גיבויים: מוצג מידע על גיבויים שבוצעו.

  • ‫System Insights: מציג מדדי תקינות כמו ניצול המעבד (CPU), הזיכרון והאחסון, וגם מדדי ביצועים כמו זמן אחזור וקצב העברת נתונים.

  • תובנות לגבי שאילתות: מוצגות השאילתות המובילות שצורכות משאבי CPU.

מידע נוסף זמין במאמר בנושא שימוש במסוף Spanner Omni.

המאמרים הבאים