【PostgreSQL】ゼロから始める: (1) 初めてのPostgreSQL入門

PostgreSQL データベースの概要

PostgreSQL は、SQL 言語を使用および拡張し、SQL 言語を多くの機能と組み合わせて、最も複雑なデータ ワークロードを安全に保存および拡張する強力なオープン ソース オブジェクト リレーショナル データベース システムです。 PostgreSQL の起源は、カリフォルニア大学バークレー校の POSTGRES プロジェクトの一環として 1986 年に遡り、コア プラットフォームで 35 年以上の積極的な開発経験があります。

PostgreSQL は、実績のあるアーキテクチャ、信頼性、データの整合性、堅牢な機能セット、スケーラビリティ、および高パフォーマンスで革新的なソリューションを一貫して提供するソフトウェアの背後にあるオープンソース コミュニティの献身的に高い評価を得ています。 PostgreSQL はすべての主要なオペレーティング システムで実行され、2001 年から ACID に準拠しており、人気のある PostGIS 地理空間データベース エクステンダーなどの強力なアドオンを備えています。当然のことながら、PostgreSQL は多くの人々や組織にとってオープンソースのリレーショナル データベースとして選ばれています。

PostgreSQL を使用する理由

PostgreSQL には、開発者がアプリケーションを構築し、管理者がデータの整合性を保護してフォールト トレラントな環境を構築し、データ セットの大小に関係なくデータを管理できるように設計された多くの機能が付属しています。 PostgreSQL は無料でオープンソースであることに加えて、拡張性も非常に優れています。たとえば、データベースを再コンパイルすることなく、独自のデータ型を定義したり、カスタム関数を構築したり、別のプログラミング言語でコードを記述したりすることもできます。

PostgreSQL は SQL 標準に準拠しようと努めており、この一貫性が従来の機能と矛盾したり、不適切なアーキテクチャ上の決定につながることはありません。 SQL 標準で必要な機能の多くをサポートしますが、構文や機能が若干異なる場合があります。時間の経過とともに、さらなる一貫性が達成されることが期待されます。 2023 年 9 月にリリースされたバージョン 16 の時点で、PostgreSQL は SQL:2023 Core 準拠の 179 の必須機能のうち少なくとも 170 に準拠しています。この記事の執筆時点では、この基準を完全に満たすリレーショナル データベースはありません。

PostgreSQL のスローガンは「世界で最も先進的なオープンソース リレーショナル データベース」です。

PostgreSQL は、Oracle に次いで市場で最も強力なリレーショナル データベースです。

PostgreSQL コミュニティは純粋なコミュニティであり、営利企業によって管理されていないため、多くのエンド ユーザーとクラウド ベンダーがコア コードを提供することに積極的であり、PostgreSQL が迅速なバージョン イテレーションと豊富なアプリケーション プラグインを利用できるようになります。

これほど多くのエンド ユーザーがいるのに、なぜクラウド ベンダーがコア コードを提供する必要があるのでしょうか?

  • エンドユーザー
    • 私はコミュニティが長く続き、営利企業や国によって管理されていない、無料で持続可能なオープンソースのエンタープライズレベルのデータベースを享受できることを願っています。 O に移動し、DB2 に移動し、Sybase に移動します。
    • データベースからお金を稼がないでください。
    • PG を使用する人が増えれば増えるほど、PG を支持する人が増え、使用する際の信頼性も高まります (これも当てはまります)。
    • 良いアイデアを集めるために、同社は 2 つの研究開発に投資し、貢献を続けています (おそらく年間 100 万から 200 万) 実際、PG コミュニティ全体の何千人もの人々が貢献しており、これはエンド ユーザーにとって大きな利益となっています。商用データベースを使用するには、ライセンスやその他のコストに加えて、管理、研究開発、およびアウトソーシング リソースへの投資が依然として必要であり、その投資額は年間数万ドル、場合によっては数億ドルに達する場合もあります。地域社会に貢献するために。傾向から判断すると、PG にコードを提供する大規模顧客の数は今後も増加する一方でしょう。
  • クラウドベンダー
    • オープンソース データベースとクラウド ベンダーには利益相反があり、契約を変更しました。
    • データベース市場は巨大です。
    • 自己研究が最良の選択ですが、自己研究にはいくつかの問題があります。たとえば、エコシステムを育成する必要がある、市場の承認が必要、多くの研究開発リソースが必要、場合によっては車輪の再発明が必要になるなどです。

PostgreSQL に基づいて開発する利点:

  1. 独自の生態系を構築する必要はありません。
  2. 車輪の再発明を避け、
  3. PostgreSQL は非常に優れたコード ベースを備えており、オープンソースの世界では Oracle として知られています。
  4. 他のベンダーが PostgreSQL を制御して市場の優位性を失うことを防ぎます (AWS、Google、IBM、Microsoft はすべて PG コミュニティのスポンサーになっています)

PostgreSQL を学ぶ理由

中国は現在、包括的なローカライズ置き換えプロジェクトを実施しており、軍需産業、政府、金融、医療、教育から企業に至るまで、コンピューターサーバー、軍需産業、ソフトウェアなど、ローカライズされていないものを段階的に置き換えている。重要な部分です。国内のデータ ソフトウェアは多数ありますが、ここでは一般的に使用されている国内で再構築されたリレーショナル集中アーキテクチャ データベースをいくつか紹介します。

名前データベース 会社 基盤技術 テクニカルバージョン
ガウスDB ファーウェイ PostgreSQL 9.6
Polardb-postgres アリババ PostgreSQL 9.6
Polardb-mysql アリババ mysql 5.6
TDSQL-postgres テンセント PostgreSQL 9.6
TDSQL-mysql テンセント mysql 5.6
ハイゴデータベース 瀚高 PostgreSQL 9.6
KingbaseES 人民金融経済大学 PostgreSQL 12
ベース 南大通用 PostgreSQL 9.6
DM ダーメン オラクル 9i (ソースコード漏洩バージョン)

この記事の公開日の時点で、国内外のデータベースの使用割合は次のとおりです。

海外データベース利用の割合

ここに画像の説明を挿入します
データ ソース:https://db-engines.com/en/ranking/relational+dbms

国内データベース利用割合

ここに画像の説明を挿入します
数据来源:https://www.modb.pro/dbRank

上位の基盤テクノロジーでは基本的に PostgreSQL が使用されていることがわかります。

国内データベースの最下層のほとんどが MYSQL ではなく PostgreSQL に基づいているのはなぜですか?

オープンソース データベースの優れた代表として、主に PostgreSQL と MySQL の著作権を比較します。著作権はライセンスとして理解でき、オープンソース契約の記述に直接関係しますが、両者のライセンス表現を見てみましょう。

PostgreSQL ライセンス
PostgreSQL ライセンスは、BSD ライセンスや MIT ライセンスと同様、無料のオープン ソース ライセンスです。 1994 年以前の一部の著作権はカリフォルニア州取締役会に属し、1996 年から 2020 年までの一部の著作権は PostgreSQL グローバル開発チームに属し、グローバル開発チームの主要メンバーは世界中に散らばっており、その背後にある企業体によって管理されていません。 、それを本当のオープンプロジェクトにします。
BSD オープン ソース プロトコルは、ユーザーに大きな自由を与えるプロトコルです。自由に使用したり、ソース コードを変更したり、変更したコードをオープン ソースまたはプロプライエタリ ソフトウェアとして再リリースしたりすることができ、オープン ソース ライセンスの「生きた雷峰」として知られています。
BSD コードはコード共有を奨励しますが、コード作成者の著作権を尊重する必要があります。 BSD は、ユーザーがコードを変更して再配布できるほか、BSD コードを使用または BSD コード上で開発した商用ソフトウェアをリリースおよび販売できるため、商用統合に適したプロトコルです。多くの企業は、オープンソース製品を選択する際に BSD プロトコルを好みます。これは、これらのサードパーティ コードを完全に制御でき、必要に応じて変更または再開発できるためです。
PostgreSQL ライセンスの説明: https://www.postgresql.org/about/licence/

MySQL ライセンス
ご存知のとおり、MySQL は Oracle によって管理されており、MySQL は GPL と商用ライセンス (デュアル ライセンスと呼ばれます) の両方を使用します。
GPL (General Public License) はパブリック ライセンスであり、GPL に準拠したソフトウェアはパブリックです。あるソフトウェアがGPLソフトウェアを使用している場合には、そのソフトウェアもオープンソースである必要があり、オープンソースでない場合にはGPLソフトウェアは使用できませんが、これはソフトウェアの商用化の有無とは関係がありません。
GPL に準拠できない場合は、商用ライセンスを取得し、Oracle に連絡して、Oracle の拘束を受けるソリューションを開発する必要があります。

特定の制約:
① MySQL で行われた変更については特許を申請することはできません。
② MySQL での変更は公開する必要があります。所有権はすべて Oracle が所有するものに属します。
③ 純粋に学術目的および実践目的でのソース コードの変更も GPL に準拠しています。
④ Oracle の MySQL Enterprise Editionまた、オラクルは、MySQL をベースにした他のクローズド ソース製品を許可していません。
MySQL に基づく他のデータベースも、GPL ライセンスまたは GPL の改訂版、GPL V2 (Maridb など) に準拠しており、準拠する必要があります。 GPL ライセンスは論理的には商用ライセンスと矛盾しますが、商用ライセンスは MySQL を管理する企業に与えられた特権であることがわかります。
GPL では、GPL クラス ライブラリを使用するソフトウェア製品には GPL プロトコルを使用することが厳密に要求されているため、GPL プロトコルを使用するオープン ソース コード、商用ソフトウェア、またはコードに機密性要件があるものは適していません。統合/採用のためのクラス ライブラリと二次開発の基礎。この協定は GPL から GPL V2 V3、さらに LGPL まで進化しており、内容の表現が比較的複雑であるため、オープンソース精神の発展と継承に影響を及ぼし、意見の相違が生じやすくなります。

MySQL ライセンスの説明:https://www.mysql.com/about/legal/licensing/oem/
GPL V2 の元の説明: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html

この段落は[復号化: 国内データベースが MySQL ではなく PostgreSQL を使用する理由] から参照されています。

PostgreSQL と MySQL の比較

PostgreSQL の利点

  1. SQL の標準実装は MySQL よりも完全であり、関数の実装はより厳密です。
  2. テーブル接続の比較的完全なサポート、比較的完全なオプティマイザ機能、多くのインデックス タイプのサポート、および強力で複雑なクエリ機能を備えています。
  3. PostgreSQL のメイン テーブルはヒープ テーブルに格納されますが、MySQL はインデックスを使用してテーブルを編成するため、MySQL よりも大量のデータをサポートできます。
  4. PostgreSQL のプライマリおよびセカンダリ レプリケーションは物理レプリケーションであり、MySQL のバイナリ ベースの論理レプリケーションと比較して、データの一貫性の信頼性が高く、レプリケーションのパフォーマンスが高く、ホストのパフォーマンスへの影響が少ないです。
  5. PostgreSQL は、JSON のほか、ネイティブ XML サポートや HSTORE を使用したキーと値のペアなどの他の NoSQL 機能をサポートしています。また、アクセスを高速化するために JSON データのインデックス作成もサポートされており、特にバージョン 10 JSONB はさらに強力です。
  6. PostgreSQL は完全に無料であり、BSD プロトコルに基づいています。PostgreSQL を変更してお金で販売しても、誰も気にしません。これは、PostgreSQL データベースが他の企業によって管理されないことを示すため、非常に重要です。それどころか、MySQL は現在、主に Oracle Corporation によって管理されています。

MySQL の利点

  1. ロールバック セグメントに基づく Innodb の MVCC メカニズムは、PG の新しいデータと古いデータが一緒に保存される XID ベースの MVCC メカニズムよりも優れています。新しいデータと古いデータは一緒に保存され、VACUUM を定期的にトリガーする必要があります。これにより、冗長 IO とデータベース オブジェクト ロックのオーバーヘッドが生じ、データベース全体の同時実行能力が低下します。さらに、VACUUM のクリーンアップが間に合わないと、データが拡張する可能性があります。
  2. MySQL はインデックスを使用してテーブルを編成します。この保存方法は、主キーの一致に基づくクエリおよび削除操作に非常に適していますが、テーブル構造の設計には制約があります。
  3. MySQL のオプティマイザは比較的シンプルで、システム テーブル、演算子、データ型の実装が非常に合理化されているため、単純なクエリ操作に非常に適しています。
  4. 中国では MySQL が PostgreSQL よりも人気がありますが、PostgreSQL は中国では少し寂しいようです。
  5. MySQL のストレージ エンジン プラグイン メカニズムにより、アプリケーション シナリオがより広範囲になり、たとえば、innodb がトランザクション処理シナリオに適していることに加えて、myisam は静的データ クエリ シナリオにも適しています。

アプリケーション シナリオの観点から見ると、PG は厳密なエンタープライズ アプリケーション シナリオ (金融、通信、ERP、CRM など) により適していますが、これに限定されず、PostgreSQL の json、jsonb、hstore などのデータ形式は特に適しています。分析: MySQL は、比較的単純なビジネス ロジックとデータの信頼性要件が低いインターネット シナリオ (Google、Facebook、Alibaba など) に適しています。もちろん、MySQL は現在 innodb エンジンで精力的に開発されており、その機能は次のとおりです。パフォーマンスが良い。

おすすめ

転載: blog.csdn.net/sinat_36528886/article/details/134957163