PostgreSQL(「Postgres」と略記されることもあります)は、世界で最も先進的なオープンソースのオブジェクト リレーショナル データベースです。エンタープライズ レベルのパフォーマンスを実現するよう設計されており、堅牢な機能と信頼性を重視しています。
Postgres は、カリフォルニア大学バークレー校の以前のデータベースである Ingres の進化形として 1986 年に実装が開始されました。1994 年以来、クエリとトランザクションに構造化クエリ言語(SQL)を使用しており、個人や企業の開発者のコミュニティによって継続的に更新されています。
SQL の開発と使用の長い歴史から、PostgreSQL は世界で最も人気のあるオープンソース データベースの一つとなり、すべての主要なクラウド ベンダーが PostgreSQL または PostgreSQL から派生したデータベースをサービスとして提供しています。
AlloyDB、Cloud SQL for PostgreSQL、Spanner など、Google Cloud の PostgreSQL データベースの無料トライアルにお申し込みください。
リレーショナル データベースでは、データを行と列からなる構造化テーブルに保存し、リンクされたデータに関する情報を複数のテーブルで維持します。
たとえば、あるリテールバンクには、顧客情報の行を含むテーブルが存在し、各行には顧客の名前、電話番号、住所が列として含まれる場合があります。取引情報を保存する 2 つ目のテーブルが存在する可能性もあります。リレーショナル データベースでは 2 つのテーブル間で行がリンクされるため、銀行はどの顧客がどの取引を行ったかを追跡できます。
「クエリ」は、データベースから情報を要求する単一のオペレーションです。「トランザクション」とは、データベース内のデータを処理できる一連のオペレーションのことです。基本的なストレージ オペレーションは一般に「CRUD」と呼ばれます。これは、create(作成)、read(読み取り)、update(更新)、delete(削除)の頭文字をとったものです。
データベースからの情報の取得を最適化するために、PostgreSQL はインデックス(検索を高速化するために再編成されたテーブルの一部のコピー)を利用します。概念的には、これは書籍全体をスキャンしなくても項目をすぐに見つけることができる、書籍の巻末にある索引に似ています。
リレーショナル データベースである PostgreSQL は、「スキーマ」と呼ばれる正式な記述を使用して、含まれるデータの構造を記述します。一般的にスキーマはデータベース内のテーブル、インデックス、関数のコレクションであり、PostgreSQL は複数のスキーマをサポートしています。
データベースの専門家は、データとアプリケーション ユーザーによるデータの使用方法を最適に表すスキーマと一連のインデックスを設計する責任を負います。また、データ セキュリティとデータベースのスムーズな運用を維持するためのメンテナンスや運用タスクにも従事します。
バークレーでの開発以降、PostgreSQL はオープンソースを貫いています。つまり、コードは表示、変更、配布に対して完全にオープンです。
デベロッパーは、オープンソース データベースをアプリケーションに使用できます。ライセンス費用は不要で、デプロイに高い柔軟性も備えています。これらのデータベースは、さまざまなクラウド プラットフォームと非クラウド プラットフォームで稼働しているからです。開発者のコミュニティはセキュリティと信頼性を向上させながら、ソフトウェアの改善とメンテナンスに貢献できます。
近年、PostgreSQL は人気を高めており、世界で最も使用されているデータベースの 1 つとなっています。PostgreSQL には次のようなさまざまなメリットがあります。
PostgreSQL は柔軟性、信頼性、堅牢な機能セットにより、幅広いアプリケーションで使用されています。一般的なユースケースは次のとおりです。
安全性の高いアプリケーションで信頼性に優れ、監査可能性、コンプライアンス、データ保護で知られています。
PostgreSQL は何十億行にわたるクエリを処理でき、データ ウェアハウスやその他の分析システムをリアルタイムの運用データで強化するためによく使用されます。実際、いくつかの一般的なデータ ウェアハウス プロダクトが PostgreSQL から進化しました。
大量のトラフィックを処理できるスケーラブルで堅牢な PostgreSQL は、モバイル、ウェブ、ソーシャル メディア、その他の大容量アプリケーションに適しています。
PostgreSQL は地理データをサポートしているため、アプリケーションは地点間の距離を計算し、ナビゲーション、物流、農業のアプリケーションで地理空間計算を実行できます。
PostgreSQL は高性能なベクトル検索を提供しており、大規模言語モデル(LLM)への入力を提供するために広く使用され、多くの場合、検索拡張生成(RAG)によってこれらのモデルを拡張しています。デベロッパーの多くは PostgreSQL で構築することを選択します
PostgreSQL は、従来のアプリを最新のオープンソース プラットフォームに移行するために、多くの組織で使用されています。
以降のセクションでは、PostgreSQL のエコシステムについて詳しく説明します。AlloyDB、Aurora、SQL Server、MySQL、Oracle との比較を行い、最後にフルマネージド PostgreSQL データベースとセルフマネージド PostgreSQL データベースの違いを確認します。
PostgreSQL との互換性の度合いが異なる複数の市販製品が販売されています。特によく利用されているのは、Google Cloud の AlloyDB と AWS の Aurora の 2 つです。
AlloyDB はあらゆるプラットフォームやクラウドで動作しますが、Aurora はアマゾン ウェブ サービス(AWS)でのみ動作します。また、AlloyDB は PostgreSQL に重点を置いており、Aurora は PostgreSQL エンジンと MySQL エンジンの両方を提供しています。
AlloyDB が企業に人気の選択肢となっている理由:
PostgreSQL はほとんどのオペレーティング システムで動作するオープンソースのデータベースですが、SQL Server は Microsoft Windows と Linux で動作する商用プロダクトです。どちらもマネージド クラウド サービスとして多くのベンダーから提供されています。
どちらのシステムにも共通するコア機能が数多くありますが、いくつかの違いもあります。PostgreSQL の主な利点は、同時実行処理にマルチバージョン同時実行制御(MVCC)を使用しているため、ほぼデッドロックなしで高いトランザクション レートを処理できることです。SQL Server は、高いパフォーマンスとインメモリ データベース機能で知られています。これらの機能は AlloyDB でも提供されます。
詳細な比較については、PostgreSQL と SQL Server をご覧ください。
MySQL は SQL ベースのリレーショナル データベース、PostgreSQL はオブジェクト リレーショナル データベースです。どちらもオープンソースですが、PostgreSQL は商用配布が可能なライセンス方式に準拠しています。MySQL オープンソース プロジェクトは、Oracle がスポンサーとなっています。
PostgreSQL はプロセスを追加することで拡張されます。この方法は以前から、信頼性の高いアプリケーションにとって優れたアプローチです。PostgreSQL の拡張メカニズムにより、PostgreSQL はコミュニティ貢献のプラットフォームとして広く普及しています。
MySQL はスレッドを追加することでスケーリングします。これは通常、小規模でリソースが少ないアプリケーションに適しています。
多くの場合、個人の好みと、対応可能な熟練した開発者の経験によってどちらを選択するかが決まります。
PostgreSQL と MySQL の技術的な違いは次のとおりです。
PostgreSQL
MySQL
PostgreSQL と Oracle はどちらも、SQL をサポートし、同等の手続き型言語(Oracle の場合は PL/SQL)を使用する一般的なリレーショナル データベースです。どちらもスケーラビリティとセキュリティの面で高く評価されています。
Oracle は、あらゆる規模の企業でミッション クリティカルなアプリケーションを推進するために使用されており、その可用性とクラスタリングなどの高度な機能のサポートで知られています。
PostgreSQL は障害復旧、高パフォーマンス、組み込みのレプリケーションなど、Oracle と同様の特長と機能を備えています。企業は、Oracle に代わる存在として、オープンで費用対効果の高い PostgreSQL を選んでいます。
他のデータベースと同様に、セルフマネージングにはチーム内の技術的な経験が必要です。これには、アーキテクチャの構成とメンテナンス、ジョブのスケーリング、一般的なデータベース管理スキル(アップグレード、バックアップ、セキュリティ メンテナンス、障害復旧、パッチのインストールの実施など)に関する知識が含まれます。アプリケーションに集中できるように、フルマネージド データベースを選択する開発チームが増えています。
フルマネージド データベース:
ただし、アプリケーション固有のニーズによりデータベース環境を完全に制御する必要がある場合は、セルフマネージド データベースで柔軟に対応できます。
拡張機能を使用すると、特定の要件に合わせてデータベースの機能を拡張、カスタマイズできます。PostgreSQL は包括的な拡張機能サポートを提供しており、拡張機能は外部で開発されたものも含め、組み込み関数と同じように動作します。
よく使用される拡張機能は次のとおりです。
PostgreSQL は、基本的なデータ型と、他のデータベースでは一般的に見られない高度なデータ型(ブール値、数値、整数、タイムスタンプ、配列など)の両方をサポートしています。デベロッパーは独自のデータ型を作成することもできます。
デフォルトの手続き型言語は pgSQL(PL/pgSQL)の拡張機能であり、標準のディストリビューションには Tcl、Perl、Python の手続き型言語拡張機能が含まれています(PL/Tcl、PL/Perl、PL/Python と表記)。これらの読み込み可能な手続き型言語により、コーディング言語を使用して関数を作成し、手順をトリガーできます。
拡張機能では、Java、Ruby、C、C++、Delphi、JavaScript などの多くの言語がサポートされています。
PostgreSQL では、データベースを再コンパイルすることなく複数の言語でコーディングできることが、デベロッパーにとっての主なメリットです。
はい。PostgreSQL は 2001 年から ACID に準拠しています。
ACID(アトミック性、整合性、独立性、耐久性)は、トランザクション データベースがデータの有効性をどのように確保するかを表す一連のプロパティです。ACID コンプライアンスは、ネットワーク障害やハードウェア障害が発生した場合でもデータ品質を保証し、データの損失や破損なしに読み取りと書き込みを同時に行えるようにします。これらの原則は、金融や医療など、多くの業界での活用において非常に重要です。
たとえば、バンキング アプリケーションで、データベース内の 2 つの口座間で残高を移行するとします。トランザクションの途中でサービス停止や障害が発生した場合は、ACID 準拠のデータベースにより、金銭が消失したり、複数回入金されたりすることはなく、口座残高は常に有効なままです。