情報畑でつかまえてロゴ
本サイトは NTTテクノクロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

PostgreSQL 求めてクラウドジャーニー

クラウドで提供されている PostgreSQL 由来のデータベースサービスを「浅く」「広く」体験した日記です。

tx_postgres_sr_top.jpg

はじめに

はじめまして。NTTテクノクロス PostgreSQL チームの世話役の北角 (きたかく)です。

PostgreSQL 由来の Database as a Service (以下、DBaaS) がいろいろあることはご存知と思います。

今日は、そんな PostgreSQL 互換 DBaaS を求めて、クラウドを散歩することにします。

やることは2つだけ、データベースを作成して起動すること、psql (PostgreSQL用のコマンドラインツール) でデータベースに接続してSQLを実行させてみること、です。

Google Cloud

まずは、Google Cloud にやってきました。

Cloud SQL for PostgreSQL

Cloud SQL for PostgreSQL は、2018年7月から続くマネージドデータベースサービスです。

基本のキとして、Cloud SQL for PostgreSQL のデータベースを作成してみます。とりあえず動けばよいのであれば、数項目の入力・選択でデータベースインスタンスを起動することができます。簡単ですね。

データベースが起動したら、psql コマンドで接続してみたいと思います。これも簡単で、先ほど作成したインスタンスを選択すると「このインスタンスとの接続」という項目がありますので、その中にある「gcloudを使用して接続するには... Cloud Shell を開く」をクリックします。すると Cloud Shell が起動し、Enterの後、先に設定したパスワードを入力すれば、psql コマンドでデータベースに接続できます。


 me@cloudshell:~ (xxxx-yyyy-123456)$ gcloud sql connect free-trial-first-project --user=postgres --quiet
 Starting Cloud SQL Proxy: [/usr/bin/cloud-sql-proxy xxxx-yyyy-123456:zzzz:free-trial-first-project --port 9470]
 Connecting to database with SQL user [postgres].Password: 
 psql (16.13 (Ubuntu 16.13-1.pgdg24.04+1), server 18.3)
 WARNING: psql major version 16, server major version 18.
          Some psql features might not work.
 Type "help" for help.
 
 postgres=> 

psql が起動しましたので、何か SQL を実行してみたいと思います。とは言っても、テーブルを作成してないので、SELECT version(); を実行することにします。SELECT version() で、PostgreSQL のバージョン、OSやコンパイラの情報が確認できます。


 postgres=> SELECT version();
                                          version                                         
 -----------------------------------------------------------------------------------------
  PostgreSQL 18.3 on x86_64-pc-linux-gnu, compiled by Debian clang version 12.0.1, 64-bit
 (1 row)

コンパイラは Debian clang を使っているようですね。 続いて、設定ファイルの置き場所を確認してみます。


 postgres=> SELECT DISTINCT sourcefile FROM pg_settings; 
             sourcefile            
 ----------------------------------
  /pgsql/data/postgresql.conf   /pgsql/data/postgresql.auto.conf  (3 rows)

なるほど、/pgsql/data というディレクトリに配置されてますね。DBaaS なので直接ファイルに触れるわけではないですが、少しだけ中身をかいま見た気になれます。

AlloyDB for PostgreSQL

次は AlloyDB を覗いてみたいと思います。

AlloyDB for PostgreSQL は、PostgreSQL 互換のフルマネージドデータベースで、2022年12月に一般提供が開始されました。分析クエリの高速化、トランザクション処理での高いパフォーマンスが特長です。

AlloyDB のデータベース作成もそんなに難しくありませんので、さくっとインスタンスを起動しました。AlloyDB には「AlloyDB Studio」という GUI があるので、そこから SQL を実行してもよいのですが、 psql コマンドにこだわってみます。 以下のドキュメントに従って、psql コマンドで接続できました。

https://docs.cloud.google.com/alloydb/docs/quickstart/connect-cloud-shell?hl=ja

Cloud SQL の時と同様の SQL を実行してみます。


 postgres=> SELECT version();
                                          version                                         
 -----------------------------------------------------------------------------------------
  PostgreSQL 17.7 on x86_64-pc-linux-gnu, compiled by Debian clang version 12.0.1, 64-bit
 (1 row)
 postgres=> SELECT DISTINCT sourcefile FROM pg_settings;   sourcefile  --------------------------------------------
  /mnt/disks/pgsql/data/postgresql.auto.conf   /mnt/disks/pgsql/data/postgresql.conf  (3 rows)

バージョンはお任せにしてたので PostgreSQL 17 になってますが、18 も選べます。 設定ファイルの置き場所が /mnt/... になっていて、高性能な分散ストレージをマウントしているんだろうなぁと想像を巡らせました。

AlloyDB の特長である分析クエリの高速化などを実感したいところですが、それは別の機会にします。30日間の無料トライアルもある(2026年3月現在)ので、皆さんも試してみてはいかがでしょうか。

Microsoft Azure

続いて、Microsoft Azure にやってきました。

Azure Database for PostgreSQL

Azure Database for PostgreSQL は、2018年3月より一般提供され、2021年11月には Flexible Server がリリースされて現在に至ってます。

早速、データベースを作成してみます。設定項目にとまどいながらも、データベースインスタンスを起動できました。Cloud Shell から psql を起動して、データベースに接続します。


 postgres=> SELECT version();
                                    version                                    
 ------------------------------------------------------------------------------
  PostgreSQL 18.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 13.2.0, 64-bit
 (1 row)
 postgres=> SELECT DISTINCT sourcefile FROM pg_settings;   sourcefile  --------------------------------------------------------------------
  /datadrive/pg/data/conf.d/080-telemetry-dimensions.conf   /datadrive/pg/data/conf.d/postgresql.certoverrides.conf   /datadrive/pg/data/postgresql.conf   /datadrive/pg/data/conf.d/030-user-supplied-server-parameters.conf   /datadrive/pg/data/conf.d/000-instance-settings.conf   /datadrive/pg/data/conf.d/999-final-platform-overrides_18.conf  (7 rows)

設定ファイルはいくつかに分割されてますね。

続いて、Azure Cosmos DB for PostgreSQL にも立ち寄ろうかと思ったのですが、「提供終了パスにある」とのことなので、見送りました。機会があれば、Neon Serverless Postgres や Azure HorizonDB for PostgreSQL にもいどみたいと思いつつ、Azure を後にします。

Amazon Web Services

さて、大御所の Amazon Web Services にやってきました。

Amazon RDS for PostgreSQL

Amazon RDS for PostgreSQL は、2013年11月に一般提供が開始されたそうです。ここまで見た中では一番の古株ですね。

では、データベースを作成してみます。「データベース作成方法」で「簡単に作成」を選べば、2~3クリックでデータベースが作成できちゃいますね。無料利用枠もあって、今回の用途にはぴったりです。

データベースを作成したら、「接続とセキュリティ」で「クラウドシェル」を選択して、「クラウドシェルを起動」をクリックするだけで、Cloud Shell 上で psql コマンドが実行されます。


 postgres=> SELECT version();
                                                    version                                                    
 --------------------------------------------------------------------------------------------------------------
  PostgreSQL 18.3 on aarch64-unknown-linux-gnu, compiled by aarch64-unknown-linux-gnu-gcc (GCC) 12.4.0, 64-bit
 (1 row)
 postgres=> SELECT DISTINCT sourcefile FROM pg_settings;   sourcefile  -----------------------------------
  /rdsdbdata/config/postgresql.conf  (2 rows)

Amazon Aurora PostgreSQL

Amazon Aurora PostgreSQL は、2017年10月に一般提供が開始された PostgreSQL 互換のマネージドデータベースです。MySQL 版が先行していましたが、コンピュートとストレージを分離し、高いパフォーマンスとスケーラビリティを実現しています。

個人的には2017年頃からクラウドサービスに触れるようになっていたので、Aurora PostgreSQL の正式リリースを今か今かと待っていたのが思い出されます。そんな古い話は置いておいて、先に進みましょう。

Aurora も、ユーザインタフェースが RDS と統合されているので、データベースの作成や操作は容易です。


 postgres=> SELECT version();
                                                    version                                                    
 --------------------------------------------------------------------------------------------------------------
  PostgreSQL 17.4 on aarch64-unknown-linux-gnu, compiled by aarch64-unknown-linux-gnu-gcc (GCC) 10.5.0, 64-bit
 (1 row)
 postgres=> SELECT DISTINCT sourcefile FROM pg_settings;   sourcefile  -----------------------------------
  /rdsdbdata/config/postgresql.conf  (2 rows)

設定ファイルの置き場所も RDS と同じですね。

おわりに

次は、Oracle Cloud Infrastructure(OCI)の OCI Database with PostgreSQL に行くはずだったのですが、ここで時間切れとなりました。

NTTテクノクロスでは、本家 PostgreSQL だけでなく、各種の PostgreSQL 互換 DBaaS のノウハウを蓄積しております。PostgreSQL 界隈でお困りごとがありましたら、お気軽にご相談ください。

PostgreSQLのことならNTTテクノクロスにおまかせください!

NTTテクノクロス株式会社ではPostgreSQLに関する各種のお問い合わせや、移行に関する対応を受け付けています。
オンプレだけではなく、Azure、AWSなどのクラウド上でのシステムの導入、開発、維持管理のご相談もお待ちしております。

PostgreSQL の定額制チケットサービスはこちら


PostgreSQLへの移行サービスはこちら

著者プロフィール
北角 智洋
北角 智洋

NTTテクノクロス株式会社
IOWNデジタルツインプラットフォーム事業部
第三ビジネスユニット