במדריך הזה מוסבר איך להתחיל להשתמש ב-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.r3-beta 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 /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.