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;

按状态查找订单

使用全文搜索按订单状态查找订单。这样一来,您就可以灵活地匹配“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 控制台

后续步骤