概要
リレーショナルモデルがデータを最もよく表すかどうかを選択できるリレーショナルデータベース管理システム(RDBMS)はたくさんあります。 PostgreSQLは、世界で最も人気があり、評判の高いオープンソースのリレーショナルデータベースの1つです。
この記事では、多くの開発者がデータ管理のニーズにPostgreSQLを選択する主な理由のいくつかについて説明します。これらは、機能の可用性や標準への準拠から、コミュニティのサポートやプロジェクトのガバナンスにまで及びます。
堅牢な機能セット
PostgreSQLを使用することを選択した主な理由の1つは、機能の膨大なリストです。 PostgreSQLは、パフォーマンス、セキュリティ、プログラミング拡張機能、構成などに関連する非常に多くの機能を備えています。
PostgreSQLが提供する機能には次のものがあります。
- 以下を使用したデータベース関数の記述のサポート:
- SQL
- Tcl
- Perl
- Python
- Java
- ルア
- R
- シェル
- Javascript
- 次のような膨大な数のデータ型のサポート:
- 数値、文字列、ブール、日時タイプなどの一般的なデータベースプリミティブ:これらはほとんどのデータベースにあり、PostgreSQLで強力にサポートされています。
- ネットワークアドレス:PostgreSQLは、IPv4とIPv6の両方で、CIDRアドレス、サブネットマスク付きのアドレス、MACアドレスなどのさまざまなネットワーク関連のタイプをサポートしています。
- 幾何学的タイプ:2次元オブジェクトの定義に役立つさまざまなタイプを利用できます。これには、点、線、セグメントのほか、ボックス、ポリゴン、円などの完全な形状が含まれます。
- 金銭の種類:PostgreSQLの
money
タイプは、固定された分数精度で通貨を格納します。タイプはロケール対応で、自動出力フォーマットが含まれています。 - 範囲:範囲を使用すると、スケジュールの日付や時刻の範囲など、値の範囲をネイティブに操作できます。
- JSONB:JSONオブジェクトの保存と操作に対するPostgreSQLのネイティブサポートは、同じシステムでリレーショナルデータと非リレーショナルデータの両方を操作するのに役立ちます。
- hstore:
hstore
typeを使用すると、キーと値のペアをネイティブに操作できます。 - 多次元配列:配列は、特定のコンテキスト以外ではあまり意味のないマルチパート値を格納するのに非常に便利です。
- 独自の複合型を定義する機能:独自の型を定義すると、データベースをアプリケーションでのデータの表現方法とより緊密に連携させることができます。
- 全文検索:全文検索は、半構造化および非構造化テキストのデータを検索して操作するための強力な手法を提供します。検索は、関連性と一致に対する期待に一致するように微調整できます。
- あらゆる規模の組織に適した堅牢な認証、アクセス制御、特権管理システム:PostgreSQLには、システムを使用できるユーザーと、各ユーザーが表示または実行できる内容を定義する成熟したユーザー認証および承認機能があります。
- 外部データラッパー:外部データラッパーを使用すると、リモートサーバー内のテーブルとデータを表現してアクセスできます。
- ビューとマテリアライズドビュー:ビューとマテリアライズドビューのサポートにより、一緒に頻繁にクエリされる情報の元のテーブル構造を抽象化することで、データへの便利で簡素化されたアクセスが可能になります。
- データベースオブジェクトへのコメント:テーブル、データベース、列、およびその他の個々のデータベースオブジェクトにコメントを添付する機能により、決定または実装の詳細を文書化できます。
- ポイントインタイムリカバリ、フェイルオーバー、ストリーミングレプリケーションを提供する先行書き込みログ:これらのテクノロジーは、ソフトウェアがクラッシュした場合でもデータベースの一貫性を維持し、データをスケーリングおよびバックアップするためにシステム間でデータをコピーするのに役立ちます。
- JSONBを使用したドキュメントの保存やhstoreでのキーと値のペアなどのNoSQLのような動作のサポート:単一のシステム内で複数のデータベースパラダイムを使用できるため、管理オーバーヘッドを最小限に抑え、異なる表現間の互換性を向上させることができます。
PostgreSQLがサポートする機能の詳細については、次のリソースを参照してください。
- PostgreSQL機能マトリックス
- 他のデータベースとのSQL機能の比較
- ウィキペディアのデータベース比較表
オブジェクト指向データベースの機能
PostgreSQLが他のほとんどのリレーショナルデータベースと異なる最も基本的な方法の1つは、そのコア設計にあります。
ほとんどのリレーショナルデータベースは、リレーショナルデータベース管理システムとして最もよく説明されています。 (RDBMS)。 RDBMSは、リレーショナルデータベースを処理するために特別に設計されたソフトウェアであり、データは事前定義された列とデータ型を持つテーブルのような構造に格納されます。データは、関係代数に基づく手法を使用して、通常は構造化照会言語(SQL)を使用して、照会、変更、および取得できます。
一方、PostgreSQLは、技術的にはオブジェクトリレーショナルデータベース管理システム(ORDBMS)です。これは、RDBMSと同じリレーショナル機能を備えているが、さらにいくつかのオブジェクト指向機能を備えていることを意味します。
実際には、これはPostgreSQLで次のことができることを意味します。
- 独自の複雑なデータ型を定義する
- さまざまな引数データ型で機能するように関数をオーバーロードします
- テーブル間の継承関係を定義する
これらの機能は、プログラミング時によく知っているのと同じ手法のいくつかを使用して、データベースとデータを操作するのに役立つ強力なツールです。柔軟性が向上したため、プログラムの外部ではなく、データベースシステム内でさまざまなタイプと関係をモデル化できます。これにより、一貫性を維持し、意図した動作を実際のデータに近づけることができます。
PostgreSQLのオブジェクトリレーショナルアプローチが提供するものの詳細については、次のリソースを確認してください。
- ORDBMSの「O」:PostgreSQLの継承
- オブジェクトリレーショナルデータベース管理システム
- PostgreSQLがORDBMSになるとはどういう意味ですか?
- RDBMSとORDBMSの違いは何ですか
SQL標準への準拠
PostgreSQLが他のリレーショナルデータベースシステムよりも際立っているもう1つの分野は、SQL標準への準拠です。
SQL標準は、SQL実装の最小機能および相互運用性要件を定義するために、ANSIおよびISOグループによって開発されました。これらの機関によって提供される仕様は、SQLシステムが提供する必要のある機能を定義することを目的としていますが、言語の複雑さと長い進化のために、厳密な順守が常に可能であるとは限りません。 PostgreSQLのドキュメントによると、現在、仕様で概説されているすべての要件を満たすデータベースはありません。
その警告を考えると、PostgreSQLは他のオプションよりも多くのSQL仕様を満たしています。独自の数では、SQL:2016によって定められた179のコア要件のうち少なくとも160に準拠しています。
PostgreSQLのSQLとこれらのリソースとの適合性について詳しく知ることができます:
- 実装間のSQLコンプライアンスの比較
- PostgreSQLがサポートする機能
- PostgreSQLでまだサポートされていない機能
ACIDコンプライアンス
ACIDは、コンピュータサイエンスの初期主義であり、原子性、一貫性、分離性、および耐久性を表しています。これらは、有効性エラーを回避し、データの整合性を維持するためにデータベーストランザクションがサポートする必要がある重要な保証を表しています。
ACIDコンプライアンスは、高度に構造化されたデータの保存と変更に対する一般的な期待を表すため、リレーショナルデータベースの主な関心事です。非リレーショナルデータベースは、多くの場合、独自の標準に準拠しようとします。これは、基本的に利用可能で、ソフトな状態で、結果整合性を表す競合するBASE初期化によって表されることがよくあります。
ほぼすべてのリレーショナルデータベースがACID準拠を目指していますが、PostgreSQLは2001年以来そのエンジンでACID準拠を誇っています。PostgreSQLは単一のデータベースエンジンに依存しているため、これはすべてのトランザクションがデフォルトで完全にACID準拠であることを意味します。これらの保証は、マルチバージョン同時実行制御(MVCC)を使用してデータベースロックなしで行われます。比較として、MySQLはInnoDBまたはNDBデータベースエンジンを使用する場合にのみ完全なACID準拠をサポートします。これにより、他のエンジンを使用すると予期しない破損が発生する可能性があります。
ACIDとPostgreSQLの適合性の詳細については、次のリソースを確認してください。
- Postgresがトランザクションをアトミックにする方法
- PostgreSQLの同時実行性:分離とロック
- ACIDトランザクションの入門書:すべてのクラウドアプリ開発者が知っておくべき基本事項
オープンソースの開発とコミュニティ
PostgreSQLは、PostgreSQL GlobalDevelopmentGroupによって管理されているオープンソースプロジェクトです。オープンソースイニシアチブによって承認されたライセンスであるPostgreSQLライセンスを使用してライセンスされています。
他にも多くのオープンソースリレーショナルデータベースがありますが、PostgreSQLは、企業の所有者や商用の対応者なしで開発および管理されています。これは、寄稿者が独自の道筋を示し、コミュニティが最も気にかけている機能に取り組むのに役立ちます。 PostgreSQLの専門サービスは、プロジェクトに貢献することが多いが、開発プロセスを管理していない企業によって提供されます。
このコミュニティ主導の開発への焦点は、PostgreSQLのユーザーからの多大な参加をもたらしました。コアPostgreSQLソフトウェアの機能を強化するために、多数の高品質の拡張機能とアプリケーションを利用できます。コミュニティで開発されたソフトウェアは、PostgreSQLサーバーの管理、ビジネスインテリジェンスレポートの編集、新しいタイプのデータの管理、さまざまなプログラミング言語やプラットフォームからのPostgreSQLの操作に役立ちます。
結論
PostgreSQLは、リレーショナルデータの強力で機能豊富な選択肢として高い評価を得ています。 PostgreSQLは、安定性、機能、および標準への準拠を評価して、多くのプロジェクトの適切なボックスをすべてチェックします。同様に、データを表現する方法に柔軟性が必要で、さまざまなツールや言語を使用できるようにしたい場合は、PostgreSQLも適しています。
PostgreSQLは、従来のRDBMSの境界に限定されることなく、コアリレーショナル機能の優れた実装を提供することで注目に値します。すべてのニーズに対応できるデータベースはありませんが、PostgreSQLは、多くのユースケースに対応できる汎用性の高い優れたオプションです。