This is the Trace Id: 1440f29a127ec6019220aaf9522cfc6b
メイン コンテンツへスキップ
Azure

PostgreSQL とは?

PostgreSQL の仕組み、用途、それが最新のワークロードに人気のある選択肢になっている理由について説明します。

PostgreSQL の定義

PostgreSQL (通称「Postgres」) は、SQL を使って構造化データの格納、管理、クエリを実行するためのオープンソースのリレーショナル データベース システムです。強力なデータ整合性、信頼性、高度な機能により、小規模なアプリケーションから大規模な基幹業務システムまで、幅広い用途で信頼される選択肢となっています。

  • PostgreSQL は、強力なデータ整合性、表現力豊かな SQL クエリ、大規模な環境下でも予測可能な動作を必要とするアプリケーション向けに設計された、信頼性の高いオープンソースのリレーショナル データベースです。 
  • 柔軟なデータ モデルにより、チームはアプリケーションのニーズの進化に応じて従来のリレーショナル テーブルと JSONB などの半構造化データ型を組み合わせることができます。
  • PostgreSQL は、高度なインデックス作成、堅牢なトランザクション処理、カスタム関数や拡張機能による拡張性など、独自のロックインなしに豊富な機能セットを提供します。 
  • PostgreSQL の利用範囲は、Web アプリケーション、サービスとしてのソフトウェア (SaaS) 製品、分析、レポート、正確性が重要な運用システムなど、多岐にわたります。 

PostgreSQL の概要

開発者や組織は、複雑なデータ関係を処理し、柔軟なデータ モデルをサポートし、アプリケーションの進化に伴って強力なデータ整合性を維持できるデータベースが必要な場合に、PostgreSQL を選択します。 

実際には、アプリケーションは、SQL データベースとして機能する PostgreSQL データベース サーバーに接続します。アプリケーションは SQL クエリをデータベース エンジンに送信し、データベース エンジンはデータの格納、インデックス作成、返却の方法を管理するとともに、テーブル間のリレーションシップを維持します。

信頼できるリレーショナル データベース

PostgreSQL はリレーショナル データベースとして、行と列で構成されるテーブルにデータを格納します。テーブルはキーを使って相互にリンクすることができ、これによりデータの一貫性が保たれ、無効なリレーションシップを防止します。例えば、注文テーブルを顧客テーブルにリンクし、すべての注文が常に有効な顧客に対応するようにルールを適用できます。

このリレーショナル モデルは、正確性が重要であり、データ ミスが大きな損失につながるシステムにおいて PostgreSQL が使用される主な理由の一つです。

PostgreSQL は一般的に以下の用途に使用されます:

  • 信頼性の高いバックエンドを必要とする Web アプリケーションやモバイル アプリケーション。
  • 請求、在庫管理、CRM (顧客関係管理) アプリケーションなどのビジネス システム。
  • SQL クエリに基づいて構築されたレポートおよび分析ワークロード。
  • 金融や医療関係のツールなど、データの正確性と一貫性が極めて重要なシステム。

PostgreSQL がサポートするデータ型と構造

PostgreSQL は、基本的なテキストや数値にとどまりません。幅広いデータ型と構造をサポートしており、データベース スキーマを現実世界のデータやアプリケーションのニーズに忠実に反映させることができます。

一般的な PostgreSQL のデータ型と構造には以下のものがあります:

  • 整数、小数、テキスト、タイムスタンプ、ブール値などの標準的な型。
  • JSON および JSONB は、半構造化データ向けであり、データ形式が時間とともに変化する場合に便利です。
  • 必要に応じて、値のリストを単一の列に格納するための配列。
  • 公開識別子や分散型識別子としてよく使われるUUID (ユニバーサル一意識別子)。
  • 日付範囲や数値範囲などの範囲型。
  • 大きなテキスト フィールドをクエリするための組み込み型全文検索ツール。

PostgreSQL が他のリレーショナル データベースと異なる点

PostgreSQL は MySQL、MariaDB、Microsoft SQL Server、Oracle Database といった他のリレーショナル データベースとよく比較されます。これらすべてのシステムは SQL をサポートしていますが、理念や設計が異なります。

以下にいくつかの違いを示します:

  • オープンソースかつ標準重視: PostgreSQL は強力な SQL 標準のサポートと、リレーショナル データベース理論に忠実に従いながらも、実際のアプリケーションで実用的な設計になっていることで知られています。
  • 機能の深さ: PostgreSQL は、高度なデータ型 (JSONB など)、柔軟なインデックス作成、厳格なトランザクション動作が必要な場合によく選ばれています。
  • 拡張性: PostgreSQL は拡張可能に設計されており、アプリケーション ニーズの進化に応じてカスタム関数、演算子、さらには新しいインデックス方式を追加できます。

PostgreSQL の機能

複雑なデータ モデル、表現力豊かな SQL クエリ、実世界のワークロードでの信頼性の高いパフォーマンスをサポートするよう設計された  PostgreSQL  は、最新のアプリケーション向けに幅広い機能を提供します。 

高度なインデックス作成オプション

インデックスはデータベースが行を素早く見つける方法であり、本の索引が適切なページを 見つける のに役立つのと 似ています 。 PostgreSQL  は複数のインデックス型をサポートし、それぞれ異なるクエリ パターンに適しています。次に例を示します:

  • 一般的な検索とソートのための B ツリー インデックス
  • 特定のケースにおける等価性チェックのためのハッシュ インデックス
  • JSONB、配列、全文検索、その他の複雑なデータ向けの GIN および  GiST  インデックス
  • 時系列データなどの自然に順序付けられた 非常に大きな テーブル向けの BRIN インデックス

データベースの規模が拡大し、パフォーマンス 要件 が高まるにつれて、高度なインデックス作成 オプション の重要性が 増していきます 。

複雑なクエリと強力なトランザクション

PostgreSQL  は、結合、サブクエリ、ウィンドウ関数、共通テーブル式 (CTE)、複雑な集計などの高度な SQL 機能をサポートしています。そのため、表現力豊かなクエリや詳細なレポート ロジックを必要とするアプリケーションに最適です。

トランザクションは  PostgreSQL のもう一つの中核となる機能です。トランザクションは、複数のデータベース変更を単一の操作にまとめ、すべてを実行するか、何も実行しないかのどちらかにします。途中で何らかのエラーが発生した場合、 PostgreSQL  はデータの一貫性を保ち部分的な更新を避けるためにトランザクション全体をロールバックできます。

拡張性とカスタム関数

PostgreSQL の特徴の一つは 拡張性 です。 これは アプリケーションのドメインに適応するよう設計されており、データを固定的なモデルに押し込めることはありません。

 PostgreSQL では、以下のものを作成できます:

  • カスタム ロジックをカプセル化し、SQL から直接呼び出せるユーザー定義関数。
  • カスタム データ型とカスタム演算子。 それらは 、特定のドメイン ルールに合わせてデータベースの動作を調整する必要がある場合に役立ちます。
  • パフォーマンスの向上、 追加の データ型、 監視 ツールなどの新機能を追加する拡張機能。

コンカレンシーとパフォーマンスの最適化

実際のアプリケーションでは、単一のユーザーしか存在しないことは稀です。 通常は 、多くのユーザーが同時にデータの読み書きを行います。

PostgreSQL  はマルチバージョン同時実行制御 (MVCC) を使用して同時アクセスを管理します。実際には、読み取り側は通常、書き込み側をブロック せず 、書き込み側も読み取り側をブロックする頻度が単純な同時実行モデルより 少なくなります 。その結果、ユーザー アクティビティを処理しながらレポートを実行するような混合ワークロードで、よりスムーズなパフォーマンスが得られます。

PostgreSQL  には、クエリ計画、統計情報の収集、クリーンアップのためのバキューム処理、高可用性をサポートするレプリケーション オプションなど、パフォーマンス チューニングとメンテナンスのための組み込みツールも含まれています。

PostgreSQL の利点

データベースを選択する際には、個々の機能を評価するだけでなく、長期的な信頼性、柔軟性、そしてアプリケーションの進化に合わせてシステムがどれだけ適切にサポートできるかを考慮する必要があります。PostgreSQL は、開発者、アーキテクト、企業にとって重要な実用的な利点を提供するため、広く採用されています。

オープンソースの利点 (コストと制御)

PostgreSQL を使うと、組織はデータベースの使用方法やスケールをより細かく制御できます。具体的には、以下のようになります:

  • 利用開始にあたってライセンス料は不要です
  • PostgreSQL を自社インフラストラクチャまたはクラウド環境で自由に実行できます
  • 独自のライセンス モデルに縛られず、ベンダー ロックインはありません

コミュニティのサポートとドキュメント

PostgreSQL は数十年にわたり活発に開発されており、大規模で経験豊富なグローバル コミュニティの恩恵を受けています。その専門知識は、充実したドキュメント、メーリング リスト、フォーラム、多種多様なサードパーティ製ガイドやツールに表れています。

PostgreSQL を扱うチームにとって、これらのリソースは、問題のトラブルシューティング、成功事例の学習、移行やパフォーマンス改善の計画を自信を持って行うのに役立ちます。

信頼性とデータ整合性

アプリケーションが正確なデータに依存する場合、信頼性は譲れない要素となります。PostgreSQL は正確性とデータ整合性を重視していることで知られています。

外部キー、一意制約、チェック制約などの制約に加え、堅牢なトランザクション動作をサポートしています。これらの機能は、アプリケーションにバグがあったり、複数のサービスが同時にデータベースに書き込んだりしても、不正なデータ状態を防ぐのに役立ちます。

財務記録、ユーザー アカウント、運用データを扱うシステムでは、この信頼性により、気づかないうちに発生するデータの破損や、診断が困難なエラーのリスクが低減します。

多様なアプリ スタイルに対応できるスケーラビリティと柔軟性

PostgreSQL は幅広いアプリケーション規模とワークロードに対応できます。PostgreSQL データベースは、小規模なアプリケーション向けに単一サーバー上で開始し、後から以下のような構成に拡張することができます:

  • 読み取りレプリカを使用して、読み取り負荷の高いワークロードを拡張します。
  • 大規模または急速に増加するデータセットを管理するためのパーティション分割テーブル。
  • 高いコンカレンシーのための接続プーリングと調整されたインデックス作成。

PostgreSQL はデータのモデリング方法においても柔軟性に優れています。チームは、構造化データには従来のリレーショナル スキーマを使用しながら、ユーザー設定や構成データなど頻繁に変わるアプリケーションの部分には JSONB を組み込むことができます。この柔軟性により、スキーマの再設計を絶えず行うことなく、アプリケーションを進化させることができます。

PostgreSQL のユース ケース

PostgreSQL は強力なリレーショナル基盤と、進化するデータ ニーズに対応する柔軟性を兼ね備えているため、多くの業界やアプリケーション タイプで使用されています。これらの PostgreSQL のユースケースは、日常的なアプリケーション ワークロードと、より特化されたシナリオの両方をサポートする方法を示しています。 

Web アプリケーションと SaaS 製品

PostgreSQL は、ユーザー、アカウント、権限、アクティビティ データを管理する Web アプリケーションや SaaS 製品で一般的に選ばれています。リレーショナル モデルを採用しているため、データ間の関係性を容易に強制でき、移行を通じてスキーマ変更を適用し、利用量の増加に伴うパフォーマンスの予測可能性を維持することができます。 

SaaS チームにとって、PostgreSQL のトランザクションの信頼性とインデックス作成オプションは、不要な複雑さを招くことなく、サインアップ、請求イベント、監査ログなどのコア ワークフローをサポートするのに役立ちます。 

分析とレポート作成

PostgreSQL は、特にチームが別途分析システムを展開せずに SQL ベースのインサイトを得たい場合に、レポート作成や分析ワークロードによく使用されます。また、PostgreSQL は、特にチームが SQL を使用して運用ワークロードと分析ワークロードを統合したい場合に、構造化レポート作成や分析のための軽量なデータ ウェアハウスとして使用されることもあります。 

分析によく使用される PostgreSQL の一般的な機能には、以下のものがあります:

  • 累計、ランキング、および時間ベースの比較を行うためのウィンドウ関数。 
  • 事前計算された要約や、より高速なダッシュボードを実現するマテリアライズド ビュー。 
  • フィルターと結合の応答性を維持するインデックス作成戦略。 

PostgreSQL はあらゆる専門的な分析プラットフォームの代替となるものではありませんが、多くの場合、より少ない構成要素で運用レポートやビジネス インテリジェンスのニーズを満たすことができます。 

財務および運用システム

PostgreSQL は、財務追跡、注文管理、運用ツールなど、正確性と一貫性が極めて重要なシステムに最適です。強力なトランザクション保証と制約の強制により、複数のプロセスが同時にデータを更新する場合でも、レコードの一貫性が維持されます。 

これにより PostgreSQL は、クエリの柔軟性を損なうことなく、信頼できる記録管理が必要なアプリケーションの実用的な基盤となります。 

地理空間および地図作成プロジェクト

PostgreSQL は、別途インストールする地理空間拡張機能と組み合わせることで、位置情報データを扱うアプリケーションで一般的に使用されます。これらのシステムは、座標を保存し、距離を計算し、点、線、多角形などの形状を扱うことができます。 

「近くに何がありますか?」 または「この場所はどのエリアに属しますか?」 といった質問に答えるアプリケーションは、空間クエリの信頼できるバックエンドとして PostgreSQL に依存することがよくあります。 

依然として SQL が必要な JSON 多用の API

最新の API は、時間とともに変化する半構造化データを扱うことがよくあります。 PostgreSQL は JSONB を通じてこのパターンをサポートしており、チームは SQL クエリ、インデックス作成、トランザクション処理の恩恵を受けながら、柔軟なデータ構造を保存できます。 

このアプローチは、機能フラグ、ユーザー設定、メタデータなど、アプリケーションの一部が急速に変化する一方で、支払いやアクセス許可など、他の領域では厳密な関係的一貫性が求められる場合に特に有効です。 

チームが PostgreSQL を選ぶ理由

PostgreSQL  は、信頼性の高いデータ ストレージ、表現力豊かな SQL クエリ、強力なデータ整合性を必要とするアプリケーション向けに構築されたオープンソースのリレーショナル データベースです。高度な機能、柔軟なデータ モデリング、標準に基づく設計の組み合わせにより、単純なアプリケーションから複雑な基幹業務システムまで、あらゆる用途に適しています。 

実績のある信頼性、活発なオープンソース コミュニティ、幅広いユース ケースへの対応により、 PostgreSQL  は、アプリケーション要件の変化に合わせて適応できる、チームにとって信頼できる基盤を提供します。 

よくあるご質問

  • PostgreSQL は、SQL を使って構造化データの格納、管理、クエリを実行するためのオープンソースのリレーショナル データベースです。 組織は、複雑なデータ リレーションシップ、強力なデータ整合性、信頼性の高いトランザクション処理をサポートするデータベースが必要な場合に PostgreSQL を使用します。 Web アプリケーション、SaaS 製品、分析、データの正確性が重要なシステムで、一般的に使用されます。
  • SQL は、リレーショナル データベース内のデータを照会および管理するための標準言語です。 PostgreSQL は、SQL を使用してデータを格納、取得、管理するデータベース システムです。 簡単に言うと、SQL は言語であり、PostgreSQL は SQL クエリを理解し実行するデータベース ソフトウェアです。 
  • いいえ、PostgreSQL はプログラミング言語ではありません。それはデータベース管理システムです。 PostgreSQL はデータの照会に SQL をサポートし、SQL その他のサポートされている言語を使用して関数を作成できますが、データベース自体は汎用プログラミング言語ではなく、データを格納および管理するソフトウェアです。 
  • PostgreSQL は、リレーショナル データベースと SQL に慣れている人なら一般的に扱いやすいです。テーブルの作成、クエリの作成、データの操作などの基本的な作業は、SQL の経験があれば簡単です。 パフォーマンス チューニング、インデックス作成戦略、カスタム拡張機能などの高度な機能は習得に時間がかかる場合がありますが、PostgreSQL のドキュメントおよびコミュニティ リソースにより、ニーズが複雑になるにつれてスキルを伸ばしやすくなっています。