本快速入門導覽課程說明如何開始使用 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 start-single-server--network host旗標會開啟主體機器上 Spanner Omni 的通訊埠。下表說明 Spanner Omni 使用的連接埠:通訊埠範圍 目的 15000至15025Spanner Omni 伺服器 15026Spanner 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 Shell:
docker exec -it spanneromni /google/spanner/bin/spanner sql --database=retail-sample畫面上會顯示
spanner-cli>提示,讓您執行查詢。探索資料庫資料表:
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 控制台」。