In dieser Kurzanleitung wird beschrieben, wie Sie mit Spanner Omni beginnen und einige seiner Funktionen kennenlernen können, indem Sie einen Einzelservercontainer ausführen.
Einzelnen Servercontainer ausführen
So richten Sie einen Spanner Omni-Container ein und führen ihn aus:
Erstellen Sie ein Docker-Volume zum Speichern von Spanner Omni-Daten. Wenn Sie ein Volume verwenden, wird Datenverlust verhindert, falls der Container versehentlich gelöscht wird.
docker volume create spannerStarten 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.r4-lts start-single-serverDas Flag
--network hostöffnet die Ports für Spanner Omni auf dem Hostcomputer. In der folgenden Tabelle werden die von Spanner Omni verwendeten Ports beschrieben:Portbereich Zweck 15000bis15025Spanner Omni-Server 15026Spanner Omni-Konsolenserver Prüfen Sie, ob der Container ausgeführt wird:
docker psErstellen Sie eine Beispieldatenbank.
Spanner Omni enthält Befehle zum Erstellen einer Beispieldatenbank und zum Einfügen von Daten in diese Datenbank. Mit dem folgenden Befehl wird eine Beispieldatenbank mit dem Namen
retail-sampleerstellt.docker exec -it spanneromni /google/spanner/bin/spanner databases create-sample-db retail --database-name=retail-samplePrüfen Sie, ob die Datenbank erstellt wurde:
docker exec -it spanneromni /google/spanner/bin/spanner databases listDie Ausgabe zeigt, dass eine Datenbank mit dem Namen
retail-sampleerstellt wurde.Prüfen Sie das Schema der Datenbank:
docker exec -it spanneromni /google/spanner/bin/spanner databases ddl describe retail-sampleDie Ausgabe enthält die DDL für alle Tabellen, Beziehungen, Suchindexe, Vektorindexe und Grafiken. Dieses Schema mit mehreren Modellen stellt eine E-Commerce-Umgebung dar, in der der Kaufprozess vom Browsen bis zur Kaufabwicklung erfasst wird. Dabei werden erweiterte Funktionen wie Volltextsuchindizes, Vektoreinbettungen und eine Property-Graph-Ebene verwendet.
Stellen Sie eine Verbindung zur Datenbank her und öffnen Sie die SQL-Shell:
docker exec -it spanneromni /google/spanner/bin/spanner sql --database=retail-sampleDie Eingabeaufforderung
spanner-cli>wird angezeigt. Sie können jetzt Abfragen ausführen.Datenbanktabellen ansehen:
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-Model-Funktionen von Spanner Omni zu erkunden. Im Folgenden finden Sie Beispielabfragen, die einige der Funktionen von Spanner Omni veranschaulichen.
Nach Produkten anhand des Namens suchen
Mit der Volltextsuche nach Produkten suchen In dieser Abfrage wird die Funktion SEARCH() für die Spalte Name_Tokens verwendet, die vorab verarbeitete Tokens für einen effizienten Abgleich 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 einer Beschreibung suchen
Nach Produkten anhand bestimmter Merkmale oder Funktionen suchen, 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;
Mit der Vektorsuche ähnliche Produkte finden
Mit der Vektorsuche nach Ähnlichkeit können Sie Produkte finden, die einem Referenzprodukt semantisch ähnlich sind. Das ist nützlich, um Empfehlungssysteme zu entwickeln. In dieser Anfrage wird COSINE_DISTANCE() mit ProductEmbedding-Vektoren verwendet.
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
Die bisherigen Käufe für einen bestimmten Nutzer abrufen, 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;
Bestellungen nach Status suchen
Mit der Volltextsuche können Sie Bestellungen nach ihrem Status suchen. So 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 Umsatzpotenzial identifizieren
Identifizieren Sie umsatzstarke Bestellungen innerhalb eines bestimmten Zeitraums für die Unternehmensanalyse.
SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE
OrderDate BETWEEN 'START_DATE' AND 'END_DATE'
AND TotalAmountUSD > 500
ORDER BY TotalAmountUSD DESC
LIMIT 10;
Verkaufsleistung nach Kategorie analysieren
Verkaufsstatistiken wie verkaufte Stückzahl und Gesamtumsatz nach Produktkategorie berechnen
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 nach Methode suchen
Mit der Volltextsuche können Sie nach Zahlungen suchen, die mit bestimmten Methoden ausgeführt wurden, z. B. „Kreditkarte“.
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;
Nutzer finden, die ein Produkt gekauft haben, indem Sie eine Graphabfrage verwenden
Verwenden Sie die Syntax für Diagrammabfragen, 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 umfasst eine webbasierte Spanner Omni-Konsole für Monitoring 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 die Spanner Omni Console in Ihrem Browser über http://localhost:15026 auf. Die Spanner Omni Console bietet die folgenden Informationen:
Übersicht: Hier werden die gesamte CPU-Auslastung und die Datenbankversion angezeigt.
Datenbanken: Hier werden alle Datenbanken in Ihrer Bereitstellung aufgeführt.
Sicherungen: Hier werden Informationen zu durchgeführten Sicherungen angezeigt.
Systemstatistiken: Zeigt Messwerte für den Zustand wie CPU-, Arbeitsspeicher- und Speicherauslastung sowie Leistungsmesswerte wie Latenz und Durchsatz an.
Abfragestatistiken: Hier werden die Top-Abfragen angezeigt, die CPU-Ressourcen verbrauchen.
Weitere Informationen finden Sie unter Spanner Omni-Konsole verwenden.