Guida rapida di Spanner Omni

Questa guida rapida spiega come iniziare a utilizzare Spanner Omni ed esplorare alcune delle sue funzionalità eseguendo un container a server singolo.

Esegui un singolo contenitore del server

Per configurare ed eseguire un contenitore Spanner Omni:

  1. Crea un volume Docker per archiviare i dati di Spanner Omni. L'utilizzo di un volume impedisce la perdita di dati se il contenitore viene eliminato accidentalmente.

    docker volume create spanner
    
  2. Avvia il server Spanner Omni:

    docker run -d --network host --name spanneromni -v "spanner:/spanner" us-docker.pkg.dev/spanner-omni/images/spanner-omni:2026.r4-lts start-single-server
    

    Il flag --network host apre le porte per Spanner Omni sulla macchina host. La tabella seguente descrive le porte utilizzate da Spanner Omni:

    Intervallo porte Finalità
    Da 15000 a 15025 Server Spanner Omni
    15026 Server della console Spanner Omni
  3. Assicurati che il container sia in esecuzione:

    docker ps
    
  4. Crea 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-sample
    
  5. Verifica che il database sia stato creato:

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

    L'output mostra che è stato creato un database denominato retail-sample.

  6. Controlla lo schema del database:

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

    L'output mostra il DDL per tutte le tabelle, le relazioni, gli indici di ricerca, gli indici vettoriali e i grafici. Questo schema multimodello rappresenta un ambiente di e-commerce che monitora il customer journey dalla navigazione al pagamento. Utilizza funzionalità avanzate come indici di ricerca a testo intero, vector embedding e un livello di grafi di proprietà.

  7. Connettiti al database e apri la shell SQL:

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

    Viene visualizzato il prompt spanner-cli>, che ti consente di eseguire query.

  8. Esplora le tabelle del database:

    SHOW TABLES;
    

Esegui 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 mostrano 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() nella 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 prodotti in base a caratteristiche o funzionalità specifiche menzionate nelle descrizioni.

Il seguente esempio cerca waterproof in tutte le categorie di prodotto:

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

Utilizza la ricerca di similarità vettoriale per trovare prodotti semanticamente simili a un prodotto di riferimento. Ciò è utile per creare motori per suggerimenti. Questa query utilizza COSINE_DISTANCE() con vettori ProductEmbedding.

Sostituisci PRODUCT_ID con l'ID del prodotto per cui vuoi ricevere consigli:

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 per stato

Utilizza la ricerca a testo intero per trovare gli ordini in base al loro stato. Ciò consente una corrispondenza flessibile di termini come "spedito" o "spedizione".

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

Identifica 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 eseguiti 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 del grafico

Utilizza la sintassi delle query grafiche 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;

Esplora la console Spanner Omni

Spanner Omni include una console basata sul web per il monitoraggio e la gestione. Per avviare la console Spanner Omni, esegui questo comando:

docker exec -it spanneromni /google/spanner/bin/omni-jre/bin/java -jar /google/spanner/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 complessivo della CPU e la versione del database.

  • Database: elenca tutti i database nel tuo deployment.

  • Backup: mostra informazioni sui backup eseguiti.

  • System Insights: mostra metriche di integrità come l'utilizzo di CPU, memoria e spazio di archiviazione, nonché metriche di rendimento come latenza e throughput.

  • Approfondimenti sulle query: mostra le query principali che consumano risorse della CPU.

Per saperne di più, vedi Utilizzare la console Spanner Omni.

Passaggi successivi