ScalarDB Analytics with PostgreSQL を使用してサンプルデータに対して分析クエリを実行する
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このチュートリアルでは、ScalarDB Analytics with PostgreSQL を使用してサンプルデータに対して分析クエリを実行する方法について説明します。
概要
このサンプルチュートリアルでは、単一テーブルクエリと複数テーブルクエリの2種類のクエリを実行する方法を示します。
このサンプルチュートリアルで実行できること
このサンプルチュートリアルでは、次の種類のクエリを実行する方法を示します。
- データを読み取り、要約を計算します。
- 複数のストレージにまたがるテーブルを結合します。
このサンプルチュートリアルでインポートされたテーブルに対して、PostgreSQL がサポートする任意のクエリを実行できます。ScalarDB Analytics with PostgreSQL は PostgreSQL がサポートするすべてのクエリをサポートしているため、例に示さ れている結合、集計、フィルタリング、順序付けだけでなく、ウィンドウ関数、ラテラル結合、さまざまな分析操作も使用できます。
PostgreSQL がサポートするクエリの種類を確認するには、PostgreSQL ドキュメントを参照してください。
前提条件
- Docker 20.10以降、および Docker Compose V2以降
- psql
ScalarDB Analytics with PostgreSQL を設定する
まず、ScalarDB Analytics with PostgreSQL を使用して分析クエリを実行するためにデータベースを設定する必要があります。まだデータベースを設定していない場合は、ScalarDB Analytics with PostgreSQL の使用開始の手順に従ってください。
ScalarDB のスキーマの詳細
このサンプルチュートリアルでは、ScalarDB データベースに次のスキーマを持つテーブルがあります。
参考までに、この図には次の内容が示されています。
dynamons
、postgresns
、cassandrans
。それぞれ DynamoDB、PostgreSQL、Cassandra のバックエンドストレージにマップされる名前空間。dynamons.customer
。顧客に関する情報を表すテーブル。このテーブルには、顧客キー、名前、住所、電話番号、口座残高などの属性が含まれます。postgresns.orders
。顧客が行った注文に関する情報を含むテーブル。このテーブルには、注文キー、顧客キー、注文ステータス、注文日、注文優先度などの属性が含まれます。cassandrans.lineitem
。注文に関連付けられた明細項目を表すテーブル。このテーブルには、注文キー、部品キー、サプライヤーキー、数量、価格、出荷日などの属性が含まれます。
PostgreSQL のスキーマの詳細
ScalarDB の設定時に Schema Importer を実行すると、ScalarDB データベースのテーブルスキーマを PostgreSQL データベースにインポートできます。より正確には、ScalarDB データベースの各 namespace_name.table_name
テーブルに対して、PostgreSQL データベースに namespace_name._table_name
の外部テーブ ルと namespace_name.table_name
のビューが作成されます。
作成された外部テーブルには、ScalarDB テーブルと同じ列と、ScalarDB が内部で管理するトランザクションメタデータ列が含まれます。作成されたビューは、外部テーブルからトランザクションメタデータ列を除外するように定義されているため、作成されたビューには ScalarDB テーブルと同じ列のみが含まれます。
ScalarDB テーブルのスキーマは schema.json
にあります。たとえば、dynamons.customer
テーブルは次のように定義されています。
"dynamons.customer": {
"transaction": true,
"partition-key": [
"c_custkey"
],
"columns": {
"c_custkey": "INT",
"c_name": "TEXT",
"c_address": "TEXT",
"c_nationkey": "INT",
"c_phone": "TEXT",
"c_acctbal": "DOUBLE",
"c_mktsegment": "TEXT",
"c_comment": "TEXT"
}
},
PostgreSQL データベース内の dynamons._customer
の外部テーブルを表示するには、次のコマンドを実行し、プロンプトが表示されたら PostgreSQL ユーザーパスワードを入力します。
psql -U postgres -h localhost test -c '\d dynamons._customer';
パスワードを入力すると、次の出力が表示されます。これには、dynamons.customer
テーブルと同じ c_
列が表示されます。
Foreign table "dynamons._customer"
Column | Type | Collation | Nullable | Default | FDW options
------------------------+------------------+-----------+----------+---------+-------------
c_custkey | integer | | | |
c_name | text | | | |
c_address | text | | | |
c_nationkey | integer | | | |
c_phone | text | | | |
c_acctbal | double precision | | | |
c_mktsegment | text | | | |
c_comment | text | | | |
tx_id | text | | | |
tx_version | integer | | | |
tx_state | integer | | | |
tx_prepared_at | bigint | | | |
tx_committed_at | bigint | | | |
before_tx_id | text | | | |
before_tx_version | integer | | | |
before_tx_state | integer | | | |
before_tx_prepared_at | bigint | | | |
before_tx_committed_at | bigint | | | |
before_c_name | text | | | |
before_c_address | text | | | |
before_c_nationkey | integer | | | |
before_c_phone | text | | | |
before_c_acctbal | double precision | | | |
before_c_mktsegment | text | | | |
before_c_comment | text | | | |
Server: multi_storage_dynamodb
FDW options: (namespace 'dynamons', table_name 'customer')
外部テーブルを見るとわかるように、テーブルにはトランザクションメタデータ列も含まれています。これらの列は、Read Committed 分離レベルを確保するために必要です。
dynamons.customer
のビューを表示するには、次のコマンドを実行し、プロンプトが表示されたら PostgreSQL ユーザーパスワードを入力します。
psql -U postgres -h localhost test -c '\d dynamons.customer';