本快速入门介绍了如何开始使用 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;
按状态查找订单
使用全文搜索按订单状态查找订单。这样一来,您就可以灵活地匹配“shipped”或“shipping”等字词。
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 利用率和数据库版本。
数据库:列出部署中的所有数据库。
备份:显示有关已执行备份的信息。
System Insights:显示 CPU、内存和存储空间利用率等健康状况指标,以及延迟时间和吞吐量等性能指标。
查询分析洞见:显示消耗 CPU 资源最多的查询。
如需了解详情,请参阅使用 Spanner Omni 控制台。