概要
データがリレーショナルモデルで最もよく表現される場合、選択できるリレーショナルデータベース管理システム(RDBMS)は多数あります。PostgreSQLは、世界で最も人気があり、高く評価されているオープンソースのリレーショナルデータベースの1つです。
この記事では、多くの開発者がデータ管理のニーズにPostgreSQLを選択する主な理由のいくつかを取り上げます。これらには、機能の可用性や標準準拠から、コミュニティサポートやプロジェクトガバナンスまで多岐にわたります。
堅牢な機能セット
PostgreSQLの使用を選択する主な理由の1つは、その豊富な機能リストです。PostgreSQLは、パフォーマンス、セキュリティ、プログラミング拡張、構成などに関連する驚くべき数の機能を備えています。
PostgreSQLが提供する機能には、以下のようなものがあります。
- 以下を使用したデータベース関数の記述のサポート
- 以下を含む、膨大な数のデータ型のサポート
- 数値型、文字列型、ブール型、日時型などの一般的なデータベースプリミティブ:これらはほとんどのデータベースに存在し、PostgreSQLで優れたサポートがあります。
- ネットワークアドレス:PostgreSQLは、CIDRアドレス、サブネットマスク付きアドレス、MACアドレスなど、IPv4とIPv6の両方について、さまざまなネットワーク関連の型をサポートしています。
- 幾何学的型:2次元オブジェクトの定義に役立つさまざまな型が利用可能です。これらには、点、線、線分、およびボックス、ポリゴン、円などの完全な形状が含まれます。
- 通貨型:PostgreSQLの
money
型は、固定の小数精度で通貨を格納します。この型はロケールを認識し、自動出力フォーマットが含まれています。 - 範囲:範囲を使用すると、たとえば、スケジューリングの日付と時間の範囲など、値の範囲をネイティブに操作できます。
- JSONB:PostgreSQLのJSONオブジェクトの格納と操作のネイティブサポートは、同じシステム内でリレーショナルデータと非リレーショナルデータの両方を扱うのに役立ちます。
- hstore:
hstore
型を使用すると、キーと値のペアをネイティブに操作できます。 - 多次元配列:配列は、特定のコンテキスト外ではあまり意味のない複数部分の値の格納に非常に役立ちます。
- 独自の複合型を定義する機能:独自の型を定義すると、データベースをアプリケーションでのデータの表現方法により密接に合わせるのに役立ちます。
- 全文検索:全文検索は、半構造化テキストおよび非構造化テキストのデータを検索および操作するための強力な手法を提供します。検索は、関連性とマッチングに関する期待に合わせて微調整できます。
- あらゆる規模の組織に適した、堅牢な認証、アクセス制御、および特権管理システム:PostgreSQLには、システムを使用できるユーザーと、各ユーザーが表示または実行できる内容を定義するための成熟したユーザー認証および認可機能があります。
- 外部データラッパー:外部データラッパーを使用すると、リモートサーバーのテーブルとデータを表現およびアクセスできます。
- ビューとマテリアライズドビュー:ビューとマテリアライズドビューのサポートにより、頻繁に一緒にクエリされる情報のために元のテーブル構造を抽象化することにより、データへの便利な、簡略化されたアクセスが可能になります。
- データベースオブジェクトへのコメント:テーブル、データベース、列、およびその他の個々のデータベースオブジェクトにコメントを添付する機能により、決定事項または実装の詳細を文書化できます。
- 先行書き込みロギングにより、特定時点への復旧、フェイルオーバー、およびストリーミングレプリケーションを提供します。これらのテクノロジーは、ソフトウェアがクラッシュした場合でもデータベースの一貫性を維持するのに役立ち、スケーリングとデータのバックアップのためにシステム間でデータをコピーするのに役立ちます。
- 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仕様を満たしています。独自のカウントによると、SQL:2016によって定められた179のコア要件のうち、少なくとも160に準拠しています。
PostgreSQLのSQL準拠の詳細については、以下のリソースを参照してください。
ACID準拠
ACIDは、コンピュータサイエンスの頭字語であり、原子性、一貫性、分離性、および永続性を意味します。これらは、データベーストランザクションが有効性エラーを回避し、データの整合性を維持するためにサポートする必要がある主要な保証を表しています。
ACID準拠は、高度に構造化されたデータを格納および変更するための典型的な期待を表すため、リレーショナルデータベースにとって主要な関心事です。非リレーショナルデータベースは、多くの場合、独自の標準に準拠しようとします。これは、競合するBASEの頭字語で表され、これは基本的に利用可能、ソフトステート、および最終的な一貫性を意味します。
ほとんどすべてのリレーショナルデータベースがACID準拠を提供することを熱望していますが、PostgreSQLは2001年以降、エンジンでACID準拠を誇っています。PostgreSQLは単一のデータベースエンジンに依存しているため、これはすべてのトランザクションがデフォルトで完全にACID準拠であることを意味します。これらの保証は、多版同時実行制御(MVCC)を使用してデータベースロックなしで行われます。比較として、MySQLはInnoDBまたはNDBデータベースエンジンを使用する場合にのみ完全なACID準拠をサポートしており、他のエンジンを使用すると予期しない破損につながる可能性があります。
ACIDとPostgreSQLの準拠に関する詳細については、以下のリソースを確認してください。
オープンソース開発とコミュニティ
PostgreSQLは、PostgreSQLグローバル開発グループによって管理されているオープンソースプロジェクトです。PostgreSQLライセンス、オープンソースイニシアチブによって認識されているライセンスを使用してライセンスされています。
他の多くのオープンソースリレーショナルデータベースがありますが、PostgreSQLは企業の所有者や商用カウンターパートなしで開発および管理されています。これにより、貢献者は独自の道を切り開き、コミュニティが最も関心を持っている機能に取り組むことができます。PostgreSQLのプロフェッショナルサービスは、プロジェクトに貢献しているが、開発プロセスを制御していない企業によって提供されています。
コミュニティ主導の開発に焦点を当てたことで、PostgreSQLのユーザーからの大きな参加が得られました。コアPostgreSQLソフトウェアの機能を強化するために、多数の高品質の拡張機能とアプリケーションが利用可能です。コミュニティ開発のソフトウェアは、PostgreSQLサーバーの管理、ビジネスインテリジェンスレポートのコンパイル、新しいタイプのデータの管理、およびさまざまなプログラミング言語とプラットフォームからのPostgreSQLの操作に役立ちます。
結論
PostgreSQLは、リレーショナルデータのための強力で機能豊富な選択肢として高い評価を得ています。安定性、機能性、および標準準拠を重視するPostgreSQLは、多くのプロジェクトにとって適切なボックスをすべてチェックしています。同様に、データの表現方法に柔軟性が必要で、さまざまなツールや言語を使用できるようにしたい場合、PostgreSQLも良い選択肢です。
PostgreSQLは、従来のRDBMSの境界に制限されることなく、コアリレーショナル機能の優れた実装を提供することで注目に値します。すべてのニーズに対応できるデータベースはありませんが、PostgreSQLは多くのユースケースに適応できるほど用途の広い優れたオプションです。
Prisma Clientを使用して、JavaScriptまたはTypeScriptアプリケーション内からPostgreSQLデータベースを管理できます。既存のプロジェクトにPrismaを追加する方法、またはPrismaを最初から開始する方法を学びましょう。
FAQ
PostgreSQLはオープンソースデータベースです。30年以上にわたって開発されているオブジェクトリレーショナルデータベースです。
PostgreSQLを知る機能で、PostgreSQLについてさらに詳しく知ることができます。
PostgreSQLの機能マトリックスは、PostgreSQLによって維持されているテーブルであり、そのすべての機能と、それらの機能が追加されたバージョンを概説しています。
各機能の詳細情報には、その機能をクリックして、適切なPostgreSQLドキュメントに誘導されることでアクセスできます。
PostgreSQLの機能リストは、機能マトリックスにあります。
PostgreSQLは無料で使用でき、OSI承認のPostgreSQLライセンスの下でリリースされています。
商用ソフトウェア製品を使用する場合でも、料金はかかりません。
PostgreSQLはオブジェクトリレーショナルデータベースであり、NoSQLデータベースではありません。ただし、JSON型など、一部のNoSQLタイプの機能を追加しています。