共有

概要

データがリレーショナルモデルで最もよく表現される場合、選択できるリレーショナルデータベース管理システム(RDBMS)は多数あります。PostgreSQLは、世界で最も人気があり、評価の高いオープンソースのリレーショナルデータベースの1つです。

この記事では、多くの開発者がデータ管理のニーズにPostgreSQLを選択する主な理由をいくつか取り上げます。これには、機能の可用性、標準準拠、コミュニティサポート、プロジェクトガバナンスなどがあります。

堅牢な機能セット

PostgreSQLを使用する主な理由の1つは、その豊富な機能リストです。PostgreSQLは、パフォーマンス、セキュリティ、プログラミング拡張、構成などに関する驚くべき数の機能を備えています。

PostgreSQLが提供する機能には、以下が含まれます。

  • データベース関数の記述をサポート(以下を使用):
  • 膨大な数のデータ型をサポート(以下を含む):
    • 数値型、文字列型、ブール型、日時型などの一般的なデータベースプリミティブ:これらはほとんどのデータベースで見られ、PostgreSQLで優れたサポートが提供されています。
    • ネットワークアドレス:PostgreSQLは、IPv4およびIPv6の両方で、CIDRアドレス、サブネットマスク付きアドレス、MACアドレスなど、さまざまなネットワーク関連タイプをサポートしています。
    • 幾何学型:2次元オブジェクトを定義するのに役立つさまざまな型が利用可能です。これには、点、線、線分、およびボックス、ポリゴン、円などの完全な形状が含まれます。
    • 通貨型:PostgreSQLのmoney型は、固定小数精度で通貨を格納します。この型はロケール対応であり、自動出力フォーマットが含まれています。
    • 範囲型:範囲を使用すると、スケジューリングのための日付と時刻の範囲など、値の範囲をネイティブに扱うことができます。
    • JSONB:PostgreSQLのJSONオブジェクトの保存と操作に対するネイティブサポートは、同じシステム内でリレーショナルデータと非リレーショナルデータの両方を扱うのに役立ちます。
    • hstorehstore型を使用すると、キーと値のペアをネイティブに扱うことができます。
    • 多次元配列:配列は、特定のコンテキストの外ではあまり意味を持たない多部分の値を格納するのに非常に役立ちます。
  • 独自の複合型を定義する機能:独自の型を定義することで、データベースをアプリケーションでのデータの表現方法とより密接に連携させることができます。
  • 全文検索:全文検索は、半構造化または非構造化テキスト内のデータを検索および操作するための強力な技術を提供します。検索は、関連性や一致の期待に合わせて細かく調整できます。
  • あらゆる規模の組織に適した堅牢な認証アクセス制御特権管理システム:PostgreSQLには、誰がシステムを使用できるか、各ユーザーが何を参照または実行できるかを定義するための成熟したユーザー認証および認可機能があります。
  • 外部データラッパー:外部データラッパーを使用すると、リモートサーバー内のテーブルとデータを表現およびアクセスできます。
  • ビューマテリアライズドビュー:ビューとマテリアライズドビューのサポートにより、頻繁に一緒にクエリされる情報のために元のテーブル構造を抽象化することで、データへの便利で簡素化されたアクセスが可能になります。
  • データベースオブジェクトへのコメント:テーブル、データベース、列、その他の個々のデータベースオブジェクトにコメントを付ける機能により、決定事項や実装の詳細を文書化できます。
  • 先行書き込みログ(WAL)によるポイントインタイムリカバリフェイルオーバーストリーミングレプリケーションの提供:これらの技術は、ソフトウェアがクラッシュした場合でもデータベースの一貫性を維持するのに役立ち、スケーリングやデータのバックアップのためにシステム間でデータをコピーするのに役立ちます。
  • JSONBを使用したドキュメントの保存や、hstoreを使用したキーと値のペアの保存など、NoSQLのような動作のサポート:単一のシステム内で複数のデータベースパラダイムを使用できることで、管理オーバーヘッドを最小限に抑え、異なる表現形式間の互換性を向上させることができます。

PostgreSQLがサポートする機能の詳細については、以下のリソースを参照してください。

オブジェクト指向データベース機能

PostgreSQLが他のほとんどのリレーショナルデータベースと異なる最も基本的な点の1つは、そのコア設計にあります。

ほとんどのリレーショナルデータベースは、リレーショナルデータベース管理システム(RDBMS)と表現されるのが最適です。RDBMSは、事前に定義された列とデータ型を持つテーブル状の構造にデータが格納されるリレーショナルデータベースを扱うために特別に設計されたソフトウェアです。データは、通常構造化照会言語(SQL)を介して、リレーショナル代数に基づく手法を使用して照会、変更、および取得できます。

一方、PostgreSQLは技術的にはオブジェクトリレーショナルデータベース管理システム(ORDBMS)です。これは、RDBMSと同じリレーショナル機能を持つだけでなく、いくつかのオブジェクト指向機能も備えていることを意味します。

実用的に言えば、これはPostgreSQLが次のことを可能にするということです。

  • 独自の複合データ型を定義する
  • 異なる引数データ型で動作するように関数をオーバーロードする
  • テーブル間の継承関係を定義する

これらの機能は、プログラミングで慣れているかもしれないのと同じ手法を使用して、データベースやデータを操作するのに役立つ強力なツールです。柔軟性が向上したことで、プログラムの外部ではなくデータベースシステム内で異なる型や関係をモデル化できます。これにより、一貫性を維持し、実際のデータにより近い意図された動作を強制するのに役立ちます。

PostgreSQLのオブジェクトリレーショナルアプローチが提供するものの詳細については、以下のリソースを参照してください。

SQL標準への準拠

PostgreSQLが他のリレーショナルデータベースシステムよりも優れているもう1つの点は、SQL標準への準拠です。

SQL標準は、SQL実装の最小限の機能と相互運用性要件を定義するために、ANSIおよびISOグループによって開発されてきました。これらの機関が提供する仕様は、SQLシステムが提供すべき機能を定義することを意図していますが、言語の複雑さと長い進化のため、厳密な準拠は常に可能ではありません。PostgreSQLのドキュメントによると、現在、仕様に記載されているすべての要件を満たすデータベースはありません

その注意点がある中で、PostgreSQLは他の選択肢よりも多くのSQL仕様を満たしています。PostgreSQL自身のカウントによると、SQL:2016で定められた179のコア要件のうち、少なくとも160に準拠しています。

PostgreSQLのSQL準拠に関する詳細情報は、以下のリソースで確認できます。

ACID準拠

コンピュータサイエンスにおけるACIDは、原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、永続性(Durability)の頭文字を取ったものです。これらは、妥当性エラーを回避し、データの整合性を維持するためにデータベーストランザクションがサポートしなければならない重要な保証を表します。

ACID準拠は、高度に構造化されたデータの保存と変更に関する一般的な期待を表すため、リレーショナルデータベースにとって主要な関心事です。非リレーショナルデータベースは、競合するBASEという頭文字(基本的に利用可能、ソフトステート、結果整合性)で表される独自の標準に準拠しようとすることがよくあります。

ほとんどすべてのリレーショナルデータベースがACID準拠を提供しようと努めている中、PostgreSQLは2001年以来、そのエンジンでACID準拠を誇っています。PostgreSQLは単一のデータベースエンジンに依存しているため、すべてのトランザクションがデフォルトで完全にACID準拠です。これらの保証は、多版型同時実行制御(MVCC)を使用してデータベースロックなしで行われます。比較として、MySQLはInnoDBまたはNDBデータベースエンジンを使用する場合にのみ完全なACID準拠をサポートしており、他のエンジンを使用すると予期せぬ破損につながる可能性があります。

ACIDとPostgreSQLの準拠に関する詳細情報は、以下のリソースを参照してください。

オープンソース開発とコミュニティ

PostgreSQLは、The PostgreSQL Global Development Groupによって管理されているオープンソースプロジェクトです。Open Source Initiativeによって認識されているライセンスであるThe PostgreSQL Licenseを使用してライセンスされています。

他にも多くのオープンソースのリレーショナルデータベースがありますが、PostgreSQLは企業の所有者や商業的な対応なしに開発および管理されています。これにより、貢献者は独自の道を切り開き、コミュニティが最も重視する機能に取り組むことができます。PostgreSQLのプロフェッショナルサービスは、プロジェクトに貢献することが多いが開発プロセスを制御しない企業によって提供されています

コミュニティ主導の開発に焦点を当てた結果、PostgreSQLユーザーからの大きな参加が得られています。PostgreSQLコアソフトウェアの機能を強化するために、多数の高品質な拡張機能とアプリケーションが利用可能です。コミュニティで開発されたソフトウェアは、PostgreSQLサーバーの管理、ビジネスインテリジェンスレポートの作成、新しいデータタイプの管理、さまざまなプログラミング言語やプラットフォームからのPostgreSQLの操作に役立ちます。

結論

PostgreSQLは、リレーショナルデータのための強力で機能豊富な選択肢として高い評価を得ています。安定性、機能性、標準準拠を重視するPostgreSQLは、多くのプロジェクトにとって最適な選択肢です。同様に、データの表現方法に柔軟性を求め、さまざまなツールや言語を使用したい場合も、PostgreSQLは良い選択肢となります。

PostgreSQLは、コアリレーショナル機能の優れた実装を提供しながら、従来のRDBMSの境界にとらわれない点で注目に値します。すべてのニーズに対応できるデータベースはありませんが、PostgreSQLは多くのユースケースに適応できる十分な汎用性を持つ優れた選択肢です。

FAQ

PostgreSQLはオープンソースデータベースです。これは30年以上にわたり開発されているオブジェクトリレーショナルデータベースです。

PostgreSQLについてもっと知りたい場合は、当社のPostgreSQLを知る機能をご覧ください。

PostgreSQLの機能マトリックスは、PostgreSQLが維持しているテーブルで、そのすべての機能と、それらの機能がどのバージョンで追加されたかを示しています。

各機能の詳細情報には、その機能をクリックして適切なPostgreSQLドキュメントに移動することでアクセスできます。

PostgreSQLの機能リストは、その機能マトリックスで確認できます。

PostgreSQLは無料で利用でき、OSI承認のPostgreSQLライセンスの下でリリースされています。

商用ソフトウェア製品で使用する場合でも料金はかかりません。

PostgreSQLはオブジェクトリレーショナルデータベースであり、NoSQLデータベースではありません。ただし、JSON型などのNoSQLタイプの機能が追加されています。

著者について
Justin Ellingwood

ジャスティン・エリングウッド

ジャスティンは2013年からデータベース、Linux、インフラ、開発者ツールについて執筆しています。現在は妻と2匹のウサギと一緒にベルリンに住んでいます。通常は三人称で書く必要がないため、関係者全員にとって安心です。
© . All rights reserved.