【AWS】Amazon RDS for PostgreSQLについて解説します。

PostgreSQLは、世界中で広く利用されているデータベースのひとつです。最先端のビジネスアプリケーションおよびモバイルアプリケーションを実行するオープンソースのリレーショナルデータベースとして、多くのエンタープライズ開発者やスタートアップ企業に選ばれてきました。AWSにてこれからデータベースを触ってみたい方のために、Amazon RDS for PostgreSQLの紹介をしていきます。

■PostgreSQL(ポストグレスキューエル)

PostgreSQLはオープンソースのリレーショナルデータベース管理システム(RDBMS)です。Linux、macOSといったUNIX系OSはもちろん、Windowsにも対応しています。すべてのソースは公開されており、用途を問わず無料で利用できます。また、BSDライセンスというオープンソースのライセンスの中でも、非常に緩やかなライセンスを採用しているので、独自に機能の改編や追加を行っても公開義務はありません。

~リレーショナルデータベース管理システム(RDBMS)とは~
データベースは、簡単に言えばデータを保存しておく「箱」の集まりです。もっと言えば、その箱に仕切りをつけることで、簡単にデータを整理した状態でしまったり、そのデータを色々な場面で楽に取り出したりできるようにしたものがデータベースです。リレーショナルデータベース(RDB)は、その箱を列と行を持つテーブルのセット、つまり表形式で持ち、1つの箱=表に入ったデータを別の箱のデータと関連付けることで、複雑なデータや大規模なデータを柔軟に取り扱うことができるようにしてくれます。RDBMSは、このRDBをコンピューター上で操作できるようにした管理システムです。

■Amazon RDS for PostgreSQL

Amazon RDS for PostgreSQLの公式ページには
「わずか数回のクリックでクラウド内にリレーショナルデータベースをセットアップ、運用、スケール」と記載がされています。

Amazon RDSにより、クラウド内でPostgreSQLのデプロイを簡単にセットアップ、運用、スケールが可能であり、コスト効率が良く、サイズ変更が可能なハードウェア容量で、拡張性あるPostgreSQLを数分でデプロイできます。Amazon RDSでは、PostgreSQLソフトウェアのインストールとアップグレード、ストレージ管理、高い可用性と読み込みスループットのためのレプリケーション、災害対策用のバックアップなど、複雑で時間がかかる管理タスクを処理します。

Amazon RDS for PostgreSQLでは、これまで使用していたPostgreSQLデータベースエンジンと同じ機能を引き続き利用することが可能です。つまり、既存のデータベースで現在使用しているコード、アプリケーション、ツールをAmazon RDSで使用できます。Amazon RDSはPostgreSQLメジャーバージョン11をサポートしており、これにはパフォーマンス、信頼性、トランザクション管理、クエリの並列処理などに対する機能強化が多く含まれています。

■Amazon RDS for PostgreSQLの利点

◇マネージド型で簡単なデプロイ◇
AWSマネジメントコンソールで数回クリックするのみで、本番環境ですぐに使えるPostgreSQLデータベースを数分で起動します。Amazon RDS for PostgreSQLのデータベースインスタンスは事前に設定され、選択したサーバータイプに合わせてパラメータと設定が決められています。さらにデータベースパラメータグループでは、PostgreSQLデータベースの詳細な管理と微調整が可能です。

◇高速で予測可能なストレージ◇
Amazon RDSでは、PostgreSQL向けにSSDベースのストレージオプションが2つあります。汎用ストレージは、小規模または中規模のワークロード向けでコスト効率が良いストレージです。高パフォーマンスのOLTPアプリケーション用として、プロビジョンドIOPSは1秒あたり最大40.000 IOの一定のパフォーマンスを実現しています。ストレージに対する要求が増大した場合、オンザフライ方式によって、追加ストレージをゼロダウンタイムで運用が可能な状態にすることもできます。

OLTP:コンピュータシステムの処理方式の一種で、互いに関連する複数の処理を一体化して確実に実行するトランザクション処理を、端末などからの要求に基づいて即座に実行する方式。
IOPS:ハードディスクやSSDなどのストレージ(外部記憶装置)の性能指標の一つで、ある条件の元で1秒間に読み込み・書き込みできる回数。
オンザフライ方式:イメージファイルを作成せずに直接CD-Rメディアへ書き込みを行なう。 ハードディスクドライブに空き容量が少なくてもCD-Rを焼けることや、書き込み時間が短縮出来るメリットがある。

◇バックアップと復旧◇
Amazon RDSの自動化されたバックアップ機能を使用すると、指定した保持期間(最大35日)のどの時点にでもPostgreSQLデータベースインスタンスを復旧できます。また、DBインスタンスに対してユーザーによる任意のバックアップを実行できます。この完全なデータベースバックアップは、利用者が明示的にバックアップを削除するまで、Amazon RDSによって保存されます。

◇高可用性とリードレプリカ◇
Amazon RDSマルチAZ配置は、PostgreSQLの可用性と持続性を高め、プロダクションデータベースのワークロードに最適です。Amazon RDSリードレプリカを使用すると、読み取り頻度の高いデータベースワークロードに対して、1つのデータベースインスタンスの容量制限を超えたスケールアウトを伸縮的に簡単な方法で実行できます。

Amazon RDSマルチAZ配置:必要に応じて(または自動フェイルオーバー向けに)、プライマリDBインスタンスが別のアベイラビリティーゾーンにあるスタンバイインスタンスに同期的にレプリケートを可能にした構造。
Amazon RDSリードレプリカ:データベースの安全性を高めたり、負荷分散のために作成される、読み込み専用の複製。

◇モニタリングとメトリクス◇
Amazon RDS for PostgreSQLでは、データベースインスタンスのAmazon CloudWatchメトリクスが追加料金なしで提供されます。また、Amazon RDSの拡張モニタリングでは、CPU、メモリ、ファイルシステム、ディスクI/Oの50を超えるメトリクスを使用できます。コンピューティング、メモリ、ストレージ容量の使用率、I/Oアクティビティ、インスタンス接続などの主要なオペレーションメトリクスはAWSマネジメントコンソールで確認できます。

Amazon CloudWatch:AWSリソースとAWSで実行するアプリケーションのモニタリングサービス。

◇隔離とセキュリティ◇
マネージドサービスとして、Amazon RDSではPostgreSQLデータベースに対する高度なセキュリティを実現しています。このようなセキュリティには、Amazon Virtual Private Cloud(VPC)によるネットワーク分離、AWS Key Management Service(KMS)を利用して作成および制御されるキーを使用した保管時の暗号化、SSLによる転送データの暗号化が含まれます。

Amazon Virtual Private Cloud(VPC):AWSクラウドの論理的に分離されたセクションをプロビジョニングすることで、ユーザーに仮想プライベートクラウドを提供する商用クラウドコンピューティングサービス 。
AWS Key Management Service(KMS):暗号化キーを安全に保護し、他のAWSのサービスやカスタムアプリケーションに対して暗号化 / 復号、署名、検証の実行を許可するウェブサービス。

■サポートされるPostgreSQLの機能

PostGIS
PostGISはPostgreSQLオブジェクトリレーショナルデータベース用の地理空間データベース拡張です。地理オブジェクトがサポートされているので、SQLで場所のクエリを実行できるようになります。

言語拡張
PostgreSQLでは、拡張によってプロシージャ言語をデータベースに読み込むことができます。PostgreSQLには4つの言語拡張が含まれており、Perl、pgSQL、Tcl、JavaScript(V8 JavaScriptエンジンによる)がサポートされます。

全文検索ディクショナリー
PostgreSQLは全文検索機能をサポートしており、クエリを満たす自然言語ドキュメントを特定し、必要に応じてクエリとの関連性で結果を並べ替える機能があります。これにより、検索品質、ストップワードの正規化と削除が向上しただけでなく、クエリのパフォーマンスも改善されました。

hstore、JSONデータ型
PostgreSQLは、JSONデータ型と2つのJSON関数をサポートしています。これによって、データベースサーバーから直接JSONを返すことができます。また、hstoreデータ型を実装する機能があり、1つのPostgreSQL値内にキー/値ペアのセットを格納できます。

pg_stat_statements
この拡張を使用すると、ユーザーID、実行された正確なクエリ、総消費時間など、インスタンスで実行されたすべてのSQLステートメントに関する実行統計を追跡できます。

外部データラッパー
postgres_fdw 拡張を使用すると、他の PostgreSQL サーバーに格納されているデータを、Amazon RDS for PostgreSQL DB インスタンス内のテーブルの場合と同じように、アクセスして変更できます。

■Amazon RDS for PostgreSQLへの移行

もしすでにPostgreSQLを全面的に利用しており、AWSへの移行を検討中の場合、Amazon RDSへの移行は大変簡単に実現できます。一般的に、アプリケーションをAmazon RDSに移行するには、以下の手順になっています。

①必要な計算処理、ストレージ能力、アクセスコントロールを持つDBインスタンスを作成
②pg_dumpを使用し、インポートされるデータのダンプを作成
③psqlを使用し、DBインスタンスにデータベースを作成、そしてダンプをロード
④configファイル内で、データベース接続文字列を更新

■まとめ

「Postgresユーザに切り替えるのが不便で分かりにくい」といった声も見かけましたが、安全のための設定のようで、このことからもAWSのセキュリティ面において信頼に繋がっていることがうかがえます。セキュリティはデータベースにおいては重要事項のひとつです。チュートリアル内だと、全作業を無料枠内にて実行することができるため、この機会に一度挑戦してみてはいかがでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です