Guia de início rápido do Spanner Omni

Este início rápido explica como começar a usar o Spanner Omni e conferir alguns dos recursos dele executando um contêiner de servidor único.

Executar um contêiner de servidor único

Para configurar e executar um contêiner do Spanner Omni, siga estas etapas:

  1. Crie um volume do Docker para armazenar dados do Spanner Omni. O uso de um volume evita a perda de dados se o contêiner for excluído acidentalmente.

    docker volume create spanner
    
  2. Inicie o servidor do 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
    

    A flag --network host abre as portas do Spanner Omni na máquina host. A tabela a seguir descreve as portas usadas pelo Spanner Omni:

    Intervalo de portas Finalidade
    15000 a 15025 Servidores do Spanner Omni
    15026 Servidor do console do Spanner Omni
  3. Verifique se o contêiner está em execução:

    docker ps
    
  4. Crie um banco de dados de exemplo.

    O Spanner Omni inclui comandos para criar um banco de dados de exemplo e preenchê-lo com dados. O comando a seguir cria um banco de dados de exemplo chamado retail-sample.

    docker exec -it spanneromni /google/spanner/bin/spanner databases create-sample-db retail --database-name=retail-sample
    
  5. Verifique se o banco de dados foi criado:

    docker exec -it spanneromni /google/spanner/bin/spanner databases list
    

    A saída mostra que um banco de dados chamado retail-sample foi criado.

  6. Confira o esquema do banco de dados:

    docker exec -it spanneromni /google/spanner/bin/spanner databases ddl describe retail-sample
    

    A saída mostra o DDL de todas as tabelas, relações, índices de pesquisa, índices de vetores e gráficos. Esse esquema de vários modelos representa um ambiente de e-commerce que acompanha a jornada do cliente, desde a navegação até o checkout. Ele usa recursos avançados, como índices de pesquisa de texto completo, incorporações de vetores e uma camada de gráfico de propriedades.

  7. Conecte-se ao banco de dados e abra o shell SQL:

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

    O prompt spanner-cli> aparece, permitindo que você execute consultas.

  8. Confira as tabelas do banco de dados:

    SHOW TABLES;
    

Executar consultas para analisar o conjunto de dados

O banco de dados de exemplo inclui dados de produtos, usuários, pedidos e pagamentos. Use as consultas a seguir para analisar os recursos de vários modelos do Spanner Omni. Confira a seguir consultas de exemplo que demonstram algumas das funcionalidades do Spanner Omni.

Pesquisar produtos por nome

Pesquise produtos usando a pesquisa de texto completo. Essa consulta usa a função SEARCH() na coluna Name_Tokens, que contém tokens pré-processados para correspondência eficiente.

O exemplo a seguir pesquisa por phone para encontrar smartphones e telefones:

SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Name_Tokens, 'phone')
ORDER BY PriceUSD DESC
LIMIT 10;

Pesquisar produtos por descrição

Pesquise produtos com base em características ou recursos específicos mencionados nas descrições.

O exemplo a seguir pesquisa por waterproof em todas as categorias de produtos:

SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Description_Tokens, 'waterproof')
ORDER BY PriceUSD
LIMIT 10;

Use a pesquisa de similaridade de vetores para encontrar produtos semanticamente semelhantes a um produto de referência. Isso é útil para criar mecanismos de recomendação. Essa consulta usa COSINE_DISTANCE() com vetores ProductEmbedding.

Substitua PRODUCT_ID pelo ID do produto para o qual você quer recomendações:

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;

Recuperar o histórico de compras do usuário

Recupere o histórico de compras completo de um usuário específico, incluindo detalhes do produto e preços históricos.

Substitua USER_ID pelo ID do usuário de destino:

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;

Encontrar pedidos por status

Use a pesquisa de texto completo para encontrar pedidos pelo status. Isso permite a correspondência flexível de termos como "enviado" ou "em trânsito".

SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE SEARCH(OrderStatus_Tokens, 'shipped')
ORDER BY OrderDate DESC
LIMIT 20;

Identificar pedidos de alto valor

Identifique pedidos de alto valor em um período específico para análise de negócios.

SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE
 OrderDate BETWEEN 'START_DATE' AND 'END_DATE'
 AND TotalAmountUSD > 500
ORDER BY TotalAmountUSD DESC
LIMIT 10;

Analisar o desempenho de vendas por categoria

Calcule métricas de vendas, como unidades vendidas e receita total, agregadas por categoria dos produtos.

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;

Pesquisar pagamentos por método

Use a pesquisa de texto completo para encontrar pagamentos feitos usando métodos específicos, como "cartão de crédito".

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;

Encontrar usuários que compraram um produto usando a consulta de gráfico

Use a sintaxe de consulta de gráfico para percorrer relações e encontrar todos os usuários que compraram um produto específico.

Substitua PRODUCT_ID pelo ID do produto de destino:

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;

Conferir o console do Spanner Omni

O Spanner Omni inclui um console baseado na Web para monitoramento e gerenciamento. Para iniciar o console do Spanner Omni, execute o comando a seguir:

docker exec -it spanneromni /app/bin/spanner-console

Para acessar o console do Spanner Omni, acesse http://localhost:15026 no navegador. O console do Spanner Omni fornece as seguintes informações:

Para mais informações, consulte Usar o console do Spanner Omni.

A seguir