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.

Eseguire un contenitore del server singolo

Per configurare ed eseguire un container 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 container 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.r1-beta start-single-server
    

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

    Intervallo porte Finalità
    15000 to 15025 Server Spanner Omni
    15026 Server della console Spanner Omni
  3. Verifica 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 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à.

  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 consente di eseguire query.

  8. 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;

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.

Passaggi successivi