Panduan memulai Spanner Omni

Panduan memulai cepat ini menjelaskan cara memulai Spanner Omni dan menjelajahi beberapa fiturnya dengan menjalankan container server tunggal.

Menjalankan container server tunggal

Untuk menyiapkan dan menjalankan container Spanner Omni, ikuti langkah-langkah berikut:

  1. Buat volume Docker untuk menyimpan data Spanner Omni. Menggunakan volume mencegah kehilangan data jika container tidak sengaja dihapus.

    docker volume create spanner
    
  2. Mulai 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
    

    Flag --network host membuka port untuk Spanner Omni di mesin host. Tabel berikut menjelaskan port yang digunakan oleh Spanner Omni:

    Rentang port Tujuan
    15000 hingga 15025 Server Spanner Omni
    15026 Server konsol Spanner Omni
  3. Pastikan container berjalan:

    docker ps
    
  4. Buat contoh database.

    Spanner Omni menyertakan perintah untuk membuat contoh database dan mengisinya dengan data. Perintah berikut membuat contoh database bernama retail-sample.

    docker exec -it spanneromni /google/spanner/bin/spanner databases create-sample-db retail --database-name=retail-sample
    
  5. Pastikan database telah dibuat:

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

    Output menunjukkan bahwa database bernama retail-sample telah dibuat.

  6. Periksa skema database:

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

    Output menampilkan DDL untuk semua tabel, hubungan, indeks penelusuran, indeks vektor, dan grafik. Skema multi-model ini mewakili lingkungan e-commerce yang melacak perjalanan pelanggan dari penjelajahan hingga checkout. Skema ini menggunakan fitur lanjutan seperti indeks penelusuran teks lengkap, embedding vektor, dan lapisan grafik properti.

  7. Hubungkan ke database dan buka shell SQL:

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

    Perintah spanner-cli> akan muncul, sehingga Anda dapat menjalankan kueri.

  8. Jelajahi tabel database:

    SHOW TABLES;
    

Menjalankan kueri untuk menjelajahi set data

Contoh database menyertakan data untuk produk, pengguna, pesanan, dan pembayaran. Gunakan kueri berikut untuk menjelajahi kemampuan multi-model Spanner Omni. Berikut adalah contoh kueri yang menunjukkan beberapa fungsi di Spanner Omni.

Menelusuri produk berdasarkan nama

Telusuri produk menggunakan penelusuran teks lengkap. Kueri ini menggunakan fungsi SEARCH() pada kolom Name_Tokens, yang berisi token yang telah diproses sebelumnya untuk pencocokan yang efisien.

Contoh berikut menelusuri phone untuk menemukan ponsel cerdas dan telepon:

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

Menelusuri produk berdasarkan deskripsi

Telusuri produk berdasarkan karakteristik atau fitur tertentu yang disebutkan dalam deskripsinya.

Contoh berikut menelusuri waterproof di semua kategori produk:

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

Gunakan penelusuran kesamaan vektor untuk menemukan produk yang secara semantik mirip dengan produk referensi. Hal ini berguna untuk membuat mesin rekomendasi. Kueri ini menggunakan COSINE_DISTANCE() dengan vektor ProductEmbedding.

Ganti PRODUCT_ID dengan ID produk yang Anda inginkan rekomendasinya:

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;

Mengambil histori pembelian pengguna

Ambil histori pembelian lengkap untuk pengguna tertentu, termasuk detail produk dan harga historis.

Ganti USER_ID dengan ID pengguna target:

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;

Menemukan pesanan berdasarkan status

Gunakan penelusuran teks lengkap untuk menemukan pesanan berdasarkan statusnya. Hal ini memungkinkan pencocokan istilah yang fleksibel seperti "dikirim" atau "pengiriman".

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

Mengidentifikasi pesanan bernilai tinggi

Identifikasi pesanan bernilai tinggi dalam rentang tanggal tertentu untuk analisis bisnis.

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

Menganalisis performa penjualan menurut kategori

Hitung metrik penjualan, seperti unit yang terjual dan total pendapatan, yang diagregasi menurut kategori produk.

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;

Menelusuri pembayaran berdasarkan metode

Gunakan penelusuran teks lengkap untuk menemukan pembayaran yang dilakukan menggunakan metode tertentu, seperti "kartu kredit".

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;

Menemukan pengguna yang membeli produk menggunakan kueri grafik

Gunakan sintaksis kueri grafik untuk melintasi hubungan dan menemukan semua pengguna yang membeli produk tertentu.

Ganti PRODUCT_ID dengan ID produk target:

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;

Mempelajari konsol Spanner Omni

Spanner Omni menyertakan konsol Spanner Omni berbasis web untuk pemantauan dan pengelolaan. Untuk memulai konsol Spanner Omni, jalankan perintah berikut:

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

Untuk mengakses konsol Spanner Omni, buka http://localhost:15026 di browser Anda. Konsol Spanner Omni memberikan informasi berikut:

Untuk mengetahui informasi selengkapnya, lihat Menggunakan konsol Spanner Omni.

Langkah berikutnya