Spanner Omni – Kurzanleitung

In dieser Kurzanleitung erfahren Sie, wie Sie Spanner Omni verwenden und einige seiner Funktionen kennenlernen können, indem Sie einen Container mit einem einzelnen Server ausführen.

Servercontainer ausführen

So richten Sie einen Spanner Omni-Container ein und führen ihn aus:

  1. Erstellen Sie ein Docker-Volume zum Speichern von Spanner Omni-Daten. Durch die Verwendung eines Volumes werden Datenverluste verhindert, wenn der Container versehentlich gelöscht wird.

    docker volume create spanner
    
  2. Starten Sie den Spanner Omni-Server:

    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
    

    Mit dem Flag --network host werden die Ports für Spanner Omni auf dem Hostcomputer geöffnet. In der folgenden Tabelle sind die von Spanner Omni verwendeten Ports beschrieben:

    Portbereich Zweck
    15000 bis 15025 Spanner Omni-Server
    15026 Spanner Omni-Konsolenserver
  3. Prüfen Sie, ob der Container ausgeführt wird:

    docker ps
    
  4. Erstellen Sie eine Beispieldatenbank.

    Spanner Omni enthält Befehle zum Erstellen einer Beispieldatenbank und zum Füllen mit Daten. Mit dem folgenden Befehl wird eine Beispieldatenbank mit dem Namen retail-sample erstellt.

    docker exec -it spanneromni /google/spanner/bin/spanner databases create-sample-db retail --database-name=retail-sample
    
  5. Prüfen Sie, ob die Datenbank erstellt wurde:

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

    Die Ausgabe zeigt, dass eine Datenbank mit dem Namen retail-sample erstellt wurde.

  6. Prüfen Sie das Schema der Datenbank:

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

    Die Ausgabe zeigt die DDL für alle Tabellen, Beziehungen, Suchindexe, Vektorindexe und Graphen. Dieses Multimodellschema stellt eine E-Commerce-Umgebung dar, in der die Customer Journey vom Browsen bis zur Kasse verfolgt wird. Es verwendet erweiterte Funktionen wie Volltextsuchindexe, Vektoreinbettungen und eine Property Graph-Ebene.

  7. Stellen Sie eine Verbindung zur Datenbank her und öffnen Sie die SQL-Shell:

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

    Die Eingabeaufforderung spanner-cli> wird angezeigt, über die Sie Abfragen ausführen können.

  8. Datenbanktabellen ansehen:

    SHOW TABLES;
    

Abfragen ausführen, um das Dataset zu untersuchen

Die Beispieldatenbank enthält Daten zu Produkten, Nutzern, Bestellungen und Zahlungen. Verwenden Sie die folgenden Abfragen, um die Multimodellfunktionen von Spanner Omni zu untersuchen. Die folgenden Beispielabfragen veranschaulichen einige der Funktionen in Spanner Omni.

Nach Produkten anhand des Namens suchen

Suchen Sie mit der Volltextsuche nach Produkten. Diese Abfrage verwendet die Funktion SEARCH() für die Spalte Name_Tokens, die vorverarbeitete Tokens für eine effiziente Suche enthält.

Im folgenden Beispiel wird nach phone gesucht, um Smartphones und Telefone zu finden:

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

Nach Produkten anhand der Beschreibung suchen

Suchen Sie nach Produkten anhand bestimmter Merkmale oder Funktionen, die in den Beschreibungen erwähnt werden.

Im folgenden Beispiel wird in allen Produktkategorien nach waterproof gesucht:

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

Verwenden Sie die Vektorähnlichkeitssuche, um Produkte zu finden, die einem Referenzprodukt semantisch ähnlich sind. Dies ist nützlich, um Empfehlungsmaschinen zu erstellen. Diese Abfrage verwendet COSINE_DISTANCE() mit ProductEmbedding-Vektoren.

Ersetzen Sie PRODUCT_ID durch die ID des Produkts, für das Sie Empfehlungen erhalten möchten:

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;

Bisherige Käufe des Nutzers abrufen

Rufen Sie die vollständigen bisherigen Käufe eines bestimmten Nutzers ab, einschließlich Produktdetails und historischer Preise.

Ersetzen Sie USER_ID durch die ID des Zielnutzers:

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;

Nach Bestellungen anhand des Status suchen

Verwenden Sie die Volltextsuche, um nach Bestellungen anhand ihres Status zu suchen. So können Begriffe wie „versandt“ oder „Versand“ flexibel abgeglichen werden.

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

Hochwertige Bestellungen identifizieren

Identifizieren Sie hochwertige Bestellungen in einem bestimmten Zeitraum für die Geschäftsanalyse.

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

Umsatz nach Kategorie analysieren

Berechnen Sie Umsatzmesswerte wie verkaufte Einheiten und Gesamtumsatz, aggregiert nach Produktkategorie.

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;

Nach Zahlungen anhand der Methode suchen

Verwenden Sie die Volltextsuche, um nach Zahlungen zu suchen, die mit bestimmten Methoden wie „Kreditkarte“ ausgeführt wurden.

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;

Mit einer Graph-Abfrage nach Nutzern suchen, die ein Produkt gekauft haben

Verwenden Sie die Graph-Abfragesyntax, um Beziehungen zu durchlaufen und alle Nutzer zu finden, die ein bestimmtes Produkt gekauft haben.

Ersetzen Sie PRODUCT_ID durch die Zielprodukt-ID:

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;

Spanner Omni-Konsole kennenlernen

Spanner Omni enthält eine webbasierte Spanner Omni-Konsole für die Überwachung und Verwaltung. Führen Sie den folgenden Befehl aus, um die Spanner Omni-Konsole zu starten:

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

Rufen Sie in Ihrem Browser http://localhost:15026 auf, um auf die Spanner Omni-Konsole zuzugreifen. Die Spanner Omni-Konsole bietet die folgenden Informationen:

Weitere Informationen finden Sie unter Spanner Omni-Konsole verwenden.

Nächste Schritte