Bruce Momjan、Marco Crean、Fedor Sigaev、Maxim Bogukは、PostgreSQLに関する質問に答えました

tika-online.deからの写真

6月30日、オンラインセッション「PostgreSQLのグローバルな専門家への質問」を開催しました。 3時間以内に、招待されたゲストの1人にだれでも質問し、完全な回答を受け取ることができました。 その結果、40を超える質問が寄せられましたが、どれも注意なく放置されていませんでした。



参加者: ブルース・モジャン( PGD​​G、EnterpriseDB)、 マキシム・ボグク(ランブラー、マスターホスト)、 ヒョードル・シガエフ (PGDG)、 マルコ・クリーン(マルコ・クリーン) (スカイプ)。



選択した質問と回答は次のとおりです。



質問番号3



改改

作業中の迷惑なことの1つは、INSERTまたはUPDATEコンストラクトの欠如です。 MySQLでは、「INSERT INTO users(username、email)VALUES( 'Jo'、 'jo@email.com')ON DUPLICATE KEY UPDATE email = 'jo@email.com'」のようにできます。 PostgreSQLでも同様の何かが表示されますか?



PostgreSQLコミュニティのリーダーであり、EnterpriseDBのエキスパートであるBruce Momjan:

そのようなものの標準(ANSI)メソッドはMERGEまたはUPSERTです。 どちらの方法もTODOリストにあり、私が知る限り、誰かがこの機能をPostgreSQL 8.4で作業していますが、個人的にはこのパッチはまだ見ていません。 間違いなく、この構文が必要です。



質問番号5



アレクサンダー:

Skype開発者への質問:

1)少なくともおおよそ、Skypeの規模を評価したいと思います。 現在何人のユーザーが登録されていますか? 同時にオンラインになっているユーザーは何人ですか? PostgreSQLは1秒間にいくつのトランザクションを実行しますか? PostgreSQLサーバーはいくつありますか?

2)PostgreSQLで1秒あたりのトランザクション数を正しく測定する方法は?



Skypeエンジニア、Marco Creen:

1)現在3億人の地域にいるユーザーの総数。 アクティブユーザーについては知りませんが、Skypeクライアントでは、現在1,000万人のユーザーがオンラインであることが示されており、ピーク負荷にはほど遠い状態です。 1秒あたりのトランザクション数(TPS)の正確な数値はありませんが、負荷は10〜2万TPSの範囲にあるようです。 合計で100台を超えるPostgreSQLサーバーがありますが、すべてが同時に動作するわけではありません。

2)データベースの前にインストールされたログアナライザーまたはpgBouncerを使用すると、そのような統計が得られます。



質問番号7



セルゲイ・コノプレフ:

データベース内の操作に基づいてイベントを生成するタスクがあります:追加/変更/削除。 もちろん、これはトリガーで実行できますが、IMHOファイルのWALレベルでは、処理が遅延して実行される可能性があることは言うまでもなく、これはより効果的です。 質問-WALファイルを操作するための十分に文書化されたAPIがありますか?もしそうなら、バージョンごとにどれくらい変化しますか? その場合、これに関する情報はどこで入手できますか?



Fedora Sigaev、リードPostgreSQL開発者:

WALファイルへの外部アクセスは意図されていないため、外部APIはありません。 さらに、それらの形式はマイナーバージョンとのみ互換性があり、メジャーバージョン間の形式の互換性の保証は想定されていません。 Postgresには、WALレコードの中央復号器すらありません。ある意味で、各レコードは復号器のサイン(テーブル、btreeインデックス、GiSTインデックスなど)を持つコンテナです。次の理由により:ファイルは再利用でき、Postgresはそのことを外部に通知しません。



PostgreSQLコミュニティのリーダーであり、EnterpriseDBのエキスパートであるBruce Momjan:

つまり、WALファイルを直接読み取る方法を探していますか? 内部形式が非常に複雑であるため、このためのAPIはありません。 ログを読み取る機能が役立つ可能性があることに気付きました。おそらく、この願いをTODOリストに含めることを検討する必要があります。 実際にはpg_filedump( http://sources.redhat.com/rhdb/utilities.html )がありますが、WALファイルをダンプするかどうかはわかりません。



Skypeエンジニア、Marco Creen:

おそらくこれはより効率的ですが、信頼性は低くなります(たとえば、WALファイルは知らないうちにリンクされる可能性があります)。 SkytoolsパッケージのPgQを試して、このメカニズムを使用してキューイングするスクリプトを調べてください。 これは、データベース内の非常に効率的なキューであり、使いやすく、信頼性があります。 また、キュー処理中に複数のデータベース間のトランザクションを保証するための組み込みフレームワークも備えています。 また、テーブルの構造を自動的に決定し、簡単に解析できる形式(urlencode)でデータをフォーマットするトリガーもあります。



質問番号8



sakalr:

本に関する質問。 今日、イギリスのアマゾンから本を受け取りました。数週間待たなければなりませんでした。 ロシアでは、現在のバージョンから、3900ルーブルの本しか見つかりませんでした。 一般に、本は英語で書かれますが、私はBiblio-GlobusまたはYoung Guardに行ってこの本を棚で見たいですが、3,900ルーブルではありません(Amazonでこの本は2倍安くなりました) 。 PostgreSQLで開発する必要がありますが、私にとっては、PgSQLの初心者としては困難です。 私は常にfreenodeで壊れた英語でコミュニケーションを取り、基本を学び、多くの時間を費やしなければなりません。 それが本について疑問が生じる理由です。 postgresql(英語/ロシア語)に関する書籍は非常に必要です。



Fedora Sigaev、リードPostgreSQL開発者:

すでにSQLの方言に精通している場合、Postgresでの作業はそれほど不便ではありません。 Postgresのドキュメントは非常に優れており、通常は十分です(もちろん注意深く読んでください)。 SQLに慣れていない場合は、SQLチュートリアルを受講することをお勧めします。



PostgreSQLコミュニティのリーダーであり、EnterpriseDBのエキスパートであるBruce Momjan:

英語とロシア語の本がもっと必要だということに完全に同意します。 理想的には、PostgreSQLドキュメントをロシア語に翻訳する必要があります。



質問番号18



改改

pgAdminに関する別の質問があります-Linuxの一般的なバージョンのパッケージを定期的に収集する予定ですか? たとえば、Ubuntu 8.04ではpgAdmin 1.8.2(バギー)になり、サイトではpgadmin.orgはすでにpgAdmin 1.8.4になっています。



PostgreSQLコミュニティのリーダーであり、EnterpriseDBのエキスパートであるBruce Momjan:

これらの問題はUbuntuで修正されたと言われました。 ここでの唯一の問題は、Ubuntu開発者に更新のためにサーバーを更新させることだと思います。 Ubuntu用Postgresを含むソフトウェアパッケージのバンドルも優れた機能を発揮するため、おそらく試してみてください。 PostgreSQLサーバー、pgAdmin、およびその他の多くのソフトウェアが、Ubuntu開発者ではなく、pgAdminの作成者であるDave Pageによって準備されたパッケージに含まれています。



質問番号26



SkypeはどのようにしてPostgreSQLをメジャーバージョン間で移行しますか?



Skypeエンジニア、Marco Creen:

Londiste(Skytoolsの複製コンポーネント)を使用します。



質問番号36



ドミトリー:

組み込みのマルチマスターレプリケーションを導入する予定ですか? もしそうなら、いつベータ版を期待できますか?



PostgreSQLコミュニティのリーダーであり、EnterpriseDBのエキスパートであるBruce Momjan:

マルチマスターレプリケーションの実装を試みることもできますが、ロックにより多くの場合非効率になります。 ほとんどの開発者は、サーバー間のデータのマスター/スレーブレプリケーションまたはパーティション分割をより良い代替手段と考えています。 ところで、PgPoolはマルチマスターモードで動作できます。 PgClusterはマルチマスターを実装していますが、そのパフォーマンスは劣っています。 Slony-IIはマルチマスターを実装しようとしましたが、再びパフォーマンスが低下しました。



Fedora Sigaev、リードPostgreSQL開発者:

マスター-マルチスレーブの統合レプリケーションの計画がありますが、これが8.4になることを願っています。 Multi-Masterについて-Postgres-Rをご覧ください。そのソースコードは1か月間公開されています。



Skypeエンジニア、Marco Creen:

記録負荷を複数のマシンに分散したい場合は、PL /プロキシを見てください-一般的に受け入れられている意味ではマルチマスターではありませんが、非常に優れたパフォーマンスを備えており、従来のマルチマスターシステムにはありません。



オンラインセッションの全履歴は、 当社のWebサイトで確認できます。



All Articles