במדריך המקוצר הזה מוסבר איך להתחיל להשתמש ב-Spanner Omni ולבדוק חלק מהתכונות שלו על ידי הפעלת קונטיינר של שרת יחיד.
הפעלה של מאגר תגים יחיד בצד השרת
כדי להגדיר ולהפעיל מאגר Spanner Omni, מבצעים את השלבים הבאים:
יוצרים נפח אחסון של Docker לאחסון נתונים של Spanner Omni. שימוש בווליום מונע אובדן נתונים אם הקונטיינר נמחק בטעות.
docker volume create spannerמפעילים את שרת Spanner Omni:
docker run -d --network host --name spanneromni -v "spanner:/spanner" us-docker.pkg.dev/spanner-omni/images/spanner-omni:2026.r1-beta.2 start-single-serverהדגל
--network hostפותח את הפורטים עבור Spanner Omni במחשב המארח. בטבלה הבאה מתוארים הפורטים שבהם נעשה שימוש ב-Spanner Omni:טווח יציאות מטרה 15000עד15025שרתי Spanner Omni 15026שרת מסוף Spanner Omni מוודאים שהקונטיינר פועל:
docker psיוצרים מסד נתונים לדוגמה.
Spanner Omni כולל פקודות ליצירת מסד נתונים לדוגמה ולאכלוס שלו בנתונים. הפקודה הבאה יוצרת מסד נתונים לדוגמה בשם
retail-sample.docker exec -it spanneromni /google/spanner/bin/spanner databases create-sample-db retail --database-name=retail-sampleמוודאים שמסד הנתונים נוצר:
docker exec -it spanneromni /google/spanner/bin/spanner databases listהפלט מראה שנוצר מסד נתונים בשם
retail-sample.בודקים את הסכימה של מסד הנתונים:
docker exec -it spanneromni /google/spanner/bin/spanner databases ddl describe retail-sampleבפלט מוצג DDL לכל הטבלאות, הקשרים, אינדקסים של חיפושים, אינדקסים של וקטורים וגרפים. סכימת הנתונים הזו מבוססת על כמה מודלים ומייצגת סביבת מסחר אלקטרוני שבה מתבצע מעקב אחרי מסלול להמרת לקוח, החל משלב העיון ועד שלב התשלום. הוא משתמש בתכונות מתקדמות כמו אינדקסים של חיפוש טקסט מלא, הטמעות וקטוריות ושכבת גרף מאפיינים.
מתחברים למסד הנתונים ופותחים את מעטפת ה-SQL:
docker exec -it spanneromni /google/spanner/bin/spanner sql --database=retail-sampleמופיעה ההנחיה
spanner-cli>, שמאפשרת להריץ שאילתות.עיון בטבלאות של מסד הנתונים:
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 /app/bin/spanner-console
כדי לגשת למסוף Spanner Omni, עוברים אל http://localhost:15026 בדפדפן. במסוף Spanner Omni מוצג המידע הבא:
סקירה כללית: מוצג כאן השימוש הכולל במעבד וגרסת מסד הנתונים.
Databases: רשימה של כל מסדי הנתונים בפריסה.
גיבויים: מוצג מידע על גיבויים שבוצעו.
System Insights: מציג מדדי תקינות כמו ניצול המעבד (CPU), הזיכרון והאחסון, וגם מדדי ביצועים כמו זמן אחזור וקצב העברת נתונים.
תובנות לגבי שאילתות: מוצגות השאילתות המובילות שצורכות משאבי CPU.
מידע נוסף זמין במאמר בנושא שימוש במסוף Spanner Omni.