9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQLAdvent Calendar 2024

Day 5

Aurora DSQL(プレビュー)を少しだけ触ってみた

Last updated at Posted at 2024-12-05

これは PostgreSQL Advent Calendar 2024 2 枚目・5 日目の記事です。

ワイヤープロトコルレベルで PostgreSQL と互換性があり(SQL も PostgreSQL のサブセットをサポート)、リージョン分散型のリレーショナル DB である Aurora DSQL のプレビュー版が公開されたので、ちょっとだけ試してみました。

概要など

こちらの AWS Database Blog に記されています。

2024/12/11 追記:
日本語の記事はこちらです。

re:Invent では明確に(Google の)「Spanner」の名前を出して比較をしていたようですね。

同じ分散型リレーショナル DB でも、シャードの配置などをユーザーが指定するスタイルの Aurora Limitless Database とは完全に別物です。

なお、こちらに(楽観トランザクションによる)同時実行制御についての説明があります。

2024/12/11 追記:
日本語の記事はこちらです。

とりあえずクラスター(群)を立ててみる

Getting started の記事を参考に、早速触ってみます。

マネジメントコンソールの入口は RDS から独立?

先ほどの Getting started の記事にもリンクが記されていますが、RDS / Aurora のコンソール画面ではなく独立したコンソール画面からクラスターを作成するようです。
スクリーンショット 2024-12-05 20.50.07.png

残念ながら東京リージョンはプレビュー対象外です。
スクリーンショット 2024-12-05 20.51.23.png

クラスターを立ててみる

バージニア北部リージョンを選んでクラスターを立ててみます。
スクリーンショット 2024-12-05 20.52.13.png

リンククラスターをオハイオリージョンに、Witness リージョン(データのコピー(更新ログ)を配置するがエンドポイントは持たないリージョン)をオレゴンに配置します。

すぐ削除する予定なので、削除保護は外しておきます。
スクリーンショット 2024-12-05 20.57.48.png

2024/12/5 時点では、オレゴンリージョンは Witness 専用リージョンのようです。

現時点の設定はこれだけです。

既報のとおり、VPC 外にエンドポイントが作られるようですね。

クラスターができあがるまで待ちます。
スクリーンショット 2024-12-05 20.59.31.png

できたようです。
スクリーンショット 2024-12-05 21.03.08.png

スクリーンショット 2024-12-05 21.04.25.png

スクリーンショット 2024-12-05 21.41.18.png

こちらはリンククラスター配置先のオハイオリージョンのクラスターです。
スクリーンショット 2024-12-05 21.00.30.png

クライアントからバージニア北部リージョンのエンドポイントに接続してみる

今回は Administrator 権限を持つユーザーで CloudShell を使い、psqlコマンドでの接続を試します。

バージニア北部リージョンのクラスターの画面の下方で CloudShell を開いて、まずは Getting started の記事に示されたサンプルデータを配置します。

サンプルデータを配置
$ mkdir samples
$ cd samples
$ curl https://raw.githubusercontent.com/aws-samples/aurora-dsql-samples/refs/heads/main/quickstart_data/department-insert-multirow.sql > department-insert-multirow.sql 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   610  100   610    0     0   2225      0 --:--:-- --:--:-- --:--:--  2250
$ curl https://raw.githubusercontent.com/aws-samples/aurora-dsql-samples/refs/heads/main/quickstart_data/invoice.csv > invoice.csv
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  233k  100  233k    0     0  4388k      0 --:--:-- --:--:-- --:--:-- 4412k
$ ll
total 240
-rw-r--r--. 1 cloudshell-user cloudshell-user    610 Dec  5 12:26 department-insert-multirow.sql
-rw-r--r--. 1 cloudshell-user cloudshell-user 239459 Dec  5 12:26 invoice.csv
$ cat department-insert-multirow.sql 
BEGIN;
INSERT INTO example.department(id, name, email) VALUES
(1, 'Example Department One', 'example+one@example.com'),
(2, 'Example Department Two', 'example+two@example.com'),
(中略)
(9, 'Example Department Nine', 'example+nine@example.com');
COMMIT;
$ head invoice.csv 
'2019-02-11T21:40:27.892Z',1,39.718145389078366
'2018-05-15T08:04:04.580Z',7,117.0376564084763
'2019-12-06T22:22:48.544Z',6,55.62208681964182
(中略)
'2017-05-03T16:00:54.923Z',2,81.67426959
'2020-01-17T01:44:37.233Z',3,102.77055805103969
$ tail invoice.csv 
'2016-06-20T04:41:17.900Z',2,25.993077038947224
'2018-01-17T07:05:29.340Z',5,35.05190955068556
(中略)
'2019-12-29T14:38:55.070Z',2,87.93198397343093
'2016-05-18T16:02:59.284Z',3,63.546171761560245
'2019-08-30T17:26:07.144Z',6,56.50467195926748
$ cd ..

「Connect」ボタンをクリックすると接続に必要な情報が表示されます。
スクリーンショット 2024-12-05 21.08.06.png

エンドポイントをコピーして、CloudShell からpsqlコマンドでバージニア北部リージョンのクラスターに接続します。

バージニア北部リージョンのクラスターに接続
$ PGSSLMODE=require \
>  psql --dbname postgres \
> --username admin \
> --host yiabtvdfljusl7rv6d2w2zbqpm.dsql.us-east-1.on.aws
Password for user admin: 

パスワードは先ほどのポップアップウィンドウ右下の「Copy」ボタンをクリックしてペーストします(そして [Enter] キーを押す)。

接続完了
psql (15.8, server 16.5)
WARNING: psql major version 15, server major version 16.
         Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_128_GCM_SHA256, compression: off)
Type "help" for help.

接続できました。

サンプルデータを投入する

Getting started の記事のとおり、exampleスキーマと 2 つのテーブルと 1 つのインデックスを作成します。

スキーマ・テーブル・インデックス作成
postgres=> CREATE SCHEMA example;
CREATE SCHEMA
postgres=> CREATE TABLE example.invoice(id UUID PRIMARY KEY DEFAULT gen_random_uuid(), created timestamp, purchaser int, amount float);
CREATE TABLE
postgres=> CREATE INDEX invoice_created_idx on example.invoice(created);
CREATE INDEX
postgres=> CREATE TABLE example.department(id INT PRIMARY KEY UNIQUE, name text, email text);
CREATE TABLE

サンプルデータを投入します。

サンプルデータを投入
postgres=> \include samples/department-insert-multirow.sql
BEGIN
INSERT 0 9
COMMIT
postgres=> \copy example.invoice(created, purchaser, amount) from samples/invoice.csv csv
COPY 5000

バージニア北部リージョンでSELECTしてみる

こちらも Getting started の記事のとおりの SQL 文を実行します。

SELECT実行
postgres=> SELECT name, sum(amount) AS sum_amount
postgres-> FROM example.department LEFT JOIN example.invoice ON department.id=invoice.purchaser
postgres-> GROUP BY name
postgres-> HAVING sum(amount) > 0
postgres-> ORDER BY sum_amount DESC;
           name           |     sum_amount     
--------------------------+--------------------
 Example Department Three | 54061.677528545966
 Example Department Seven | 53869.659653652096
 Example Department Eight |  52199.73742066632
 Example Department One   |  52034.07886990081
 Example Department Six   |   50886.1555625639
 Example Department Two   |  50589.98422247927
 Example Department Five  |    49549.852635496
 Example Department Four  |  49266.15578027618
(8 rows)

オハイオリージョンのエンドポイントに接続してみる

今度はオハイオリージョンのクラスターの画面で「Connect」ボタンをクリックして接続に必要な情報を表示します。

スクリーンショット 2024-12-05 21.38.16.png

先ほどと同じように CloudShell からpsqlコマンドで接続してみます。

オハイオリージョンのクラスターに接続
$ PGSSLMODE=require \
>  psql --dbname postgres \
> --username admin \
> --host gqabtvdfliuboiehc6voycz6vy.dsql.us-east-2.on.aws
Password for user admin: 

パスワードはオハイオリージョンの authentication token を Copy して貼り付けます。

接続完了
psql (15.8, server 16.5)
WARNING: psql major version 15, server major version 16.
         Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_128_GCM_SHA256, compression: off)
Type "help" for help.

接続完了しました。

オハイオリージョンでSELECTしてみる

先ほどと同じSELECT文を実行します。

SELECT実行
postgres=> SELECT name, sum(amount) AS sum_amount
postgres-> FROM example.department LEFT JOIN example.invoice ON department.id=invoice.purchaser
postgres-> GROUP BY name
postgres-> HAVING sum(amount) > 0
postgres-> ORDER BY sum_amount DESC;
           name           |     sum_amount     
--------------------------+--------------------
 Example Department Three | 54061.677528545966
 Example Department Seven | 53869.659653652096
 Example Department Eight |  52199.73742066632
 Example Department One   |  52034.07886990081
 Example Department Six   |   50886.1555625639
 Example Department Two   |  50589.98422247927
 Example Department Five  |    49549.852635496
 Example Department Four  |  49266.15578027618
(8 rows)

オハイオリージョンでも同じ結果が返ってきました。

立てたクラスター(群)を削除する

バージニア北部リージョンのクラスターを「Delete」ボタンで削除します。

スクリーンショット 2024-12-05 21.42.13.png

両リージョンのクラスター(とおそらく Witness リージョンのデータ)がまとめて削除されるようです。

confirmを入力して「Delete」ボタンをクリックして、しばらく待つと、
スクリーンショット 2024-12-05 21.47.39.png

スクリーンショット 2024-12-05 21.48.03.png

両リージョンのクラスターが削除されました。

今後は

気になる「複数リージョンのクラスタへの書き込み」などを試してみる予定です。

2024/12/11 追記:
Aurora DSQL の楽観的同時実行制御(OCC)について記事を書きました。


明日(6 日目)の 2 枚目カレンダーの担当は noborus さんです。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?