En esta guía de inicio rápido, se explica cómo comenzar a usar Spanner Omni y explorar algunas de sus funciones ejecutando un contenedor de un solo servidor.
Ejecuta un solo contenedor de servidor
Para configurar y ejecutar un contenedor de Spanner Omni, sigue estos pasos:
Crea un volumen de Docker para almacenar datos de Spanner Omni. El uso de un volumen evita la pérdida de datos si el contenedor se borra por accidente.
docker volume create spannerInicia el servidor de 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-serverLa marca
--network hostabre los puertos para Spanner Omni en la máquina anfitrión. En la siguiente tabla, se describen los puertos que usa Spanner Omni:Intervalo de puerto Objetivo De 15000a15025Servidores de Spanner Omni 15026Servidor de la consola de Spanner Omni Asegúrate de que el contenedor se esté ejecutando:
docker psCrea una base de datos de muestra.
Spanner Omni incluye comandos para crear una base de datos de muestra y propagarla con datos. El siguiente comando crea una base de datos de muestra llamada
retail-sample.docker exec -it spanneromni /google/spanner/bin/spanner databases create-sample-db retail --database-name=retail-sampleVerifica que se haya creado la base de datos:
docker exec -it spanneromni /google/spanner/bin/spanner databases listEl resultado muestra que se creó una base de datos llamada
retail-sample.Verifica el esquema de la base de datos:
docker exec -it spanneromni /google/spanner/bin/spanner databases ddl describe retail-sampleEl resultado muestra el DDL de todas las tablas, relaciones, índices de búsqueda, índices de vectores y gráficos. Este esquema de varios modelos representa un entorno de comercio electrónico que hace un seguimiento del recorrido del cliente, desde la navegación hasta la confirmación de la compra. Utiliza funciones avanzadas, como índices de búsqueda de texto completo, embeddings de vectores y una capa de gráfico de propiedades.
Conéctate a la base de datos y abre la shell de SQL:
docker exec -it spanneromni /google/spanner/bin/spanner sql --database=retail-sampleAparecerá el mensaje de
spanner-cli>, que te permitirá ejecutar consultas.Explora las tablas de la base de datos:
SHOW TABLES;
Ejecuta consultas para explorar el conjunto de datos
La base de datos de muestra incluye datos de productos, usuarios, pedidos y pagos. Usa las siguientes consultas para explorar las capacidades de varios modelos de Spanner Omni. A continuación, se muestran ejemplos de consultas que demuestran algunas de las funciones de Spanner Omni.
Cómo buscar productos por nombre
Buscar productos con la búsqueda en el texto completo Esta consulta usa la función SEARCH() en la columna Name_Tokens, que contiene tokens procesados previamente para una correlación eficiente.
En el siguiente ejemplo, se busca phone para encontrar smartphones y teléfonos:
SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Name_Tokens, 'phone')
ORDER BY PriceUSD DESC
LIMIT 10;
Cómo buscar productos por descripción
Buscar productos según las características o los atributos específicos que se mencionan en sus descripciones
En el siguiente ejemplo, se busca waterproof en todas las categorías de productos:
SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Description_Tokens, 'waterproof')
ORDER BY PriceUSD
LIMIT 10;
Cómo encontrar productos similares con la búsqueda de vectores
Usar la búsqueda de similitud de vectores para encontrar productos semánticamente similares a un producto de referencia Esto es útil para compilar motores de recomendación. Esta búsqueda usa COSINE_DISTANCE() con vectores ProductEmbedding.
Reemplaza PRODUCT_ID por el ID del producto para el que deseas obtener recomendaciones:
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;
Cómo recuperar el historial de compras del usuario
Recupera el historial de compras completo de un usuario específico, incluidos los detalles del producto y los precios históricos.
Reemplaza USER_ID por el ID del usuario objetivo:
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;
Cómo encontrar pedidos por estado
Usa la búsqueda en el texto completo para encontrar pedidos por su estado. Esto permite una coincidencia flexible de términos como "enviado" o "envío".
SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE SEARCH(OrderStatus_Tokens, 'shipped')
ORDER BY OrderDate DESC
LIMIT 20;
Identifica pedidos valiosos
Identifica los pedidos valiosos dentro de un período específico para el análisis empresarial.
SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE
OrderDate BETWEEN 'START_DATE' AND 'END_DATE'
AND TotalAmountUSD > 500
ORDER BY TotalAmountUSD DESC
LIMIT 10;
Analiza el rendimiento de ventas por categoría
Calcular las métricas de ventas, como las unidades vendidas y los ingresos totales, agregadas por categoría de producto
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;
Cómo buscar pagos por método
Usa la búsqueda de texto completo para encontrar pagos realizados con métodos específicos, como "tarjeta 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;
Cómo encontrar usuarios que compraron un producto con una consulta de gráfico
Usa la sintaxis de consultas de grafos para recorrer las relaciones y encontrar todos los usuarios que compraron un producto específico.
Reemplaza PRODUCT_ID por el ID del producto objetivo:
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;
Explora la consola de Spanner Omni
Spanner Omni incluye una consola de Spanner Omni basada en la Web para la supervisión y la administración. Para iniciar la consola de Spanner Omni, ejecuta el siguiente comando:
docker exec -it spanneromni /app/bin/spanner-console
Para acceder a la consola de Spanner Omni, ve a http://localhost:15026 en tu navegador. La consola de Spanner Omni proporciona la siguiente información:
Descripción general: Muestra el uso general de la CPU y la versión de la base de datos.
Bases de datos: Enumera todas las bases de datos de tu implementación.
Copias de seguridad: Muestra información sobre las copias de seguridad realizadas.
Estadísticas del sistema: Muestra métricas de estado, como el uso de CPU, memoria y almacenamiento, así como métricas de rendimiento, como la latencia y la capacidad de procesamiento.
Estadísticas de consultas: Muestra las principales consultas que consumen recursos de CPU.
Para obtener más información, consulta Usa la consola de Spanner Omni.