BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

Azure Database for PostgreSQL の入門 Tips と Data Studio を使って接続

Azure Database for PostgreSQL を作って Azure Data Studio でアクセスしてみようってお話です。
SQL Database と Cosmos DB ばかり触っているので、PostgreSQL をいじったり参考ドキュメントの整理にメモしてみました。

Azure Database for PostgreSQL (Single Server) の概要

単一サーバー(Single Server) と Hyperscale (Citus) があります。Single Server は文字通り、Citus の方はシャーディングを使用して複数のマシン間でクエリを並列処理できるやつ強いやつですね。

ここでは Single Server にフォーカスして雑に把握したい概要を書きます。

バージョン

サポートされている PosgtreSQL のバージョンはこちらで確認できます。

冗長化

Azure SQL Database 同様に Servcie Fabric 上に構築されており、"Azure あるある"な仕様で冗長化されています。

つまり、Single Server = 3重の冗長化がされています。普通にステキです。

そんなわけで勝手に管理してくれる分、たまに内部で(アップデートとかのために)フェールオーバーするので、プログラムで接続する際は接続のリトライとかは普通に仕込んでおくべきです。クラウド使うなら、いやクラウドじゃなくても常識の範疇ですね。

バックアップ

バックアップは勝手にやってくれます(雑の極みか...)。こちらで確認できます。

セキュリティ

セキュリティについては、暗号化やアクセス管理、ネットワークのセキュリティや Advanced Threat Protection まで、Production 環境で運用に必要なものはついています(そりゃそーだ)。詳しくはこちらで確認できます。

その他

知りたい情報は公式ドキュメントと公式のブログであさるのがよいでしょう。

お値段

料金プランは主に 3つのカテゴリーがあります。何が違うかを雑に説明すると、ストレージの上限、vCore 数、メモリに差があります。

  • Basic
  • 汎用 (General Purpose)
  • メモリ最適化 (Memory Optimized)

この中でさらに vCore を指定したりストレージの容量を設定することで料金が変わってきます。
Basic で一番安いのは 1 vCore + 5GB のストレージにしておけば月額3000円弱。Production 環境に使うなら、汎用(約1.5万/月~)かメモリ最適化(約2万/月~)とかでしょうねー。
3重の冗長化がされていることを考えると、自分でそんな構成組んで管理することを考えれば高くない値段でしょうねー(と個人的には思う)。

Azure ポータルから作成と基礎的な Tips

ポータルをポチポチやるだけで簡単に作成できます。手順はドキュメントを見るほどでもないで特に書きません。

ファイアウォールの設定

作成後は、ファイアウォールで保護されてるので外から繋がりません。この後接続するので、Azure Portal 上から自分の IP を追加して接続できるようにします。
Azure ポータルで作成した PostgreSQL のリソースを開き > 接続のセキュリティ を開きます。クライアント IP の追加 をクリックすると、自分の IP が入力されます。あとは 保存 をクリックすれば設定完了です。

f:id:beachside:20200102162926p:plain

診断設定

余談ですが、Azure Database for PostgreSQL に関わらず Azure のリソース作成後にやっておきたいことのひとつとして、診断設定 があります。
Azure ポータルで作成したリソースを開き、診断設定 のメニューをクリック > 診断設定を追加する をクリックします。
診断設定の画面が表示されるので、Log Analytics への送信 をチェックします。あとはワークスペース選んで出力するログや metric をチェック(基本的に全部チェックいれてよいかなと)します。
これでログやメトリックを Log Analytics で検索できるようになるので本番運用時にあると便利です。

クエリストアの有効化

Azure SQL Database ではクエリパフォーマンスを自動で集計してくれる機能がありますが、この機能は、Azure Database for PostgreSQL でも利用できます。ただ、デフォルトではオフになっているので、オンにしてあげるとパフォーマンス分析がいい感じにできます。

設定方法はポチポチするだけなのでドキュメントのリンクを貼っておきます。

Application Insights でのトレース

ASP.NET Core などで作ったアプリから Azure Database for PostgreSQL を呼び出して使う際の Tips です。

例えば ASP.NET Core で作ったアプリを Web Apps にホストする際に Application Insights を組み込んでおくと、 Web Apps から Cosmos DB や Storage とかへ接続してどれくらいの時間がかかったみたいなことは自動追跡されます。Azure Database for PostgreSQL は自動追跡されないため、手動でする必要があります。

手動でログを書く際は以下を参考にすることで、いい感じ( Cosmos DB とかが自動追跡してログを出している感じ)に出力できますので参考にしましょう。

Azure Data Studio を使って接続

psql で接続してみても普通過ぎるので、Azure Data Studio というツールでアクセスしてみましょう。
Azure Data Studio は色んな DB にアクセスできるクロスプラットフォームのツールです。VS Code のように拡張機能を追加して機能を拡張するスタイルなので色んなDBに接続できます。
接続の管理やスクリプトの管理とかもかなりいい感じだし、Jupyter Notebook が使えたり SQL や PySpark の Notebook が使えるのも便利ですね。

まず、Azure Data Studio が未インストールの場合はこちらから Data Studio をダウンロードしてインストールします。

インストールが完了したら、Azure Data Studio を起動してPsogreSQL の拡張をインストールします。
左側の Extensions をクリック > 検索で pos くらいを入力すると PostgreSQL の拡張が表示されます。インストールしましょう。

f:id:beachside:20200102172727p:plain

では PostgreSQL に接続してみましょう。左メニューの Connections > SERVERS を開く > New Connection をクリックします。

f:id:beachside:20200102173413p:plain:w400

Connection の画面がぴよっと出てきますので、接続情報を入力します。

サーバー名は、Azure ポータルで作成した Azure Database for PostgreSQL のリソースを開き、概要のメニューに記載されている サーバー名 を入力します。
ユーザー名は、今回はリソース作成時に作った Admin のユーザーを入力しました。注意点として、ユーザー名 + ホスト名( @ + サーバー名)の入力が必要です。
後は適当に入力する感じです。

余談ですが開発で利用する際のユーザー管理は、Azure AD のグループを使って管理をする方がよさそうですね。

f:id:beachside:20200102174233p:plain:w400

接続出来たらこんな感じで見えます。New Query New Notebook をクリックしてクエリを実行することができます。

f:id:beachside:20200102182120p:plain

試しに Notebook を使うと、こんな感じで Jupyter Notebook のように使えます。query を順番に実行しながら結果を確認できるので、チュートリアルとかデモとかやるのにも便利そう。

f:id:beachside:20200102181835p:plain

参考