このクイックスタートでは、Spanner Omni を使い始める方法と、シングル サーバー コンテナを実行してその機能の一部を試す方法について説明します。
単一のサーバー コンテナを実行する
Spanner Omni コンテナを設定して実行する手順は次のとおりです。
Spanner Omni データを保存する Docker ボリュームを作成します。ボリュームを使用すると、コンテナが誤って削除された場合にデータ損失を防ぐことができます。
docker volume create spannerSpanner 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--network hostフラグは、ホストマシンで Spanner Omni のポートを開きます。次の表に、Spanner Omni で使用されるポートを示します。ポート範囲 目的 15000~15025Spanner Omni サーバー 15026Spanner Omni コンソール サーバー コンテナが実行されていることを確認します。
docker psサンプル データベースを作成します。
Spanner Omni には、サンプル データベースを作成してデータを入力するコマンドが含まれています。次のコマンドは、
retail-sampleという名前のサンプル データベースを作成します。docker exec -it spanneromni /google/spanner/bin/spanner databases create-sample-db retail --database-name=retail-sampleデータベースが作成されたことを確認します。
docker exec -it spanneromni /google/spanner/bin/spanner databases list出力には、
retail-sampleという名前のデータベースが作成されたことが示されます。データベースのスキーマを確認します。
docker exec -it spanneromni /google/spanner/bin/spanner databases ddl describe retail-sample出力には、すべてのテーブル、リレーションシップ、検索インデックス、ベクトル インデックス、グラフの DDL が表示されます。このマルチモデル スキーマは、ブラウジングから購入手続きまでのカスタマー ジャーニーを追跡する e コマース環境を表します。全文検索インデックス、ベクトル エンベディング、プロパティ グラフレイヤなどの高度な機能を使用します。
データベースに接続して SQL シェルを開きます。
docker exec -it spanneromni /google/spanner/bin/spanner sql --database=retail-samplespanner-cli>プロンプトが表示され、クエリを実行できます。データベース テーブルを探索します。
SHOW TABLES;
クエリを実行してデータセットを探索する
サンプル データベースには、プロダクト、ユーザー、注文、支払いのデータが含まれています。次のクエリを使用して、Spanner Omni のマルチモデル機能を試します。次のクエリは、Spanner Omni の機能の一部を示すサンプルです。
名前で商品を検索する
全文検索を使用して商品を検索します。このクエリでは、効率的な照合のために前処理されたトークンを含む Name_Tokens 列に対して SEARCH() 関数を使用します。
次の例では、phone を検索してスマートフォンと電話を探します。
SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Name_Tokens, 'phone')
ORDER BY PriceUSD DESC
LIMIT 10;
説明で商品を検索する
説明に記載されている特定の特性や機能に基づいて商品を検索します。
次の例では、すべての商品カテゴリで waterproof を検索します。
SELECT ProductID, Name, Description, PriceUSD
FROM Products
WHERE SEARCH(Description_Tokens, 'waterproof')
ORDER BY PriceUSD
LIMIT 10;
ベクトル検索を使用して類似商品を検索する
ベクトル類似度検索を使用して、参照商品と意味的に類似した商品を見つけます。これは、レコメンデーション エンジンの構築に役立ちます。このクエリでは、ProductEmbedding ベクトルで COSINE_DISTANCE() を使用します。
PRODUCT_ID は、おすすめを取得する商品の ID に置き換えます。
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;
ユーザーの購入履歴を取得する
特定ユーザーの購入履歴全体(商品の詳細や過去の価格を含む)を取得します。
USER_ID は、ターゲット ユーザーの ID に置き換えます。
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;
ステータスで注文を検索する
全文検索を使用して、ステータスで注文を検索します。これにより、「shipped」や「shipping」などの用語を柔軟に照合できます。
SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE SEARCH(OrderStatus_Tokens, 'shipped')
ORDER BY OrderDate DESC
LIMIT 20;
価値の高い注文を特定する
ビジネス分析のために、特定の期間内の高額注文を特定します。
SELECT OrderID, UserID, OrderDate, TotalAmountUSD
FROM Orders
WHERE
OrderDate BETWEEN 'START_DATE' AND 'END_DATE'
AND TotalAmountUSD > 500
ORDER BY TotalAmountUSD DESC
LIMIT 10;
カテゴリ別に販売実績を分析する
商品カテゴリ別に集計された販売数や合計収益などの販売指標を計算します。
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;
お支払い方法で支払いを検索する
全文検索を使用して、「クレジット カード」などの特定の方法で行われた支払いを検索します。
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;
グラフクエリを使用して商品を購入したユーザーを見つける
グラフクエリ構文を使用して、関係を走査し、特定の商品を購入したすべてのユーザーを見つけます。
PRODUCT_ID は、ターゲット プロダクト 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 コンソールを確認する
Spanner Omni には、モニタリングと管理用のウェブベースの Spanner Omni コンソールが含まれています。Spanner Omni コンソールを起動するには、次のコマンドを実行します。
docker exec -it spanneromni /app/bin/spanner-console
Spanner Omni コンソールにアクセスするには、ブラウザで http://localhost:15026 に移動します。Spanner Omni コンソールには、次の情報が表示されます。
概要: 全体の CPU 使用率とデータベースのバージョンが表示されます。
データベース: デプロイ内のすべてのデータベースを一覧表示します。
バックアップ: 実行されたバックアップに関する情報が表示されます。
システム分析情報: CPU、メモリ、ストレージ使用率などの健全性指標と、レイテンシやスループットなどのパフォーマンス指標を表示します。
Query Insights: CPU リソースを消費している上位のクエリが表示されます。
詳細については、Spanner Omni コンソールを使用するをご覧ください。