Questa guida rapida spiega come iniziare a utilizzare Spanner Omni ed esplorare alcune delle sue funzionalità eseguendo un container a server singolo.
Eseguire un contenitore del server singolo
Per configurare ed eseguire un container Spanner Omni:
Crea un volume Docker per archiviare i dati di Spanner Omni. L'utilizzo di un volume impedisce la perdita di dati se il container viene eliminato accidentalmente.
docker volume create spannerAvvia il server 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-serverIl flag
--network hostapre le porte per Spanner Omni sulla macchina host. La seguente tabella descrive le porte utilizzate da Spanner Omni:Intervallo porte Finalità 15000to15025Server Spanner Omni 15026Server della console Spanner Omni Verifica che il container sia in esecuzione:
docker psCrea un database di esempio.
Spanner Omni include comandi per creare un database di esempio e compilarlo con i dati. Il seguente comando crea un database di esempio denominato
retail-sample.docker exec -it spanneromni /google/spanner/bin/spanner databases create-sample-db retail --database-name=retail-sampleVerifica che il database sia stato creato:
docker exec -it spanneromni /google/spanner/bin/spanner databases listL'output mostra che è stato creato un database denominato
retail-sample.Controlla lo schema del database:
docker exec -it spanneromni /google/spanner/bin/spanner databases ddl describe retail-sampleL'output mostra il DDL per tutte le tabelle, le relazioni, gli indici di ricerca, gli indici vettoriali e i grafici. Questo schema multimodale rappresenta un ambiente di e-commerce che tiene traccia del customer journey dalla navigazione al checkout. Utilizza funzionalità avanzate come gli indici di ricerca a testo intero, gli incorporamenti vettoriali e un livello di grafico delle proprietà.
Connettiti al database e apri la shell SQL:
docker exec -it spanneromni /google/spanner/bin/spanner sql --database=retail-sampleViene visualizzato il prompt
spanner-cli>, che consente di eseguire query.Esplora le tabelle del database:
SHOW TABLES;
Eseguire query per esplorare il set di dati
Il database di esempio include dati per prodotti, utenti, ordini e pagamenti. Utilizza le seguenti query per esplorare le funzionalità multimodali di Spanner Omni. Di seguito sono riportate query di esempio che illustrano alcune delle funzionalità di Spanner Omni.
Cercare prodotti per nome
Cerca i prodotti utilizzando la ricerca a testo intero. Questa query utilizza la funzione SEARCH() sulla colonna Name_Tokens, che contiene token pre-elaborati per una corrispondenza efficiente.
Il seguente esempio cerca phone per trovare smartphone e telefoni:
SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Name_Tokens, 'phone')
ORDER BY PriceUSD DESC
LIMIT 10;
Cercare prodotti per descrizione
Cerca i prodotti in base a caratteristiche o funzionalità specifiche menzionate nelle relative descrizioni.
Il seguente esempio cerca waterproof in tutte le categorie di prodotti:
SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Description_Tokens, 'waterproof')
ORDER BY PriceUSD
LIMIT 10;
Trovare prodotti simili utilizzando la ricerca vettoriale
Utilizza la ricerca di similarità vettoriale per trovare prodotti semanticamente simili a un prodotto di riferimento. Questa funzionalità è utile per creare motori per suggerimenti. Questa query utilizza COSINE_DISTANCE() con i vettori ProductEmbedding.
Sostituisci PRODUCT_ID con l'ID del prodotto per il quale vuoi ricevere suggerimenti:
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;
Recuperare la cronologia acquisti dell'utente
Recupera la cronologia acquisti completa di un utente specifico, inclusi i dettagli del prodotto e i prezzi storici.
Sostituisci USER_ID con l'ID dell'utente di destinazione:
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;
Trovare gli ordini in base allo stato
Utilizza la ricerca a testo intero per trovare gli ordini in base al loro stato. In questo modo è possibile trovare corrispondenze flessibili per termini come "spedito" o "spedizione".
SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE SEARCH(OrderStatus_Tokens, 'shipped')
ORDER BY OrderDate DESC
LIMIT 20;
Identificare gli ordini di alto valore
Identifica gli ordini di alto valore in un intervallo di date specifico per l'analisi aziendale.
SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE
OrderDate BETWEEN 'START_DATE' AND 'END_DATE'
AND TotalAmountUSD > 500
ORDER BY TotalAmountUSD DESC
LIMIT 10;
Analizzare il rendimento delle vendite per categoria
Calcola le metriche di vendita, come le unità vendute e le entrate totali, aggregate per categoria di prodotto.
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;
Cercare i pagamenti per metodo
Utilizza la ricerca a testo intero per trovare i pagamenti effettuati utilizzando metodi specifici, ad esempio "carta di credito".
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;
Trovare gli utenti che hanno acquistato un prodotto utilizzando la query di grafi
Utilizza la sintassi delle query di grafi per attraversare le relazioni e trovare tutti gli utenti che hanno acquistato un prodotto specifico.
Sostituisci PRODUCT_ID con l'ID prodotto di destinazione:
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;
Esplorare la console Spanner Omni
Spanner Omni include una console Spanner Omni basata sul web per il monitoraggio e la gestione. Per avviare la console Spanner Omni, esegui il seguente comando:
docker exec -it spanneromni /app/bin/spanner-console
Per accedere alla console Spanner Omni, vai a http://localhost:15026 nel browser. La console Spanner Omni fornisce le seguenti informazioni:
Panoramica: mostra l'utilizzo totale della CPU e la versione del database.
Database: elenca tutti i database nel deployment.
Backup: mostra informazioni sui backup eseguiti.
Informazioni sul sistema: mostra le metriche di integrità come l'utilizzo di CPU, memoria e spazio di archiviazione, nonché le metriche sul rendimento come la latenza e la velocità effettiva.
Informazioni sulle query: mostra le query principali che consumano risorse CPU.
Per ulteriori informazioni, consulta Utilizzare la console Spanner Omni.