メインコンテンツまでスキップ
バージョン: 3.13

ScalarDB Analytics with PostgreSQL をはじめよう

注記

このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。

このドキュメントでは、ScalarDB Analytics with PostgreSQL の使用を開始する方法について説明します。ScalarDB Analytics with PostgreSQL がすでにインストールされており、必要なサービスがすべて実行されていることを前提としています。そのような環境がない場合は、Docker を使用してローカル環境に ScalarDB Analytics with PostgreSQL をインストールする方法の手順に従ってください。ScalarDB Analytics with PostgreSQL は PostgreSQL 経由でクエリを実行するため、PostgreSQL にクエリを送信するための psql クライアントまたは別の PostgreSQL クライアントがすでにあることも前提としています。

ScalarDB Analytics with PostgreSQL とは

ユニバーサルトランザクションマネージャーである ScalarDB は、主にトランザクションワークロードを対象としているため、リレーショナルクエリの限られたサブセットをサポートしています。

ScalarDB Analytics with PostgreSQL は、PostgreSQL とその外部データラッパー (FDW) 拡張機能を使用して、ScalarDB の機能を拡張し、ScalarDB が管理するデータに対する分析クエリを処理します。

ScalarDB Analytics with PostgreSQL は、主に PostgreSQL と Schema Importer の 2 つのコンポーネントで構成されています。

PostgreSQL はサービスとして実行され、ユーザーからのクエリを受け入れて処理します。FDW 拡張機能は、ScalarDB が管理するバックエンドストレージからデータを読み取るために使用されます。Schema Importer は、ScalarDB データベースのスキーマを PostgreSQL にインポートするツールです。これにより、ユーザーは PostgreSQL 側のテーブル (ScalarDB 側のテーブルと同一) を表示できます。

ScalarDB データベースをセットアップする

まず、ScalarDB Analytics with PostgreSQL で分析クエリを実行するには、1 つ以上の ScalarDB データベースが必要です。独自の ScalarDB データベースがある場合は、このセクションをスキップして、代わりにそのデータベースを使用できます。scalardb-samples/scalardb-analytics-postgresql-sample プロジェクトを使用する場合は、プロジェクトディレクトリで次のコマンドを実行してサンプルデータベースを設定できます。

docker compose run --rm schema-loader \
-c /etc/scalardb.properties \
--schema-file /etc/schema.json \
--coordinator \
--no-backup \
--no-scaling

このコマンドは、DynamoDB、PostgreSQL、Cassandra で設定される 複数のストレージインスタンスを設定します。次に、これらのストレージにマップされる dynamonspostgresnscassandrans の名前空間を作成し、ScalarDB Schema Loaderを使用して dynamons.customerpostgresns.orderscassandrans.lineitem のテーブルを作成します。

マルチストレージの概要

次のコマンドを実行すると、作成されたテーブルにサンプルデータをロードできます。

docker compose run --rm sample-data-loader

PostgreSQL に ScalarDB 管理下のデータベースのスキーマをインポートする

次に、分析クエリを処理する PostgreSQL に ScalarDB 管理下のデータベースのスキーマをインポートします。ScalarDB Analytics with PostgreSQL には、この目的のためのツールである Schema Importer が用意されています。このツールを使用すると、分析クエリを実行するために必要なすべての準備が整います。

docker compose run --rm schema-importer \
import \
--config /etc/scalardb.properties \
--host analytics \
--port 5432 \
--database test \
--user postgres \
--password postgres \
--namespace cassandrans \
--namespace postgresns \
--namespace dynamons \
--config-on-postgres-host /etc/scalardb.properties

独自の ScalarDB データベースを使用する場合は、--config および --config-on-postgres-host オプションを ScalarDB 設定ファイルに置き換え、--namespace オプションをインポートする ScalarDB 名前空間に置き換える必要があります。

これにより、ScalarDB データベース内のテーブルと同じ名前のテーブル (正確にはビュー) が作成されます。この例では、dynamons.customerpostgresns.orders、および cassandrans.lineitem のテーブルが作成されます。列定義も ScalarDB データベースと同一です。これらのテーブルは、FDW を使用して ScalarDB データベースの基盤となるストレージに接続された 外部テーブルです。したがって、PostgreSQL 内のこれらのテーブルを ScalarDB データベース内のテーブルと同等と見なすことができます。

インポートされたスキーマ

分析クエリを実行する

これで、ScalarDB データベース内の同じデータを読み取るすべてのテーブルが揃い、PostgreSQL でサポートされている任意の分析クエリを実行できるようになりました。クエリを実行するには、psql またはその他のクライアントを使用して PostgreSQL に接続してください。

psql -U postgres -h localhost test
Password for user postgres:

> select c_mktsegment, count(*) from dynamons.customer group by c_mktsegment;
c_mktsegment | count
--------------+-------
AUTOMOBILE | 4
BUILDING | 2
FURNITURE | 1
HOUSEHOLD | 2
MACHINERY | 1
(5 rows)

サンプルデータと追加の実作業の詳細については、サンプルアプリケーションページを参照してください。

注意事項

分離レベル

ScalarDB Analytics with PostgreSQL は、Read Committed 分離レベルを設定してデータを読み取ります。この分離レベルにより、読み取るデータが過去にコミットされていることが保証されますが、特定の時点で一貫性のあるデータを読み取ることができることは保証されません。

書き込み操作はサポートされていません

ScalarDB Analytics with PostgreSQL は、読み取り専用クエリのみをサポートします。INSERTUPDATE、およびその他の書き込み操作はサポートされていません。