Guide de démarrage rapide de Spanner Omni

Ce guide de démarrage rapide explique comment faire vos premiers pas avec Spanner Omni et explorer certaines de ses fonctionnalités en exécutant un conteneur à serveur unique.

Exécuter un seul conteneur de serveur

Pour configurer et exécuter un conteneur Spanner Omni, procédez comme suit :

  1. Créez un volume Docker pour stocker les données Spanner Omni. L'utilisation d'un volume permet d'éviter la perte de données si le conteneur est supprimé accidentellement.

    docker volume create spanner
    
  2. Démarrez le serveur 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
    

    L'indicateur --network host ouvre les ports pour Spanner Omni sur la machine hôte. Le tableau suivant décrit les ports utilisés par Spanner Omni :

    Plage de ports Objectif
    De 15000 à 15025 Serveurs Spanner Omni
    15026 Serveur de console Spanner Omni
  3. Assurez-vous que le conteneur est en cours d'exécution :

    docker ps
    
  4. Créez un exemple de base de données.

    Spanner Omni inclut des commandes permettant de créer un exemple de base de données et de l'alimenter en données. La commande suivante crée une base de données exemple nommée retail-sample.

    docker exec -it spanneromni /google/spanner/bin/spanner databases create-sample-db retail --database-name=retail-sample
    
  5. Vérifiez que la base de données a été créée :

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

    Le résultat indique qu'une base de données nommée retail-sample a été créée.

  6. Vérifiez le schéma de la base de données :

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

    Le résultat affiche le LDD pour toutes les tables, relations, index de recherche, index vectoriels et graphiques. Ce schéma multimode représente un environnement d'e-commerce qui suit le parcours client, de la navigation au paiement. Il utilise des fonctionnalités avancées telles que des index de recherche en texte intégral, des embeddings vectoriels et une couche de graphe de propriétés.

  7. Connectez-vous à la base de données et ouvrez le shell SQL :

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

    L'invite spanner-cli> s'affiche, ce qui vous permet d'exécuter des requêtes.

  8. Explorez les tables de la base de données :

    SHOW TABLES;
    

Exécuter des requêtes pour explorer l'ensemble de données

La base de données exemple inclut des données sur les produits, les utilisateurs, les commandes et les paiements. Utilisez les requêtes suivantes pour explorer les capacités multimodales de Spanner Omni. Voici des exemples de requêtes qui illustrent certaines fonctionnalités de Spanner Omni.

Rechercher des produits par nom

Recherchez des produits à l'aide de la recherche en texte intégral. Cette requête utilise la fonction SEARCH() sur la colonne Name_Tokens, qui contient des jetons prétraités pour une mise en correspondance efficace.

L'exemple suivant recherche phone pour trouver des smartphones et des téléphones :

SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Name_Tokens, 'phone')
ORDER BY PriceUSD DESC
LIMIT 10;

Rechercher des produits par description

Recherchez des produits en fonction de caractéristiques ou de fonctionnalités spécifiques mentionnées dans leur description.

L'exemple suivant recherche waterproof dans toutes les catégories de produits :

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

Utilisez la recherche de similarité vectorielle pour trouver des produits sémantiquement similaires à un produit de référence. Cela est utile pour créer des moteurs de recommandation. Cette requête utilise COSINE_DISTANCE() avec des vecteurs ProductEmbedding.

Remplacez PRODUCT_ID par l'ID du produit pour lequel vous souhaitez obtenir des recommandations :

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;

Récupérer l'historique des achats d'un utilisateur

Récupérez l'historique complet des achats d'un utilisateur spécifique, y compris les détails des produits et l'historique des prix.

Remplacez USER_ID par l'ID de l'utilisateur cible :

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;

Trouver des commandes par état

Utilisez la recherche en texte intégral pour trouver des commandes en fonction de leur état. Cela permet une correspondance flexible des termes tels que "expédié" ou "expédition".

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

Identifier les commandes à fort potentiel

Identifiez les commandes à fort potentiel au cours d'une période spécifique pour l'analyse commerciale.

SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE
 OrderDate BETWEEN 'START_DATE' AND 'END_DATE'
 AND TotalAmountUSD > 500
ORDER BY TotalAmountUSD DESC
LIMIT 10;

Analyser les performances des ventes par catégorie

Calculer les métriques de vente, telles que les unités vendues et le revenu total, agrégées par catégorie de produit.

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;

Rechercher des paiements par mode de paiement

Utilisez la recherche en texte intégral pour trouver les paiements effectués avec des méthodes spécifiques, comme "carte de crédit".

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;

Trouver les utilisateurs ayant acheté un produit à l'aide d'une requête graphique

Utilisez la syntaxe des requêtes de graphe pour parcourir les relations et trouver tous les utilisateurs ayant acheté un produit spécifique.

Remplacez PRODUCT_ID par l'ID du produit cible :

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;

Explorer la console Spanner Omni

Spanner Omni inclut une console Spanner Omni Web pour la surveillance et la gestion. Pour démarrer la console Spanner Omni, exécutez la commande suivante :

docker exec -it spanneromni /app/bin/spanner-console

Pour accéder à la console Spanner Omni, accédez à http://localhost:15026 dans votre navigateur. La console Spanner Omni fournit les informations suivantes :

  • Présentation : affiche l'utilisation globale du processeur et la version de la base de données.

  • Bases de données : liste toutes les bases de données de votre déploiement.

  • Sauvegardes : affiche des informations sur les sauvegardes effectuées.

  • Insights sur le système : affiche des métriques sur l'état, comme l'utilisation du processeur, de la mémoire et du stockage, ainsi que des métriques sur les performances, comme la latence et le débit.

  • Insights sur les requêtes : affiche les principales requêtes qui consomment des ressources processeur.

Pour en savoir plus, consultez Utiliser la console Spanner Omni.

Étapes suivantes