Spanner Omni – Kurzanleitung

In dieser Kurzanleitung erfahren Sie, wie Sie Spanner Omni einrichten und einige seiner Funktionen kennenlernen, indem Sie einen Einzelservercontainer ausführen.

Einzelservercontainer 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.r2.1-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, Suchindizes, Vektorindizes und Graphen. Dieses Multi-Modell-Schema stellt eine E‑Commerce-Umgebung dar, in der die Customer Journey vom Browsen bis zur Kasse verfolgt wird. Es verwendet erweiterte Funktionen wie Volltextsuchindizes, 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, sodass Sie Abfragen ausführen können.

  8. Datenbanktabellen untersuchen:

    SHOW TABLES;
    

Abfragen ausführen, um das Dataset zu untersuchen

Die Beispieldatenbank enthält Daten für Produkte, Nutzer, Bestellungen und Zahlungen. Verwenden Sie die folgenden Abfragen, um die Multi-Modell-Funktionen von Spanner Omni zu untersuchen. Die folgenden Abfragen sind Beispiele, die einige der Funktionen in Spanner Omni veranschaulichen.

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 Vektorsuche nach Ähnlichkeit, 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 für einen bestimmten Nutzer 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. Dadurch können Begriffe wie „versendet“ oder „Versand“ flexibel abgeglichen werden.

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

Bestellungen mit hohem Wert identifizieren

Identifizieren Sie Bestellungen mit hohem Wert 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;

Umsatzleistung 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 ID des Zielprodukts:

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 /google/spanner/bin/omni-jre/bin/java -jar /google/spanner/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:

  • Übersicht: Zeigt die gesamte CPU Auslastung und die Datenbankversion an.

  • Datenbanken: Listet alle Datenbanken in Ihrer Bereitstellung auf.

  • Sicherungen: Zeigt Informationen zu durchgeführten Sicherungen.

  • Systemstatistiken: Zeigt Messwerte zur Systemdiagnose wie CPU-, Arbeitsspeicher- und Speicherauslastung sowie Leistungsmesswerte wie Latenz und Durchsatz an.

  • Abfragestatistiken: Zeigt die Abfragen an, die die meisten CPU-Ressourcen verbrauchen.

Weitere Informationen finden Sie unter Spanner Omni-Konsole verwenden.

Nächste Schritte