Comments
Description
Transcript
Postgres Plus Advanced Server概要
PostgreSQL を越えて Postgres Plus Advanced Server 概要 EnterpriseDB ホワイトペーパー DBA/アプリケーション開発者/エンタープライズアーキテクト向け 2009 年 6 月 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 2 要旨 20 年以上にわたって PostgreSQL は、世界で最も先進的なオープンソー スデータベースとしての評価を得てきました。EnterpriseDB の Postgres Plus Advanced Server は、実績のある PostgreSQL 基盤上に構築され、 コミュニティ版では利用できない非常に付加価値の高い機能を提供します。 EnterpriseDB によって PostgreSQL に追加された機能は、アプリケー ション開発向けのパフォーマンス強化、ランタイム管理、ユーザビリティ、 拡張性といった幅広いエンタープライズ要件に対応します。さらに EnterpriseDB は、24 時間 365 日の技術サポートや、アプリケーション開 発者、DBA、および国際運用チームが必要とするトレーニングや専門 サービスを提供します。 エンタープライズクラスのオープンソースデータベースの比類なき低価格 性と高パフォーマンスを活用したいと考えるお客様は、PostgreSQL の現 行ユーザーも含めて、Postgres Plus Advanced Server ならびにパフォー マンスの最適化とこれを継続的に保証するサービスにご満足いただけるで しょう。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 3 概要 Postgres Plus Advanced Server は、PostgreSQL のオープンソースコ ミュニティ版をベースに開発されています。20 年以上にわたる開発で、 Postgres Plus Advanced Server は昨今の要件の厳しいデータベースアプ リケーション向けに設計されてきました。Postgres Plus はそのトランザ クション処理能力に定評がありますが、問い合わせ集中型アプリケーショ ンや混合負荷アプリケーションなどにおいても卓越したパフォーマンスを 実現します。 興味深いことに、開発という観点では、Advanced Server はコミュニティ 版よりも遅れをとりがちです。EnterpriseDB はこの遅れを活かして、幅 広いエンタープライズ向けアプリケーションのパフォーマンス、安定性、 および拡張性に対するニーズを満たすべく Advanced Server を強化、改 良しています。 開発の最先端からは距離を置きながらも、EnterpriseDB は PostgreSQL コミュニティの積極的な参加メンバーであり、主な PostgreSQL テクノロ ジーの進化に大きく貢献しています。EnterpriseDB は主要なコミュニ ティメンバーを雇用し、ヒープオンリータプル、高速テキスト検索、 StackBuilder、さらにはマルチプラットフォームの pgAdmin III といった 管理/開発ツールなどの主要機能についても資金援助しています。さらに EnterpriseDB は、NTT(日本電信電話株式会社)などの他のコミュニ ティリーダーと提携し、同期レプリケーションなどの革新的な PostgreSQL 機 能 に 共 同 出 資 し て い ま す 。 EnterpriseDB は ま た 、 PostgreSQL ユ ー ザ ー に 高 性 能 な パ ラ レ ル ク エ リ ー 機 能 を 提 供 す る GridSQL オープンソースプロジェクトを独自に管理しています。 Postgres Plus Advanced Server を PostgreSQL から際立たせる機能は数 多くあります。その機能の 1 つが Oracle との互換性です。本書では触れ ませんが、Postgres Plus Advanced Server における主な Oracle 互換機能 の多くは、ほとんどの Postgres アプリケーションにとって必須(かつ利 用 可 能 ) な も の で す 。 こ れ ら の 機 能 には 、 ク エ リ ー 最 適 化 ヒ ン ト 、 EDB*Loader、バルクデータ収集などがあります。 本書で記述する PostgreSQL と Postgres Plus Advanced Server の主な機 能の違いは以下の通りです。 • パフォーマンス o DynaTune™ o クエリーオプティマイザヒント o EDB*Loader © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット • • • 4 o バルク SQL 操作 o クエリープロファイラ o 非同期プリフェッチ 管理 o DBA 管理サーバー o DBA モニタリングコンソール o 動的ランタイム計装ツールアーキテクチャ (DRITA) o アップデートサービス o 監査ログ機能 o データベース移行 有用性 o エンタープライズクラスパッケージ o PL デバッガ o トランザクションエラーリカバリ 拡張性 o GridSQL o Infinite Cache o データベースリンク これらの機能を PostgreSQL に追加することで、EnterpriseDB はエン タープライズクラスのデータベースプラットフォームを提供し、超高速パ フォーマンス、ほぼリニアな拡張性、99.99%の可用性、堅牢なセキュリ ティ、複雑なトランザクション処理のサポート、ほぼリアルタイムで世界 各地のデータベースをレプリケートする能力などを実現します。これらは すべて、驚くほど簡単にインストールでき、非常に低い総所有コスト (TCO)の使いやすいパッケージになっています。 本書の残りの部分では、PostgreSQL 基盤上の Advanced Server の高付加 価値機能についての概要を説明します。 パフォーマンス Postgres Plus Advanced Server の高付加価値なパフォーマンス向上は、 主に EnterpriseDB が行った Oracle との互換性への大規模な投資の成果で す。もともと Oracle との互換性をサポートするために開発されたこれら の機能の多くは、オプティマイザヒント、EDB*Loader、バルク SQL 操 作などの非 Oracle アプリケーションで今日幅広く使用されています。 Postgres Plus Advanced Server で使用可能な Oracle 機能全ての詳細につ い て は 、 EnterpriseDB ホ ワ イ ト ペ ー パ ー 『 Delivering Oracle Compatibility』を参照してください。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 5 DynaTune™ ワークロードプロファイリングが可能な EnterpriseDB の DynaTune™は、 DBA やアプリケーション開発者にとってもっとも困難な作業の 1 つを簡 素化します。それは、データベースによるサーバー利用とアプリケーショ ンによるデータベース利用に応じてデータベースを適切にチューニングす る作業です。 人気の高いデータベースは「チューニングオプションは多いほど良い」と いう信条で作られているようですが、データベース専門家は、チューニン グオプションが多すぎると DBA は適切な最適化作業を怠る傾向にあると 指摘しています。従って、パフォーマンス分野の専門家しか知らないよう な膨大なチューニングパラメータを個々に管理するというやり方ではなく、 誰もが知っている大まかなチューニングをまず行い、次に細かいチューニ ングを実施するという手法を組み合わせることが最適なチューニング方法 だと言えます。 DynaTune によって Postgres データベースのチューニングのわかりにく さを大幅に解消します。広範囲なパフォーマンステストを通じて開発され た高度なアルゴリズムを使用する DynaTune では、幅広いハードウェア オプションを使って複数の Postgres 構成オプションを設定します。これ らは 2 つの基本的な使用率に関する選択肢に基づきます。このように分 かりやすいインストール時のチューニングによって、ユーザーは高パ フォーマンスを確実に実現でき、アプリケーション使用率の増加に伴って 追加的なチューニングも可能です。 図 1:インストーラのDynaTuneセットアップ © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 6 さらに、ハードウェアのアップグレード(メモリ拡張など)後、 DynaTuneはデータベース起動時に自動でチューニングパラメータを再調 整し、前回の設定と矛盾しない形で新しい構成を使用できるようにします。 クエリーオプティマイザヒント クエリーオプティマイザヒントを使用すれば、アプリケーション開発者は 任意の SQL オプティマイザの実行計画に変更を加えることができます。 これは、オプティマイザが認識していないデータに関する情報がある場合 に便利です。例えば、あるクエリーに対してより適したインデックスがあ るケースなどです。 PostgreSQL の世界でありがちなシナリオは、予定しているクエリーの実 行時間がバラバラな場合です。PostgreSQL は最初の起動時に予定クエ リーの計画を立てますが、その後の大部分でその実行計画は必ずしも最適 でないことがあります。例えば、小規模なテーブルに対して作成されたク エリー計画は、時間と共にテーブルが増大していくと最適でなくなること が多々あります。PostgreSQL は、小規模なテーブルのデータの検索には シーケンシャルスキャンを、大規模なテーブルにはインデックススキャン を優先して行います。 一般的な商用データベースアプリケーションの日次トランザクションテー ブルについて考えてみましょう。毎日の始業時にはテーブル内に少数行し か存在しなかった場合でも、終業時にはテーブル内に何百万行も含まれて いることがあります。始業時に準備したクエリー計画はすぐに最適性を 失ってしまいます。このように増大していくことを理解しているアプリ ケーション開発者は、クエリーオプティマイザヒントを適用して、日次ト ランザクションテーブル上でインデックススキャンを行うよう Postgres のデフォルト計画を変更することができます。 オプティマイザヒントは、以下の例で示しているように、クエリーの SELECT 句に簡単に追加できます。 PREPARE foo(int)AS SELECT /*+ INDEX(emp emp_pk)*/ empno, ename, dname FROM emp, dept WHERE emp.deptno = dept.deptno AND empno = $1 EXECUTE foo(7369); © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 7 上記のクエリーは、以下のようなクエリー計画を生成します。「emp」 テーブルでシーケンシャルスキャンが優先して使用される場合、クエリー の実行に「emp_pk」インデックスが使用されます。 emp_pk ネストループ dept 図 2:最適化されたクエリー計画 様々な種類のクエリーオプティマイザヒントが利用可能であり、実行計画 をアプリケーションのニーズに合わせることができます。クエリーは、最 初の行を素早く返す計画に合わせて最適化したり、ある種類の JOIN 句を 使用するよう変更することなどが可能です。これらのヒントはすべて、ア プリケーション開発者がクエリー実行をより柔軟に制御できるようにする もので、一貫性のあるアプリケーションパフォーマンスとエンドユーザー エクスペリエンスを実現します。 以下の表は、Postgres Plus Advanced Server で使用可能なクエリーオプ ティマイザヒントを一覧にしたものです。 クエリーヒント 内容 ALL_ROWS 全ての結果集合を検索するように最適化しま す。 CHOOSE 結果集合から検索する想定行数に依存した最 適化は行いません。これがデフォルトです。 FIRST_ROWS 結果集合から最初の行のみを検索するように 最適化します。 FIRST_ROWS_10 結果集合から最初の 10 行を検索するように最 適化します。 FIRST_ROWS_100 結果集合から最初の 100 行を検索するように 最適化します。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 8 FIRST_ROWS_1000 結果集合から最初の 1000 行を検索するように 最適化します。 FIRST_ROWS(n) 結果集合から最初の n 行を検索するように最 適化します。 FULL(table) テーブ ルに 対し て完全 なシー ケン シャ ルス キャンを行います。 INDEX(table [ インデックス] […]) リレーションへのアクセスにテーブルのイン デックスを使用します。 NO_INDEX(table [ インデックス] […]) リレーションへのアクセスにテーブルのイン デックスは使用しません。 USE_HASH(table […]) テーブ ルの ジョ イン属性から 作成 した ハッ シュジョインを使用します。 NO_USE_HASH(table […]) テーブ ルの ジョ イン属性から 作成 した ハッ シュジョインは使用しません。 USE_MERGE(table […]) テーブルにマージソートジョインを使用しま す。 NO_USE_MERGE(table […]) テーブルにマージソートジョインは使用しま せん。 USE_NL(table […]) テーブルにネストループジョインを使用しま す。 NO_USE_NL(table […]) テーブルにネストループジョインは使用しま せん。 表 1:Postgres Plus Advanced Server で利用可能なクエリーオプティマイザヒント EDB*Loader EDB*Loader には、基本的なテキストファイルを Postgres データベース にロードする際のパフォーマンスを上げる機能がいくつかあります。 PostgreSQL 標準のこのような機能に「COPY」コマンドがありますが、 このコマンドにはロード時間を大幅に増加させる重大な制約があります。 1 つめの制約は、「COPY」コマンドが固定幅ファイル形式を処理できな いという点です。多くのファイルがこのような形式になっていますが、 PostgreSQL を使用する場合、これらをカンマ区切り形式に変換しなけれ ばならず、実質的にファイルが 2 度書き換えられることになります。 「COPY」コマンドのもう 1 つの大きな制約は、エラー処理機能がないこ とです。「COPY」コマンドを使用する場合、ファイルの 1 つの行が無効 であれば、全ての行が拒否されることになり、ファイル全体の再処理が必 要となってしまいます。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 9 EDB*Loader では、無効なレコードを廃棄ファイルに移動させることがで き、ロードエラーが発生した場合でもファイル処理を続行できます。ユー ザーは別途、バルクロード処理が完了した時点で、廃棄ファイルを検査し、 特定のデータロード障害を解決すればよいことになります。 しかし、EDB*Loader においてロードパフォーマンスをもっとも劇的に向 上させるのは、ダイレクトパスロードを実行する機能です。ダイレクトパ スロードは、バルクロードパフォーマンスを低下させる処理負荷の一部を パイパスするもので、オールオアナッシングの方法で完了させなければな りません。 ダイレクトパスロードは、制御ファイルに定義された行仕様に従って入力 行を解析します。次に、ファイルデータを列データ型に変換し、内部デー タ構造を構築します。次に、データ構造が直接 Postgres データブロック 形式に変換されます。新たに作成されたブロックは、データディレクトリ に直接書き込まれ、ほとんどの処理をバイパスするためロード時間が大幅 に短縮されます。 COPY コマンド EDB* ローダー SQL コマンド処理 空間管理 共有(データ) バッファ チェック ポイント 安定した データベース 図 3:COPY とデータのダイレクトロードの比較 COPY ロード方式とダイレクトパスロード方式との違いを図 3 に示しま す。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 10 バルク SQL 操作 多数の行から構成される結果集合を返す SQL コマンドは、膨大な結果集 合を受け渡すためにデータベースエンジンとプロシージャー言語コード間 でコンテキストスイッチが絶えず発生し、あまり効率良く動作しないこと があります。 このような非効率性は、コレクションを使って結果集合をメモリに収集し、 クライアントがこれにアクセスできるようにすることで軽減できます。 Postgres Plus Advanced Server の ス ト ア ー ド プ ロ シ ー ジ ャ ー 言 語 (SPL)には BULK COLLECT 句が含まれており、これを使って多数の結 果集合をメモリ内コレクションに記述します。BULK COLLECT を使用し て、多数のカーソルを操作する PL/pgSQL 関数を SPL 関数に変更するこ とで、パフォーマンスを 100%以上も向上させることができます。 BULK COLLECT の使用について説明するため、以下のコードの一部にあ る関数 samplefunction1()を見てみましょう。 CREATE TABLE tab1 AS SELECT * FROM accounts WHERE 1=0; CREATE OR REPLACE FUNCTION samplefunction1()RETURNS VOID AS $$ DECLARE arow accounts%ROWTYPE; acur CURSOR FOR SELECT * FROM accounts; BEGIN OPEN acur; LOOP FETCH acur INTO arow; EXIT WHEN NOT FOUND; INSERT INTO tab1(aid, bid, abalance, filler) VALUES(arow.aid, arow.bid, arow.abalance, arow.filler); END LOOP; CLOSE acur; END; $$ LANGUAGE 'plpgsql'; SELECT samplefunction1(); 関数 samplefunction1 は、大きな結果集合を操作するシンプルなカーソル を表しています。以下の関数 samplefunction2 は、パフォーマンスを 85%向上させて同じ結果を実現しています。BULK COLLECT によって開 発者は、長時間選択的に実行させる関数のパフォーマンスを劇的に向上さ せることができます。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 11 CREATE OR REPLACE FUNCTION samplefunction2 RETURN VOID AS DECLARE TYPE atab_type IS TABLE OF accounts%ROWTYPE INDEX BY BINARY_INTEGER; atab atab_type; CURSOR acur IS SELECT * FROM accounts; BEGIN OPEN acur; LOOP FETCH acur BULK COLLECT INTO atab; FORALL i IN 1..atab.COUNT INSERT INTO tab1 VALUES(atab(i).aid, atab(i).bid, atab(i).abalance, atab(i).filler); EXIT WHEN acur%NOTFOUND; END LOOP; CLOSE acur; END; SELECT samplefunction2(); クエリープロファイラ Postgres Plus Advanced Server は、DBA 管理サーバーコンソールアプリ ケーション内にクエリープロファイラを備えています。クエリープロファ イラは、選択されたデータベースのアクティビティを検査し、そのデータ ベースに対して実行された SQL コマンドのレポートを生成します。デー タベース管理者は、クエリープロファイラレポートをシステムのパフォー マンス向上に役立てることができます。クエリープロファイラによってレ ポートされた情報は、主に以下のような 2 つの目的に利用できます。 • • もっとも長時間実行している SQL コマンドを追跡し、そのパ フォーマンスを向上させる。 もっとも頻繁に使用される SQL コマンドまたは時間を消費する操 作を追跡し、さらなるパフォーマンス最適化を図る。 SQL コマンドの結果リストは、合計実行時間、平均実行時間、あるいは ステートメント数(ある SQL コマンドが実行された回数)をもとに、 Order By(並び替え)ドロップダウンリストから希望するランク付けを 選択して配列させることができます。 表示させる SQL コマンドの種類は、以下のボックスにチェックを入れる ことで選別することができます。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット • • • • • 12 Include Inserts Include Updates Include Deletes Include Selects Include Others 以下は DBA 管理サーバーのクエリープロファイラから生成された出力サ ンプルです。 カウント ランク 結果 合計実行 時間 (ms) 平均実行 時間 (ms) クエリー 図 4:クエリープロファイラのサンプル出力 非同期プリフェッチ 非同期プレフェッチは、Postgres Plus Advanced Server とコミュニティ PostgreSQL の Linux バージョンにおける機能です。これによってデータ ベースサーバーは、RAID(Redundant Array of Inexpensive Disks)ハー ドウェアを最大限活用することができます。しかし、このセクションの後 半で説明するように、EnterpriseDB は Postgres Plus Advanced Server の 非同期プレフェッチ機能をさらに拡張しました。 RAID ハードウェアを使用する場合、いくつかの異なる技術を用いて複数 のディスクドライブにデータベースデータを割り当てることができます。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 13 • ストライピング:RAID コントローラはデータを複数ブロックに分 • 割し、各ブロックを別々のディスクドライブに書き込みます。 ミラーリング :RAID コントローラはデータの正確なコピーを各 ディスクドライブに書き込みます。 ストライピングとミラーリングを組み合わせて使用することもできます。 非同期プレフェッチと RAID ハードウェアの使用は、以下のような状況で 特に有用です。 • • • データウェアハウスアプリケーション ETL(抽出/変換/ロード)アプリケーション 少数の複雑なクエリーが多いアプリケーション 非同期プレフェッチがない場合、ディスク I/O はシリアル化されます。つ まり、アレイ内のディスクドライブ 1 台だけが動作し、その他のディス クドライブはアイドル状態のままで、一度に 1 つの I/O 操作だけが発生し ます。 Postgres Plus Advanced Server アイドル状態 の ディスク 1 ビジー状態 の ディスク 2 アイドル状態 の ディスク 3 図 5:非同期プレフェッチがない場合 非同期プレフェッチが有効になっている場合、複数のディスク I/O 要求が 並行して実行されるため、複数のディスクドライブを同時に稼働させるこ とができ、ディスクアクセスの合計時間が短縮されます。これによって、 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 14 ストライピングまたはミラーリング技術のいずれを使用するかに関わらず、 パフォーマンスが向上します。 Postgres Plus Advanced Server ビジー状態 の ディスク 1 ビジー状態 の ディスク 2 ビジー状態 の ディスク 3 図 6:非同期プレフェッチがある場合 非同期プレフェッチは、クエリーオプティマイザがビットマップスキャン でデータにアクセスする場合にパフォーマンスを向上させます。論理演算 AND/OR をインデックスに適用できるクエリーでは、インデックスデー タがメモリ内のビットマップに変換され、ここに演算が適用されて選択さ れた行を判別します。複数のドライブを使用すると、選択された行へのア クセスが高速化されます。 前述のバージョンの非同期プレフェッチは、EnterpriseDB によってコ ミュニティ PostgreSQL バージョン 8.4 に追加されました。しかし、 Postgres Plus Advanced Server には現在、非同期プレフェッチの拡張 バージョンが含まれており、ビットマップインデックススキャンに加えて、 通常のインデックススキャンの用法でも同様の複数ドライブ同時アクセス 機能を実現します。 以下のような状況で通常のインデックススキャンが使用される場合に、非 同 期 プ レ フ ェ ッ チ 機 能 を 持 つ EnterpriseDB Postgres Plus Advanced Server が PostgreSQL よりも有利になります。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット • • • 15 インデックスが高度にクラスタ化されていない。つまり、インデッ クスと同じ順番で行が保存されていない。 インデックス範囲が狭い(1 つまたは少数の列でインデックスが構 成されている)。 多数の行の検索が予想される。 管理 Postgres Plus Advanced Server には、PostgreSQL のコミュニティ版で は利用できない様々なデータベース管理ツールが含まれており、これらは メンテナンスを劇的に簡素化し、データベースの内部処理パフォーマンス を向上させ、データベースソフトウェアを最新に維持し、複雑な政府のコ ンプライアンス規制への準拠を支援します。 DBA 管理サーバー DBA 管理サーバーによってデータベース管理者は、無限の数の Postgres Plus または Postgres Plus Advanced Server データベースに対して、デー タベースパフォーマンスのリアルタイム監視、統計データの参照、構成上 の問題の特定などを行うことができます。また、多数のレポートが用意さ れており、これらは HTML および PDF 形式の両方で生成可能です。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 16 図 7:ブラウザベースの DBA 管理サーバー DBA 管理サーバーには、管理者が Postgres の本番インスタンスをメンテ ナンスするのを支援する機能があります。PostgreSQL にはない機能のう ちの 1 つが、日常のメンテナンスを行うジョブスケジューリングです。 cron などのシンプルなオペレーティングシステム固有のスケジューリン グツールは、シンプルな開発やテスト目的であれば十分ですが、これらは 「一回限り」のバッチであるため、エンタープライズ基盤に実装される場 合は一貫性が問題となります。DBA 管理サーバーのジョブスケジューラ は、全てのオペレーティングシステムをまたぐ一貫したブラウザベースの インターフェースを提供するため、管理者は単一のコンソールから Postgres メンテナンスジョブの全てを簡単に閲覧することができます。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 17 図 8:DBA 管理サーバージョブスケジューラ DBA 管理サーバーによって処理されるその他のタスクには以下のような ものがあります。 • • • • • ユーザーアクティビティ、ロック状態、バッファキャッシュの監視 前述のクエリープロファイリングの実行 対話式 SQL クエリーの発行 自動アップデート通知サービスのチェックとスケジューリング 様々な統計データ、メタデータ、プロシージャーロジック、および セキュリティレポートの実行 DBA モニタリングコンソール DBA モニタリングコンソールによってデータベース管理者は、1 台以上 の Postgres Plus または Postgres Plus Advanced Server データベース サーバーによるシステム使用率を、迅速かつ使いやすいリアルタイムな ダッシュボードで把握することができます。以下の情報にはグラフが表示 されます。 • • • • CPU 使用率 メモリ使用率 ディスクから読み取られたデータブロック数 バッファキャッシュから読み取られたデータブロック数 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 18 図 9:DBA モニタリングコンソール グラフは上記のように 1 つの画面上に表示させたり、あるいは別々に表 示させることも可能です。各グラフは、線または棒グラフのどちらを優先 して情報表示させるかを設定できます。 また、サーバーの各データベースに接続している個々のプロセスと、その 現在のクエリーを示す図表を表示させることもできます。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 19 図 10:DBA モニタリングコンソールサーバープロセス サーバープロセスの図表と 4 つのグラフについては、情報の更新頻度を 調整することが可能です。 Dynamic Runtime Instrumentation Tools Architecture(DRITA) DRITA によってデータベース管理者は、データベースのロード中でも、 ランタイム統計データを含む新しいカタログビューを問い合わせることが できます。この情報を利用すれば、どの待機イベントが各セッションまた はシステム全体のパフォーマンスに影響与えているのかを特定することが できます。イベントの発生回数や待機時間が収集されます。降順でパーセ ンテージ表示されるこれらの待機イベントを見れば、どのイベントがパ フォーマンスに影響を与えているのかが一目でわかり、修正処置を施すこ とができます。 以下の図表は、「pgbench」実行時におけるシステム負荷の例を示してい ます。この例の結果では、データベースによって実行されているタスクの 大部分が WAL(ログ先行書込み)を待っていることがわかります。この ように単純な例では、「pgbench」はトランザクションが非常に多いテス トであるため自明の結果を示しているに過ぎませんが、本番ビジネスアプ リケーション特有のもっと複雑なシナリオにおいては、ボトルネックを突 き止めるにはこの程度の詳細情報が必要不可欠です。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 20 図 11:DRITA システムの待機ビュー DRITA は、過去のパフォーマンス障害を検証する目的にも利用できます。 待機イベントの統計データ履歴は保持されるため、管理者はパフォーマン ス低下の期間が過ぎた後でも問題をレポートして解析することができます (エンタープライズのデータベース管理者によくある状況です)。 例えば、ユーザーは業務終了時の進捗会議で 1:00 から 1:30 の間にアプリ ケーション速度が低下したことを報告します。データベース管理者は、 DRITA の広範囲なビューや機能を使ってこの問題を追跡することができ ます。以下のトラブルシューティング手順は、DRITA を使ってどのよう にパフォーマンス障害の原因を突き止めるのかを示しています。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 21 ス テ ッ プ 1 : 過 去 の パ フ ォ ー マ ン ス 対 策 に 関 す る情 報 の 全 て を 含 む edb$snap テーブルを調査します。データベース管理者は、調査対象期間 における snap_id 値の範囲を返すクエリーを作成します。このクエリーを 使用して、どのデータベースセッションが問題を引き起こしているのかを 調べます。この例では、セッション 3256 が原因と見られます。 図 12:edb$snap からの DRITA 出力 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 22 ステップ 2:ユーザーアクティビティの詳細を調査します。問題を引き起 こしていると見られるセッション ID を把握できたデータベース管理者は、 次に詳細情報にドリルダウンし、問題を見つけて修正措置を行います。 図 13:sessid_rpt からの DRITA 出力 アップデートサービス EnterpriseDB アップデートサービスは、DBA 管理サーバーの機能です。 このブラウザベースのコンソールは、以下のようにデータベース管理者に とって重要な機能を数多く提供します。 • • • • • Postgres の未適用アップデートおよびパッチ、インストール済み の関連製品について知らせる設定変更可能な自動通知機能 インストール済みの関連製品およびバージョンを示す総合リスト機 能 アップデートログの表示機能 データベースアップデートおよびパッチの手動チェック機能 Web ベースのコンソールを使った容易なデータベースパッチ適用 機能 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 23 図 14:DBA 管理サーバーアップデートサービス 監査ログ機能 Postgres Plus Advanced Server には監査レポートを生成する機能があり ます。データベース監査機能によって、データベース管理者、セキュリ ティ管理者、監査人、およびオペレータは、データベースアクティビティ を追跡、分析することができ、政府による複雑な監査要件への対応が支援 されます。 このように監査されるアクティビティには、データベースアクセスや使用 状況に加えて、データ作成、変更、削除などがあります。監査システムは、 構成ファイルに定義される構成パラメータに基づいています。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 24 図 15:DBA 管理サーバー監査レポート DBA による監査システムの使用、チューニング、および管理を支援する 以下のような監査機能も利用可能です。 • • • • 2 つの形式でのレポート出力:xml または csv 監査ファイルは以下をもとに定期的に交替させることができます。 o 曜日 o 監査ファイルの指定最大サイズ o 指定時間間隔 データベースとの実際のおよび試行された接続と切断を監査できま す。 特定タイプの SQL ステートメント(エラーになったもの、全ての DDL、全ての DML など)。 データベース移行 より堅牢な OLTP サポートを実現するために MySQL データベースから PostgreSQL へ移行が可能なように、Postgres Plus Advanced Server で も Sybase、Microsoft SQL Server、および Oracle データベースから移行 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 25 することが可能です。今日の多くの組織は、データセンター内の非クリ ティカルあるいは隣接アプリケーションに対してライセンス料を払い過ぎ ていると感じています。そして、これらのアプリケーションを別のデータ ベースシステムに再度書き込み、移植するには大きなコストがかかるため、 ユーザーは良い代替案を思いつかず途方に暮れがちです。 EnterpriseDB は、Postgres Plus Advanced Server に組み込む機能拡張に おいてデータベース互換性に焦点を当てています。現在、Postgres Plus Advanced Server の Migration Studio は以下の表に従ってオブジェクトを 移行することができます。 オブジェクト スキーマ データ 制約 シーケンス シノニム インデックス パッケージ ストアードプロシージャー トリガー 関数 ビュー ユーザー、ロール データベースリンク リストパーティション化テーブル レンジパーティション化テーブル Sybase 9 9 Microsoft 9 9 9 9 9 Oracle 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 テーブル 2:データベース移行 ユーザビリティ 商用ソフトウェアの典型的な特徴の 1 つが有用性です。製品やエンター プライズさえも、ソフトウェア取得、インストール、構成、使用、メンテ ナンス、他の補完製品との統合といった幅広い業務で使いやすさを求める ようになっています。 多くのオープンソースソフトウェア製品で一貫して指摘されている点は、 前述の業務範囲においていかに使用や管理が困難であるかということです。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 26 有用性は、関連する補完的オープンソースプロジェクトが普及する上でと りわけ問題となります。 初めてオープンソース製品を検討する人、あるいは厳しい納期に縛られる オープンソースの専門家にとっても、正しいプロジェクトを見つけ、ソー スをダウンロード、コンパイル、構成、他コンポーネントとの統合、結果 全体のテストを実行することは、膨大な時間がかかる上、エラーも発生し がちです。 EnterpriseDB は、Postgres Plus Advanced Server をもっとも使いやすい Postgres ベースのデータベースにするためにあらゆる手を尽くしていま す。多くのグローバルエンタープライズからなる顧客ベースを活用して、 EnterpriseDB は今日のデータベース専門家や組織が期待するこれらの データベースの追加機能をカタログ化して統合し、単一の統合された使い やすい製品として利用できるようにしました。 エンタープライズクラスパッケージ Postgres Plus Advanced Server は、標準 PostgreSQL ソースベースのエ ンタープライズクラスの機能をもとに構築されており、その基盤上に、機 能拡張、セキュリティ、プロシージャー言語 (Postgres は 10 を超える プログラム言語に対応)、追加モジュールという 4 つのカテゴリに分類 される複数のオープンソースモジュールが追加されています。 以下の表は、Postgres Plus Advanced Server を構成する全てのコンポー ネントプロジェクトをまとめたものです。 カテゴリ 拡張機能 機能 内容 Slony Slony はトリガーベースの非同期マスターで、シン グルマスターマルチスレーブのレプリケーションシ ステム。 pgAdmin III pgAdmin III は、Postgres 向けのグラフィカルな管理 /開発プラットフォームです。 PostGIS PostGIS は Postgres の拡張機能で、堅牢で地理空間 データベース機能を実現します。 SSL Postgres Plus は、セキュリティ強化のための SSL 接続によるクライアント/サーバー通信の暗号化をネ イティブサポートします。 Kerberos Postgres Plus は、認証方法として Kerberos バー ジョン 5 をサポートします。 セキュリティ © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 27 PL/pgSQL PL/pgSQL はロード可能なプロシージャー言語で、 SQL 言語に制御構造を追加します。 PL/Perl PL/Perl はロード可能なプロシージャー言語で、これ を使ってユーザーは Postgres Plus 関数を Perl プロ グラミング言語で記述することができます。 PL/TCL PL/TCL はロード可能なプロシージャー言語で、これ を使ってユーザーは Postgres Plus 関数を TCL プロ グラミング言語で記述することができます。 PL/Java PL/Java はロード可能なプロシージャー言語で、こ れを使ってユーザーは Postgres Plus 関数を Java プ ログラミング言語で記述することができます。 プロシージャー 言語 追加モジュール citext citex は 大文字と小文字を区別しない文字列型を提供 します。 oid2name oid2name はユーティリティプログラムで、これを 使って管理者は Postgres Plus のファイル構造を調べ ることができます。 pgbench pgbench は、Postgres Plus 上でベンチマークテスト を実行するためのプログラムです。 adminpack adminpack は、管理ツールによって使用されるサ ポート機能を提供し、リモート管理などの追加機能 を実現します。 chkpass chkpass は暗号化されたパスワードを保存するため のデータ型を実装します。 cube cube は、多次元キューブを表すデータ型を実装しま す。 dbリンク db リンクは、データベースセッション内から他の Postgres データベースへの接続を可能にするモ ジュールです。 earthdistance earthdistance モジュールは、地表面上の大圏距離を 計算する 2 つの異なる方式を提供します。 fuzzystrmatch fuzzystrmatch モジュールは、文字列間の類似度や相 違度を調べる複数の関数を提供します。 hstore hstore は、(キー、値)の組み合わせの集合を単一の PostgreSQL データフィールドに格納するための データ型を実装します。 intagg intagg は、整数型の集約子と列挙子を提供します。 isn isn は、国際的な標準製品番号のためのデータ型を実 装します。 lo lo は、ラージオブジェクト管理をサポートします。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 28 ltree ltree は、階層ツリー構造に格納されたデータのラベ ルを表現するデータ型を実装します。 pg_buffercache pg_buffercache は、共有バッファキャッシュをリア ルタイムで検査することを可能にします。 pg_freespacem pg_freespacemap は、空き領域マップの検査を可能 ap にします。 pg_standby pg_standby は、「ウォームスタンバイ」データベー スサーバーの作成を可能にします。 pg_trgm pg_trgm モジュールは、テキストの類似性を調べる 関数および演算子を実装します。 pgcrypto pgcrypto は Postgres 向けの暗号化関数を実装しま す。 pgrowlocks pgrowlocks は、指定したテーブルに関する行ロック 情報を示す関数を提供します。 pgstattuple pgstattuple は、タプルレベルの統計データを取得す るための各種関数を提供します。 seg seg は、ラインセグメントを表すデータ型を実装し ます。 tablefunc tablefunc は、テーブルを返す各種関数を提供しま す。 tsearch2 tsearch2 は、フルテキストインデックス機能を提供 します。 uuid-ossp uuid-ossp は、汎用一意識別子を生成する関数を提供 します。 xml2 xml2 は、XPath クエリーと XSLT 機能を提供しま す。 表 3:Postgres Plus Advanced Server のアドオンモジュール 上記の全ての機能は、シンプルで直感的なインストーラに統合されており、 繰り返し可能な広範囲の品質保証プロセスを通じて認証されています。こ れにより、多数のオープンソースプロジェクトを包含する全要素が、単一 の首尾一貫した汎用エンタープライズクラスのデータベースシステムとし て機能します。最終的には、Postgres Plus Advanced Server とともに提 供される自動アップデート通知システムによって、全てのモジュールが常 に最新かつ同期のとれた状態に維持されます。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 29 PL デバッガ PL デバッガによって開発者やデータベース管理者は、グラフィカルで動 的なインターフェースを使って Postgres Plus のサーバーサイドプログラ ムをテスト、デバッグすることができます。PL デバッガは、SPL スト アードプロシージャー、関数、トリガー、ならびに PL/pgSQL 関数に対 して使用可能です。ユーザーは、コードパスの追跡、ブレークポイントの 設定、変数の編集、コードのステップイン/ステップオーバーなどを行う ことができます。 図 16:PL デバッガ PL デバッガは、Postgres データベースのクロスプラットフォームデータ ベース管理/開発環境である Postgres Studio に組み込まれています。PL デバッガの強みの 1 つが、トリガーなどのサーバーサイドロジックを、 これらを実行する実際のアプリケーションコンテキストでテストできる機 能です。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 30 例えば、社員の昇給に関連するトリガーコードにグローバルブレークポイ ントを設定します。次に開発者は、アプリケーションを起動し、給与に変 更を加え、適切なブレークポイントでトリガーコードを停止させます。こ こから開発者は、トリガーロジックをステップスルーし、データがどのよ うに処理されるかを見ることができます。 このようなサーバーサイドデバッギングは、複数のアプリケーションが データベースコードを共有している場合に非常に有用です。開発者は、そ れぞれの参照アプリケーションコンテキストでトリガーコードをデバッグ することができます。 図 17:アプリケーションコンテキストでのサーバーサイドトリガーデバッギング トランザクションエラーリカバリ PostgreSQL では、たった 1 つのエラーを生成した場合でも、そのアプリ ケーションによってアクティブなトランザクションがエラー状態に置かれ © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 31 ます。その時点で、アプリケーションが実行できる唯一の操作は、そのト ランザクションをロールバックすることです。このようなエラーは、デー タベースがエラー状態として通知するもの全てによって発生します。 よくあるエラーシナリオが、重複したキーの処理違反です。多くのアプリ ケーションにおいて、新しいレコードをテーブルに追加することが機能要 件になっていますが、そのキーがすでに存在している場合、既存のレコー ドを更新する必要があります。PostgreSQL では、挿入または更新トラン ザクションを発行する前にレコードが存在するかをチェックしなければな らないため、この操作では 2 つのステートメントが使用されることにな ります。トランザクションエラーリカバリを使用した場合、アプリケー ションは挿入トランザクションを発行し、次に、重複したキーが検出され た場合にのみ更新トランザクションを発行します。 重複したキーが存在する場合の PostgreSQL の動作は以下のようになりま す。 ResultSet rs = stmt.executeQuery("SELECT COUNT(*)" + "FROM TELLERS WHERE TID=1000"); rs.next(); if(rs.getInt(0)== 0){ stmt.executeUpdate("INSERT INTO TELLERS(TID, BID)" + "VALUES(1000, 1)"); } else { stmt.executeUpdate("UPDATE TELLERS SET BID=1 " + "WHERE TID=1000"); } トランザクションエラーリカバリを作動させた場合の Postgres Plus Advanced Server の動作は以下のようになります。 try{ stmt.executeUpdate("INSERT INTO TELLERS(TID, BID)" + "VALUES(1000, 1)"); } catch(Exception e){ stmt.executeUpdate("UPDATE TELLERS SET BID=1 " + "WHERE TID=1000"); } スケーラビリティ エンタープライズ情報アーキテクチャはこれまでにない速度で増大し、重 大なデータ管理上の問題を引き起こしています。Postgres Plus Advanced © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 32 Server は、既存データベースシステムの統合、複数の独立したデータ ベースシステム間の通信、 急激に増大する Web 2.0 型アプリケーション など、様々なデータベース基盤を拡張するための費用効果の高いソリュー ションを提供します。 GridSQL GridSQL は、組織が安価な汎用ハードウェアを使ってデータベース基盤 を迅速に拡張/管理できるようにするための水平拡張ソリューションです。 GridSQL とは、EnterpriseDB が資金援助するオープンソースプロジェク トで、Postgres Plus Advanced Server に完全に統合されています。これ によって組織は、「非共有型」分散データアーキテクチャを実装するグ リッド技術を用いることで、複雑なデータウェアハウジングおよびビジネ スインテリジェンスの課題に容易に対応できるようになります。 GridSQL のインテリジェントなパーティショニングエンジンにより、設 定変更が可能な方法で全てのノードにデータを分散させ、分散化された基 盤上でクエリー実行を並列処理します。GridSQL はデータベース層の独 立したデータベースノードをクラスタ化し、アプリケーションに対してこ れらを統合された仮想データベースとして提示します。既存のアプリケー ションは変更なく実行され、アプリケーション開発者は、まるで単一サー バー上の単一のデータベースインスタンスにアクセスしているかのような 環境で新しいアプリケーションを作成することができます。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 33 ネットワーク ノード データ メタデータ ノード 1 ノード 2 ノード 3 ノード 4 ノード データ ノード データ ノード データ 図 18:GridSQL アーキテクチャ GridSQL を使用すると、追加の汎用サーバーはグリッド上に追加される ため、データベースパフォーマンスがリニアに向上します。管理を簡素化 するため、GridSQL にはグラフィカルな管理/監視ツールの強固なパッ ケージが含まれており、データベース管理者は単一コンソールからグリッ ド全体を監視することができます。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 34 図 19:GridSQL 管理コンソール Postgres Plus Advanced Server にはグリッド監視ツールが含まれており、 これを使ってデータベース管理者はグリッド全体を監視、チューニングす ることができます。さらに、ノード間およびノード内のトラフィックを視 覚的に表示するため、グリッド全体のバランスを取ることができます。 GridSQL の Postgres Plus Advanced Server バージョンはまた、プロビ ジョニングを容易にするため、ノードを簡単にグリッドに追加、またはグ リッドから削除できます。 Infinite Cache データベースパフォーマンス上の制約の 1 つが、データベースサーバー における共有バッファキャッシュ用に使用できるメモリ容量です。要求さ れたデータは全て、まず共有バッファキャッシュに読み込まれてから利用 できるようになります。いったん共有バッファキャッシュ内に読み込まれ ると、ディスクからデータを読み出す場合よりもデータへのアクセス時間 が短縮されます。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 35 しかし、共有バッファキャッシュが一杯になってしまった場合に、さらな るディスクからのデータ読出し要求が出されると、すでにバッファキャッ シュ内にあるデータの一部が上書きされてしまいます。この上書きされた データが再度要求される可能性もあり、その場合はデータをディスクから 再び読み出す必要があります。このように、限られたメモリを常に奪い合 う状況がパフォーマンスに上限を加えることになります。 従って、使用可能なメモリ容量が無限にあれば、すでにメモリに読み込ま れているデータはディスクから再読み込みする必要がなくなるため、パ フォーマンスはより最適なレベルに向上します。 EnterpriseDB に よ る Postgres Plus Advanced Server 向 け の Infinite Cache は、このコンセプトをもとに構築されています。Linux システム上 で利用できる Infinite Cache によって、Postgres Plus Advanced Server は、 ネットワーク化された汎用コンピュータのメモリを 2 次メモリキャッ シュ(キャッシュサーバー)として活用することができます。 これは、汎用ハードウェアを使った「キャッシュブレード」アーキテク チャであり、データベースサーバーを UNIX などの高価なプラットフォー ムにアップグレードする必要がなくなります。 Postgres Plus Advanced Server トランザクション 共有バッファ Infiniband データベース キャッシュブレード 図 20:Infinite Cache アーキテクチャ Infinite Cache がある場合、あるデータブロックがディスクから初めて読 み込まれると、これは共有バッファキャッシュだけでなくキャッシュサー © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 36 バーにも保存されます。後に同じデータブロックが再度要求された場合、 まず共有バッファキャッシュが検索されます。 そのデータブロックが共有バッファキャッシュから削除されてしまってい た場合、次はディスクではなくキャッシュサーバーが検索されます。2 次 キャッシュは共有バッファキャッシュよりもはるかにサイズが大きいため、 データブロックはキャッシュサーバー上に存在している場合がほとんどで あり、そのデータブロックをそこから取り出すことができ、やはりディス クアクセスよりも検索は早くなります。データがいずれのキャッシュサー バーにも存在しない場合にのみ、データはディスクから読み取られます。 これらは全てアプリケーションに対して透過的に行われるため、Infinite Cache を利用する際にプログラムコードの変更が必要になることはあり ません。 さらに 2 次キャッシュの容量を増やすため、Infinite Cache では、キャッ シュサーバーに置く前に様々なレベルにまでデータを圧縮する機能があり ます。圧縮によって、より多くのデータを 2 次キャッシュに置くことが でき、ネットワーク上でデータを伝送する帯域幅を小さくすることもでき ます。 Infinite Cache はさらに、キャッシュサーバーを「ウォームアップ」する ことができます。つまり、インデックスの有無に関わらず任意のテーブル をアプリケーションの起動前に 2 次キャッシュへ事前ロードすることが できます。これによってデータベースサーバーは、アプリケーションがど のテーブルを使用するのかが事前にわかっていれば、ディスク読込みに対 してより迅速なメモリアクセスを実現することができます。 使用率の統計データを各キャッシュサーバーから取得し、パフォーマンス や効率性を分析することができます。 # edb-icache-tool 192.168.23.85:11211 stats Field Value bytes 1051681421 bytes_read 1410538244 bytes_written 42544414583 cmd_get 5139685 cmd_set 126588 connection_structures 104 curr_connections 4 curr_items 126588 evictions 0 get_hits 5139530 get_misses 155 limit_maxbytes 1073741824 pid 3047 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 37 pointer_size 32 rusage_system 109.077417 rusage_user 21.423743 threads 1 time 1242367107 total_connections 115 total_items 126588 uptime 1095 version 1.2.6 以下のグラフは、Infinite Cache を有効にした Postgres Plus Advanced Server 上で実現された劇的なパフォーマンス向上と、Infinite Cache をオ フにした状態で同じテストを実行した場合を比較したものです。 Infinite Cache ありの Advanced Server (250GB データベース/1 キャッシュノード/全て SELECT) Infinite Cache 未使用 Infinite Cache 使用 (圧縮) トランザクション数/秒 図 21:Infinite Cache 使用と Infinite Cache 未使用の比較 Infinite Cache では、これまで読み込まれたデータをできる限り多く 2 次 キャッシュに保持するため、同じデータに繰り返しアクセスするアプリ ケーションにおいて最大のパフォーマンス向上が得られます。以下のグラ フは、2 つのアプリケーションを比較したもので、1 つはいくつかの UPDATE を含んでおり(上のペアの棒グラフ)、もう 1 つは読み取り専 用アプリケーションです(下のペアの棒グラフ)。下のペアの上側の棒グ © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 38 ラフに見られるように、Infinite Cache は SELECT ステートメント 100% のアプリケーションを実行する場合に最大の効果をもたらします。 レポーティングの Infinite Cache (250GB データベース/2 キャッシュノード/100% SELECT) 25% UPDATE Infinite Cache (圧縮) Infinite Cache 未使用 100% SELECT トランザクション数/秒 図 22:Infinite Cache 使用/未使用の場合の SELECT と UPDATE 最後のグラフは、UPDATE および読取り専用アプリケーションの両方で 得られたパフォーマンス向上について、Infinite Cache ありの Postgres Plus Advanced Server と PostgreSQL を比較したものです。予想通り、 もっとも劇的なパフォーマンス向上は読取り専用アプリケーションで実現 されています。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 39 Advanced Server と PostgreSQL の比較 (200GB データベース/1 キャッシュノード/ 100 クライアント X 100,000 トランザクション) 25% UPDATE 負荷 100% SELECT トランザクション数/秒(単位:1000) 図 23:PostgreSQL と Infinite Cache 使用の Postgres Plus Advanced Server の比較 要約すると、Infinite Cache には以下のような特長があります。 • • • • • 汎用ハードウェアをキャッシュブレードとして使用し、メモリ容量 を増やして拡張コストを抑える。 アプリケーションのプログラム変更は不要。 キャッシュ内で様々なレベルのデータ圧縮を利用できるため、 キャッシュされたデータ用にさらに多くのスペースを確保でき、 ネットワーク帯域幅を小さくできる。 任意のテーブルやインデックスをキャッシュに事前ロードし、 ウォームアップ時間なしで即座にパフォーマンスを向上させる。 パフォーマンスチューニングのためのキャッシュ使用率に関する包 括的な統計データを取得できるツールを提供する。 データベースリンク データベースリンクは、あるデータベースサーバーから別のサーバーへの 通信経路を定義する参照です。データベースリンクの利点は、ユーザーが リモートデータベース内の他のユーザーのオブジェクトにアクセスできる © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 40 ようになり、オブジェクト所有者の権限セットによって境界を設けられる ことです。 データベースリンクはまた、均質 homogenerous な分散データベースシ ステムの基礎をなします。アプリケーションは、単一分散環境における複 数のデータベース内にあるデータへ同時にアクセスできます。例えば、ク ライアントはローカルデータベースに対して 1 つのクエリーを発行し、 リモートデータベースから結合データを取得することができます。クライ アントアプリケーションにとって、データベースのロケーションやプラッ トフォームは透過的になります。 売上 データベース 人事 データベース 在庫 データベース 図 24:データベースリンク © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com PostgreSQL を越える Postgres Plus Advanced Server のメリット 41 結論 PostgreSQL は、世界で最も先進的なオープンソースデータベースであり、 世界中のネットワーク上で1日に何十億ものトランザクションを処理する アプリケーションをサポートすることができます。 EnterpriseDB は積極的に PostgreSQL プロジェクトに参画しており、容 易なインストール、管理、使いやすさ、パフォーマンス、拡張性といった コミュニティ版にはない多くのエンタープライズ向け機能を含む PostgreSQL の拡張版である Postgres Plus Advanced Server を提供して います。 卓越したオープンソースデータベースの価格優位性やパフォーマンスに加 えて、高価なプロプライエタリ製品で利用可能なエンタープライズクラス の機能を求める組織は、Postgres Plus Advanced Server が期待以上のも のだと感じています。 © EnterpriseDB Corporation, 2009 All rights reserved. EnterpriseDB および Postgres Plus は EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。 http://www.enterprisedb.com