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 contenedor de servidor único
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 accidentalmente.
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.r3-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:Rango de puertos Objetivo 15000a15025Servidores de Spanner Omni 15026Servidor de la consola de Spanner Omni Asegúrate de que el contenedor esté en ejecución:
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 para todas las tablas, las relaciones, los índices de búsqueda, los índices de vectores y los grafos. Este esquema multimodelo representa un entorno de comercio electrónico que hace un seguimiento del recorrido del cliente desde la exploración hasta el proceso de compra. Usa funciones avanzadas, como índices de búsqueda de texto completo, incorporaciones de vectores y una capa de grafos de propiedades.
Conéctate a la base de datos y abre el shell de SQL:
docker exec -it spanneromni /google/spanner/bin/spanner sql --database=retail-sampleAparecerá el mensaje
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 multimodelo de Spanner Omni. A continuación, se incluyen consultas de muestra que demuestran algunas de las funciones de Spanner Omni.
Busca productos por nombre
Busca productos con la búsqueda de texto completo. Esta consulta usa la función SEARCH() en la columna Name_Tokens, que contiene tokens preprocesados para una coincidencia 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;
Busca productos por descripción
Busca productos en función de características o funciones específicas 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;
Encuentra productos similares con la búsqueda de vectores
Usa 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 consulta 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;
Recupera 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;
Busca pedidos por estado
Usa la búsqueda de texto completo para encontrar pedidos por su estado. Esto permite una coincidencia flexible de términos como "enviado" o "en envío".
SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE SEARCH(OrderStatus_Tokens, 'shipped')
ORDER BY OrderDate DESC
LIMIT 20;
Identifica pedidos de alto valor
Identifica pedidos de alto valor 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
Calcula 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;
Busca 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;
Encuentra usuarios que compraron un producto con una consulta de grafos
Usa la sintaxis de consulta de grafos para recorrer las relaciones y encontrar a 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 /google/spanner/bin/omni-jre/bin/java -jar /google/spanner/bin/spanner-console
Para acceder a la consola de Spanner Omni, navega 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.
Databases: Enumera todas las bases de datos de tu implementación.
Copias de seguridad: Muestra información sobre las copias de seguridad realizadas.
System Insights: Muestra métricas de estado, como el uso de CPU, memoria y almacenamiento, así como métricas de rendimiento, como la latencia y el procesamiento.
Query insights: Muestra las principales consultas que consumen recursos de CPU.
Para obtener más información, consulta Usa la consola de Spanner Omni.