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.r1-beta start-single-server
    

    --network host 旗標會開啟主體機器上 Spanner Omni 的通訊埠。下表說明 Spanner Omni 使用的連接埠:

    通訊埠範圍 目的
    1500015025 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 Shell:

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

    畫面上會顯示 spanner-cli> 提示,讓您執行查詢。

  8. 探索資料庫資料表:

    SHOW TABLES;
    

執行查詢來探索資料集

範例資料庫包含產品、使用者、訂單和付款資料。請使用下列查詢,探索 Spanner Omni 的多模型功能。以下是範例查詢,說明 Spanner Omni 的部分功能。

依名稱搜尋產品

使用全文搜尋功能搜尋產品。這項查詢會對 Name_Tokens 資料欄使用 SEARCH() 函式,該資料欄包含預先處理的權杖,可有效率地進行比對。

以下範例會搜尋 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 替換為要取得建議的產品 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 替換為目標使用者的 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 替換為目標產品 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 控制台提供下列資訊:

  • 總覽:顯示整體 CPU 使用率和資料庫版本。

  • 資料庫:列出部署項目中的所有資料庫。

  • 備份:顯示已執行備份的相關資訊。

  • 系統洞察:顯示健康狀態指標,例如 CPU、記憶體和儲存空間用量,以及延遲時間和輸送量等效能指標。

  • 查詢深入分析:顯示耗用最多 CPU 資源的查詢。

詳情請參閱「使用 Spanner Omni 控制台」。

後續步驟