clock2017.11.01 11:21
SERVICE
home

Azure Database for PostgreSQL を使ってみた ~Amazon RDS と使い勝手を比較~

AUTHOR :   ギックス

フルマネージドのシンプルな Azure Database for PostgreSQL

Microsoftのデータベースと言えば”SQL Server”です。そして、SQL Server はオンプレミスだけではなく、Azureクラウドサービスにも SQL Database として提供されています。他のデータベースは?というと今までAzureからは提供されていませんでしたが、やっとPostgreSQLとMySQLが Azure Database として提供されました。

まだ、プレビューリリースではありますが、使える機能が増えましたので、Azure Database のPostgreSQL版の Azure Database for PostgreSQL (以下、Azure DB)について、Azure SQL Database (以下、Azure SQL DB)、Amazon RDS for PostgreSQL (以下、RDS)と機能面での比較をしたいと思います。

Azure Database for PostgreSQL とは?

Azure Database for PostgreSQL は、名前の通りPostgreSQLを乗せたAzureのクラウドデータベースです。そして、Azure SQL DBと同様にGUIの管理画面から簡単にデータベース環境を構築できます。

対応しているPostgreSQLのバージョンは9.5と9.6のみで、RDSのようにPostgreSQLの 9.3.12-R1 から 9.6.3-R1 のように幅広く、かつビルドバージョン単位の細かいレベルのバージョン選択はできません。検証ではPostgreSQLのバージョン 9.6を選択して環境構築しましたが、内部のデータベースのバージョンは現在最新のPostgreSQL 9.6.5 でした。(自動でアップデートされるかは不明)

Azure DB と Azure SQL DB で根本的に違う事として、Azure DB の提供単位はデータベース単位なのに対して、Azure SQL DB はデータベースサーバー単位で提供しているようです。このため、Azure DB はデータベースサーバー内のデータベースの作成・管理はAzureの管理画面から行えますが、Azure DB はデータベースサーバー内に新たなデータベースを作成する時はデータベースのコマンドを実行することになります。

Azure Database for PostgreSQL のイケてるとこ

シンプルで簡単に設定できる

Azure DB を新規作成する場合、以下の項目だけを1画面に入力するだけです。(他の項目はデフォルトのままでOKの場合)

  • サーバー名
  • リソースグループ
  • サーバー管理者ログイン名
  • ログインパスワード

あとは、接続を許可するグローバルIPをファイヤーウォールで設定するだけで、外部から Azure DB アクセスできるようになります。

また、データベースの環境変数の設定も下記のように項目説明があり、プルダウン選択などの入力インターフェースが充実しているため、非常に便利です。

RDSもウィザード形式でデータベース環境を作れますが、設定項目が多く、ある程度のクラウドの知識は必要です。しかし、Azure DB は特にクラウドの知識がなくてもデータベース環境が構築できますので、初心者でも扱いやすいと思います。

拡張機能追加が可能

クラウドデータベースでは、フルマネージドでデータベースを構築・管理できますが、データベース自体への拡張機能に対しては自由度がそれほど高くありません。クラウドデータベースの機能は、環境構築時の状態から拡張機能追加は殆どできない事があります。

しかし、Azure DB は、多くの拡張機能をサポートし、後から任意でデータベースのコマンドを使って機能追加が行えるようです。

パフォーマンス変更が速い

Azure DB ページのトップにパフォーマンス(スケール)変更が速いという説明があります。実際に試したところ、15GBのデータ量で1分前後でスケールアップ/ダウンできました。完全に同じ環境ではありませんが、RDSよりパフォーマンス変更が速いかもしれません。

もし、Azure DB が Azure SQL DB と同じ仕様なら、データベースのディスクサイズもスケールアップ/ダウンが可能になりますので 、ディスクサイズのスケールアップしかできないRDSより自由度が高くなるかもしれません。(まだプレビュー中のため未確認)

このため、Azure DB は「データベースの負荷によってパフォーマンス変更する」ような運用に向いていると思います。例えば、使用頻度の少ない夜間はスケールダウン、月次の大規模なバッチの時にスケールアップなどの操作をプログラム、または管理画面から行うことでコスト削減ができるのではないでしょうか?(Azure DB は「ダウンタイムなし」らしいですが、一度データベース接続が切れるため注意)

バックアップ/複製作業が面倒かも?

それなりに良いところがある Azure DB ですが、これだけは何とかして欲しいというというのが1点。バックアップ/複製機能がクラウドサービスして提供していないところです。

RDSの場合、クラウドサービスとして動いているデータベースのデータをスナップショットという形でバックアップを取り、RDSの停止(削除)、またはバックアップから複製したRDSを構築することが可能です。しかし、Azure DB はクラウドサービスでバックアップ機能はありません。バックアップを行う場合はPostgreSQLの標準的な方法でデータベースダンプを取る必要があります。

Azure SQL DB にもバックアップ機能はありませんが、データベースの複製機能はあります。せめて、複製機能があれば稼働中のデータベースから複製し、それを開発・テスト用データベースとして使えるため便利なのですが。。。

Azure内に既存システムがあれば乗り換える価値はある

Azure DB には新しい機能はありませんが、簡単、かつ安価にフルマネージドのPostgreSQLを構築できます。そのため、今まで自前でAzure仮想マシン上にPostgreSQLを頑張って構築していたシステムでは、Azure DB に乗り換えることで運用負担は減ります。また、これからAzure内にシステムを構築しようと考えている場合、SQL Server 以外にPostgreSQLとMySQLが増えたことでデータベースの選択の幅も増えました。

現在、Azure DB はプレビュー中のため、新しい機能追加やレスポンスの改善、課金体系の見直しが行われて行くと思います。落ち着いたぐらいに Azure DB の導入を検討してみては如何でしょうか?

SERVICE