The EDB Blog
May 25, 2016

There is an important difference between the open source PostgreSQL community and many other open source communities – it is not controlled by a single company that can dictate whether others can contribute. Instead, the PostgreSQL open source community is independent of any single company. It’s not uncommon for companies to claim to support open source, but really only to the extent of allowing outsiders to make contributions to software originally created by the company, and then only if the company approves of the contribution. 

EnterpriseDB® EDB™)とopen sourceのPostgreSQLコミュニティとの関係を理解するためには、これらの区別をすることが重要です。(EDB™) PostgreSQLは本当に独立したコミュニティですが、EDBはPostgreSQLコミュニティの仕事を強く支持しています。 EDBの多くのスタッフは、PostgreSQLコミュニティイニシアチブやpgAdminやpgpool-IIなどの関連プロジェクトの作業に多大な時間を費やし、何年も前からそうしてきました。これは、 勤務時間中に、スタッフ がEDB管理の恩恵とともに、コアのPostgreSQLプロジェクトにコミットしているコードを書いてレビューすることを意味します。

このブログ記事では、PostgreSQLのエコシステムへの最近の貢献について概説したいと思います。 PostgreSQLをサポートする他の企業と同様に、EDBはPostgreSQLコミュニティにさまざまな方法で技術寄与をすることができます。パッチレビュー、テスト、およびコミット。外部ツール;パッケージング (もちろん、これらの技術分野に加えて、EDBはイベントのスポンサーシップを通して財政的にコミュニティをサポートすることができますが、それは別のブログ記事のトピックです)。

PostgreSQL9.6貢献

PostgreSQL9.6の開発サイクルでは、EDBはコードのいくつかの大きな貢献をしました。パラレルクエリーは主にEDBスタッフによって開発されました.NEAH MISCHはEDBに在籍している間に初期の設計作業を手助けしました。 Amit Kapilaは、並列シーケンシャルスキャンの作業のほとんどを行った。インフラストラクチャの多くは、並列ジョインの– サポートと同様に、私が書きました。 EDBの他のスタッフもコード、テスト、バグ修正に貢献しました。 さらに、PostgreSQLコミュニティの– 他のメンバーからの貢献例えば、第二クオドラントのDavid Rowleyが並行して行った重要な作業– がEDBスタッフによってレビューされ、執行されました。

EDBのスタッフは、PostgreSQL 9.6の 2つの非常に重要な機能の主要な開発者でした。Thomas Munroは、新しい整合性レベルであるsynchronous_commit=remote_applyのサポートを開発しました。日本電信電話株式会社(NTT)の澤田雅彦氏などが開発したPostgreSQL 9.6の複数の同期スタンバイをサポートすることで、初めて堅牢な読み取りスケーリングクラスタを構築することがPostgreSQLで可能になりました。以前のリリースでは、クライアントに通知されたコミットが単一スタンバイに同期してレプリケートされたことを保証することができました。これは、そのトランザクションのWrite-Ahead Log(WAL)がスタンバイディスク上にあった それは実際に再生され、可視化されました。

これとは別に、EDBのKevin Grittner氏は、データベースセッション全体を終了させることなく、テーブルとインデックスの膨張を制御できる最初のPostgreSQL機能である、新しい「スナップショットが古すぎる」機能のサポートを開発しました。その代わりに、すでに削除されたデータにアクセスしようとするクエリーだけが影響を受け、セッション全体ではなくクエリーだけ終了します。

共同開発の取り組み

主にスタッフが書いた機能に加えて、EDBは他のPostgreSQL企業と多くの主要な開発作業に協力しました。パフォーマンスとスケーラビリティはPostgreSQLコミュニティ内で引き続き優先事項であり、Citus Data、Postgres Pro、EDBを含むいくつかの企業からの寄稿者は、PostgreSQL 9.6の開発サイクル中にその分野で活躍していました。

  • Andres Frend(Citus Data社)とAlexander Korotkov(Postgres Pro社)は、スピンロックではなくアトミック操作を使用してバッファを固定し、ピンを解除するパッチを提供しました。
  • Dilip Kumar(EDBの)は、急速に成長するテーブルへの同時挿入のパフォーマンスを改善するパッチを提供しました。
  • Amit Kapila(EDBの)と私は、ProcArrayLockというキーロックに対する競合を改善することで、書き込み負荷の高いワークロードのスケーラビリティを改善するためのパッチに貢献しました。
  • Alexsander Alekseev(Postgres Proの)は、PostgreSQLがさまざまな目的で使用する共有メモリハッシュテーブルのスケーリングを改善するパッチに貢献しました。
  • Peter Geoghegan(Herokuの)は、大幅に高速化するパッチに貢献しました。
  • Amit Kapila and Andres Freund worked together to determine that an increase in the number of buffers used to store commit-status data could improve scalability without regressing performance in other cases. 

EDBは、我々が書いたものだけでなく、レビュー、テスト、およびベンチマークによって、これらのパッチのすべてをサポートしました。EDBはもっと速いPostgreSQLが誰にとっても良いと考えており、その目標を共有している他の企業–や個人貢献者と協力したいと考えています。

EDBは長年にわたってPostgreSQLとPostgres-XC、特に水平スケーラビリティに関する分野でNTTと協力してきました。しかし、このリリースサイクルでは、EDBは、postgres_fdwを向上させるためにNTTと協力しているスタッフの時間を大幅に増やしました。Ashutosh BapatとRushabh Lathiaは共にこのプロジェクトにかなりの時間を費やしました。Postgres_fdwには、今、ソート、結合、更新(UPDATE)、削除(DELETE)をリモートサーバに完全にプッシュする機能が追加され、多くのクエリーのパフォーマンスが大幅に向上しました。多くの重要な機能が追加されており、EDBはNTTやPostgreSQLコミュニティの他の関係者と協力してこれらの機能をPostgreSQLにもたらしました。 これはPostgreSQLにとって非常に重要な領域であるため、我々はこれが起こった事をとても嬉しく思い、又他の企業からも水平スケーラビリティの分野で完全に独立した貢献をすることが期待されています。

EDBは、他のプロジェクトにも参加しています。たとえば、PostgreSQL 9.6の開発サイクルでは、PostgreSQLを以前よりも大きなデータベースサイズにscaleするための主要な作業は、NTTの澤田雅彦氏が私の助けを借りて行ったものです。この作業は、 "ラップアラウンド"のために実行されるvacuumを最適化し、システムが同じデータブロックを繰り返しスキャンする必要がないようにします。PostgreSQL 9.6では、Ildus KurbangalievとAlexander Korotkov、(両方ともPostgress Proの)およびAndres Freundなど、さまざまな企業のエンタープライズスタッフが参加したpg_stat_activityの待ち時間のレポートを提供しています。

これは網羅的なリストではありません。しかし、EDBのPostgreSQL開発プロセスへの参加は、コードの作成だけでなく、レビュー、テスト、ベンチマーク、コミットなど、多くのスタッフが関与しています。

PostgreSQL関連プロジェクト

Aside from our work on the core of PostgreSQL, EDB makes significant contributions to several other PostgreSQL-related projects. EDB employs two pgAdmin committers, Dave Page and Ashesh Vashi, and has funded most of the development on pgAdmin 4, a new Python-based web UI with a clean, modern look. EDB also employs Muhammad Usama, a pgpool-II contributor and committer. 

EDB はopen sourceとしてもいくつかの ツールをリリースしました。最近の例には、EDBスタッフIbrar Ahmedによって管理されているhdfs_fdw、mysql_fdw、mongo_fdwなどの外部データラッパー(FDW)が含まれます。hdfs_fdwはもともとIbrarによって書かれたものですが、mysql_fdwはもともとDave Page(EDB)によって書かれたもので、mongo_fdwはCitus Dataによって書かれ、EDBスタッフによって強化され拡張されています。さらに、EDBは最近、pg_catcheckというカタログサニティチェッカーをリリースしました。これは、PostgreSQLデータベースのカタログ破損を見つけ出し、pg_dumpで破損していないデータを抽出できる程度に修復することを目的としています。

EDBは組織がPostgreSQLで成功するのを助けるために創設され、open sourceを展開するため必要となる多くのエンタープライズクラスのパフォーマンス、セキュリティ、および管理容易性の強化を開発しました。明らかに、EDBはPostgreSQLコミュニティとの関係から何年にもわたって膨大な利益を得ていますが、PostgreSQLコミュニティはコミュニティへの参加やEDBが提供する機能によって利益を得ると確信しています。PostgreSQLに関連するツールやプロジェクトをサポートしコードを提供するために働いているEDBとEDBのスタッフは、PostgreSQLの拡張と改善を継続することで、PostgreSQLの長年のスローガンである「世界で最も先進的なオープンソースデータベース」がより真実になり 我々の顧客とPostgreSQLコミュニティ全体の利益となります。

Robert Haas is Vice President and Chief Database Architect at EDB. 

robert.haas_enterprisedb.comの写真

Robert is Chief Architect, Database Server, employed at EnterpriseDB as well as a PostgreSQL Committer. Robert is an expert in OLTP query tuning, schema design, triggers and stored procedures, and internals development, as well as an experienced UNIX/Linux system administrator. Additionally,...