Postgres Plus©および JBoss

Postgres Plus©および JBoss®
新しい企業
しい企業アプリケーション
企業アプリケーション
のための新
のための新しい分業
しい分業
EnterpriseDB ホワイトペーパー
DBA、
、アプリケーション開発者
アプリケーション開発者、
開発者、およびエンタープライズアーキテクト
およびエンタープライズアーキテクト向
エンタープライズアーキテクト向け
2008 年 10 月
http://www.enterprisedb.com
Postgres Plus および JBoss: 新しい企業アプリケーションのための新しい分業
2
要旨
伝統的な Web および企業アプリケーションアーキテクチャでは、計算、
表示、およびデータの集約的処理に対応するために JBoss を広範に活用
しています。
Web 2.0 や、その他の Myspace、Facebook、hi5 Networks などの先進ア
プリケーションでは、非常に大量のトランザクションデータを必要すると
同時に、確定しないスケール要件が存在します。
Web 2.0 データ処理プロファイルでアプリケーションのニーズに適切に対
応するために、2 つの補完的なオープンソースインフラストラクチャソ
リューション EnterpriseDB の RDBMS Postgres Plus と Red Hat の
JBoss Application Server について、Web 1.0 における役割の再均衡化と
いう文脈で議論します。
Postgres Plus では、データベース層で高度なメモリキャッシュ、トラン
ザクション処理、およびサービスのパーティション化を提供するように設
定でき、JBoss がアプリケーションの拡大する計算集約的および表示集約
的な処理に対応することが可能になります。
© EnterpriseDB Corporation, 2008 All rights reserved.
EnterpriseDB および Postgres Plus は、EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。
http://www.enterprisedb.com
Postgres Plus および JBoss: 新しい企業アプリケーションのための新しい分業
3
Web 2.0 アプリケーション
MySpace、Facebook、hi5 Networks などのソーシャルネットワーキング
サイトの成功は、2 つの面で良い教訓になります。第 1 にこうしたサイト
は、ブログ、wiki、チャットサーバー、ユーザーフォーラムなどのアプリ
ケーションコンポーネントを使用して大規模な対話型コミュニティを育て
ることができることを証明しています。第 2 に、ソーシャルネットワー
キングサイトの使用パターンおよびボリュームでは、静的なコンテンツお
よびショッピングカート(つまり Web 1.0)の環境には存在しない大きな
計算インフラストラクチャ要件が発生しました。
これらの教訓は、商用 Web 2.0 アプリケーションの設計者および開発者
にとってのみ意味があるように考える方もいるかもしれません。しかし実
際には Web 2.0 アーキテクチャは、良好に動作し、大幅にスケールし、
ビジネススポンサーに重要な知的機能を提供することが必要な企業アプリ
ケーションに対するロードマップを提供しています。
伝統的な Web および企業アプリケーションアーキテクチャでは、計算、
表示、およびデータの集約的処理に対応するために JBoss を広範に活用
しています。ただし、Web 2.0 およびその他の高度なアプリケーションで
は、はるかに大量のトランザクションデータが要求され、そのスケール要
件は未確定です。このホワイトペーパーでは、アプリケーションの計算処
理および UI 処理に追加リソースを提供しながら、データベースのパ
フォーマンスおよび一貫性を向上させるために、JBoss と Postgres Plus
の間で役割の再均衡化を行うことを推奨します。
Postgres Plus、
、JBoss、
、および Hibernate
PostgreSQL、Postgres Plus、および JBoss は、トランザクションアプリ
ケーションの構築で長年にわたりよく使用されてきたオープンソース製品
です。JBoss は市場をリードする JavaEE アプリケーションサーバーであ
り、Postgres ソリューションは世界最先端のオープンソースデータベー
ス管理機能を提供しています。Postgres Plus と JBoss を組み合わせるこ
とで、Web 2.0、SaaS、および一般的なビジネスアプリケーションを含
むさまざまなトランザクションアプリケーションを実装するための強力な
ソリューションが得られます。
JBoss のコアデータ抽象化ソリューションの中心は、JBoss ファミリの一
部であるオープンソース技術 Hibernate です。Hibernate は、オブジェク
ト/関係に対する永続化およびクエリのための強力な高パフォーマンス
サービスです。Hibernate により、関連、継承、ポリモーフィズム、コン
© EnterpriseDB Corporation, 2008 All rights reserved.
EnterpriseDB および Postgres Plus は、EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。
http://www.enterprisedb.com
Postgres Plus および JBoss: 新しい企業アプリケーションのための新しい分業
4
ポジション、コレクションを含むオブジェクト指向の技法に従って永続的
なクラスを開発できます。
Hibernate で は ま た 、 ネ イ テ ィ ブ SQL 、 ま た は オ ブ ジ ェ ク ト 指 向 の
Criteria および Example API に加えて、独自の可搬 SQL 拡張(HQL)で
クエリを表現できます。Hibernate には、Postgres 向けに JBoss で認定さ
れたダイアレクトが含まれます。Postgres ダイアレクトでは、Hibernate
で PostgreSQL および Postgres Plus データベースの構文、セマンティッ
ク、および最適化機能を利用できます。図 1 は、JBoss および Postgres
Plus の高水準の関係を示しています。
マッピング
プロパティ
マッピング
データベース
ダイアレクト
図 1 - 高水準の Postgres Plus および JBoss のアーキテクチャ
Hibernate for Postgres Plus により開発者は、永続的なロジックを作成し、
そのマッピング構成ファイルを通じて Postgres Plus データベースの列/型
に Java クラスを割り当てることができます。さらに Hibernate は、Java
開発者の時間を大幅に節約できるクエリおよびデータ操作の豊富な機能
セットを持ちます。最後に、Hibernate は Postgres Plus への接続のため
に JDBC を使用します。Hibernate の目標は、開発者がデータ関連コード
に費やす時間を 95%削減することです。
Web 1.0 環境での
環境での Postgres Plus および JBoss
Amazon.com や Dell.com などのオンラインストアは、Web 1.0 アプリ
ケーションパラダイムの良い例です。これらのサイトでは、大量表示され
© EnterpriseDB Corporation, 2008 All rights reserved.
EnterpriseDB および Postgres Plus は、EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。
http://www.enterprisedb.com
Postgres Plus および JBoss: 新しい企業アプリケーションのための新しい分業
5
る広範な製品カタログを提供していますが、カタログコンテンツは非常に
静的です。一部の Web 1.0 アプリケーションでは大量の閲覧者に対応し
ますが、動的なサイトデータはカスタム個人プロフィール、ショッピング
カート、セルフサービスなどの機能に限定されます。
JBoss は、Web 1.0 アプリケーションアーキテクチャの動力源としてよく
使用されています。データベースの競合を軽減するために、頻繁にアクセ
スされるコンテンツは JBoss のメモリキャッシュに保存し、要求があり
次第サイト閲覧者に配布します。データは比較的静的であるために、イン
フラストラクチャ上でキャッシュとコンテンツの変更を同期することはそ
れほど困難ではありません。
アプリケーションがデータベーストランザクション(挿入、更新、または
削除)を適用すると、JBoss はそのキャッシュを新しいコンテンツに同期
させた後、インフラストラクチャ内の他のサーバーに変更を伝播します。
このキャッシュの一貫性を維持するアプローチは、大量のクエリと低いト
ランザクションプロファイルを持つアプリケーションに対して十分にス
ケールします。
データスケールに
データスケールに課題が
課題が生じる Web 2.0 アプリケーション
ソーシャルネットワーキングは、Web 2.0 アプリケーションの中核となる
テーマです。Wiki、ブログ、チャットサーバー、およびコミュニティ
フォーラムは、高水準のユーザー駆動型対話機能を提供するソーシャル
ネットワーキングアプリケーションコンポーネントの例です。このような
対話型コンポーネントは、アプリケーションインフラストラクチャに新し
い需要を課します。
さらに、ソーシャルネットワーキングサイトは、困難なスケーリングのジ
レンマに直面しており、成長の規模と時期を予測することが難しくても、
その爆発的な成長に対応することが必要です。たとえば、Myspace.com
および Hi5 Networks.com は現在、それぞれ 3 億以上および 7500 万以上
の登録ユーザーを持ち、コミュニティの進化とともに非常に大きなスケー
リングの課題に直面しています。
多くの Web 2.0 アプリケーションではその性質から非常にトランザク
ション的であり、コミュニティメンバーはサイトデータを頻繁に追加、更
新します。このようなユーザーは、非常に高い期待を持ちます。遅延また
は不整合は人目を引きやすく、ユーザーはアプリケーションの使用を中止
する場合があります。
© EnterpriseDB Corporation, 2008 All rights reserved.
EnterpriseDB および Postgres Plus は、EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。
http://www.enterprisedb.com
Postgres Plus および JBoss: 新しい企業アプリケーションのための新しい分業
6
Postgres および JBoss はともに、高い信頼性と大量で複雑なトランザク
ションを処理する能力について多くの実績を持ちます。Hi5 Networks な
どのサイトは、高水準の対話機能と ACID トランザクションの完全性を組
み合わせることにより、多くのユーザーの注意を集め、それを維持するこ
とを意図しています。
こうした Web 2.0 サイトの目標は、ユーザーに対して頻繁にアクセスし、
長期間にわたり接続を維持し、他のコミュニティメンバーと継続的に対話
するように促す体験を提供することです。したがって Web 2.0 アプリ
ケーションでは、次の必要性を含めて、第 1 世代のアプリケーションに
は存在しなかった重要なインフラストラクチャ面の課題が生じます。
•
•
•
大量の動的でユーザー駆動型のデータを処理します
不確定な需要に直面しながら、基になるインフラストラクチャを
(中断なく)スケーリングします
使用量の増大とともに耐久性の高いユーザー接続およびセッション
を維持します
前述したように Web 1.0 アーキテクチャでは、アプリケーションサー
バー(JBoss)キャッシュ内で静的および半静的なデータを維持すること
により、主に JBoss インスタンス自身により管理されるキャッシュの一
貫性をもって、データベースの競合を回避します。Web 2.0 アプリケー
ションでは、非常に大量の動的データ(ブログ投稿、wiki エントリ、
チャットアーカイブ)を処理し、これはアプリケーションサーバー層で
まったく対応できない可能性があります。アプリケーションの使用量の増
大に伴って、環境に単純に JBoss サーバーを追加しても効果的なスケー
リングソリューションは得られません。
拡大するサーバーファームで一貫性のあるキャッシュデータを維持するた
めのオーバーヘッドにより、遅延が増加し、アプリケーションの他の領域
(リッチユーザーインターフェイスの管理など)に必要な JBoss サー
バーサイクルを不足させることになります。こうした新しいアーキテク
チャの課題に対するソリューションは、JBoss インフラストラクチャを補
足および拡張する高パフォーマンスで非常に拡張性のある Postgres Plus
データベース層です。
Postgres Plus によるデータベース
によるデータベースの
データベースのスケーリング
Web 2.0 アプリケーションの負荷の拡大に伴って、インフラストラクチャ
が適切にスケーリングされるまで応答時間が徐々に低下し始めます。こう
したアプリケーションのデータ集約的な性質は、データベース層で大きな
スケーリング面の利点を実現できることを正しく示唆しています。した
© EnterpriseDB Corporation, 2008 All rights reserved.
EnterpriseDB および Postgres Plus は、EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。
http://www.enterprisedb.com
Postgres Plus および JBoss: 新しい企業アプリケーションのための新しい分業
7
がってデータベース層は、垂直方向、または水平方向にスケーリングする
必要があります。
垂直方向のスケーリングでは、データベースサーバーで使用可能なコン
ピューティング能力(CPU、メモリ、およびディスクリソース)を高め
ます。水平方向のスケーリングでは、汎用製品のハードウェアおよびソフ
トウェアを使用して、複数のインスタンスにわたりデータベースをパー
ティション化、レプリケートします。これは多くの場合、Web 2.0 インフ
ラストラクチャを構築するための最もコスト効率のよい手段ですが、デー
タベースで複雑な分散コンピューティング処理を効率的に実行することが
要求されます。
Postgres Plus は、データベース層の垂直方向および水平方向のスケーリ
ングで重要な次の機能を提供しています。
分散メモリキャッシュ
分散メモリキャッシュ
多くのデータ集約的なアプリケーションは、頻繁にアクセスされるデータ
をアプリケーションサーバー層でキャッシュします。ただし前述したよう
に、Web 2.0 データは多くの場合その性質は動的です。したがって Web
2.0 アプリケーションは、一貫性があり同期されたキャッシュデータの維
持という煩雑な処理を JBoss に課すことになります。アプリケーション
の使用が拡大するとともに、ますます分散する JBoss キャッシュを管理
するためのオーバーヘッドにより遅延が増大し、アプリケーションの計算
集約的および表示集約的な処理に対応する JBoss の能力が制限される可
能性が高まります。最適な分業は、JBoss サーバーが計算集約的および表
示集約的な処理に対応し、Postgres Plus が分散したキャッシュ処理に対
応することです。
Postgres Plus は、主要データベースにオーバーヘッドを付加しないで、
アプリケーションサーバー層から煩雑なキャッシュ管理処理の負担を軽減
する専用のキャッシュサーバーを提供します(図 2 を参照)。重要なの
は、データが外部アプリケーションにより変更されてもキャッシュが古い
データを返さないように、データベースからキャッシュの失効をトリガす
ることです。Postgres Plus は、リソース集約的なキャッシュ管理処理を
キャッシュデータサーバーに対して分離することにより、JBoss でアプリ
ケーションの拡大する計算および UI の需要に対応することを可能にしま
す。
© EnterpriseDB Corporation, 2008 All rights reserved.
EnterpriseDB および Postgres Plus は、EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。
http://www.enterprisedb.com
Postgres Plus および JBoss: 新しい企業アプリケーションのための新しい分業
8
負荷分散装置
アプリケーションサーバー層
データベース
キャッシュの失効
分散メモリキャッシュ
図 2 – Postgres は JBoss クラスタ内でメモリキャッシュを分散する
トランザクション処理
トランザクション処理
分散メモリキャッシュなどの高度な機能は、OLTP 処理に対してデータ
ベースを最適化しながら、リソース集約的なクエリ処理の負担を専用の
キャッシュサーバーに移しますが、データベース自体もまたトランザク
ションのワークロードを処理するための直接的な能力を持つことが必要で
す。Postgres データベースはそのトランザクション処理に定評があり、
今日の多くの処理を行っている JBoss アプリケーションのバックエンド
の中心として問題なく動作しています。
Postgres Plus には、複数バージョンの同時制御機能(MVCC)および
テーブルレベルのパーティション機能が含まれており、トランザクション
システムのパフォーマンスをさらに拡張します。MVCC は、書込み(挿
入/更新/削除)処理を妨げずに、読取り処理でクエリコンテキストを取得
することを許可する「楽観的な」並列処理戦略です。MVCC は、データ
の競合を大幅に削減し、それによってロック操作を最小化することでトラ
ンザクションアプリケーションのパフォーマンスを向上します。
テーブルレベルのパーティション化により、複数のデータベースインスタ
ンスにわたりデータを水平方向に分割、分散し、頻繁に必要とされるデー
タに対するアクセスを最適化しながら、すべての情報への高速で一貫性の
あるアクセスを維持します。MVCC およびテーブルパーティション化は、
© EnterpriseDB Corporation, 2008 All rights reserved.
EnterpriseDB および Postgres Plus は、EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。
http://www.enterprisedb.com
Postgres Plus および JBoss: 新しい企業アプリケーションのための新しい分業
9
Hibernate、JBoss、およびより高水準のアプリケーションには隠されま
す。
高度な
高度なデータベースレベルの
データベースレベルのパーティション化
パーティション化
Web 2.0 アプリケーションのコミュニティの拡大とともに、メインアプリ
ケーションデータベースを複数の物理サーバーにパーティション化するこ
とにより、さらなるスケーリングを実現できます。多くの Web 2.0 ス
ケール超過で、「sharding」と呼ばれる水平方向のパーティション化戦略
が役立ちます。
Hibernate Shards では、全データセットのサブセットを含むインスタン
スにデータベースを分割できます。データセットの小さな部分を多くの物
理サーバーにパーティション化することにより、拡大するアプリケーショ
ンに対応するトランザクションの帯域幅が複数のサーバーに分割されます。
ただし、sharding のような分散アーキテクチャでは、複数のパーティ
ションから透過にデータを取得し、結合された結果セットを返すことがで
きる高度なデータベース機能が必要です。Postgres Plus には、フェデ
レーションテーブルを単一のスキーマにリンクすることによりクロスデー
タベースの結合をサポートするデータベース連携機能が含まれます(図 3
を参照)。こうした高度な機能では、cross-shard 結合の困難な問題を解
決 す る こ と に よ り Hibernate Shards を 強 化 し ま す 。 し た が っ て 、
Postgres Plus のパーティション化の使用時に JBoss アプリケーションで
自動的に利点を享受できます。
© EnterpriseDB Corporation, 2008 All rights reserved.
EnterpriseDB および Postgres Plus は、EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。
http://www.enterprisedb.com
Postgres Plus および JBoss: 新しい企業アプリケーションのための新しい分業
10
負荷分散装置
アプリケーションサーバー層
データベース層
>フェデレーション
フェデレーション<
フェデレーション
>フェデレーション
フェデレーション<
フェデレーション
図 3 – JBoss クラスタ内のフェデレーション Postgres Plus データベース
結論
高度な企業アプリケーションは、大規模なユーザーコミュニティの誘致、
維持、および拡大のための刺激的な新しい方法を提供しています。ただし、
以前のアプリケーションアーキテクチャと比較した場合、大量の閲覧者と
その対話処理のトランザクション的な性質から、計算インフラストラク
チャ需要が生じます。さらに、こうしたアプリケーションをサポートする
インフラストラクチャは、極めて不確定な成長に対処して短時間でスケー
リングできる必要があります。
JBoss Application Server と Postgres Plus RDBMS の組み合わせは、トラ
ンザクションアプリケーションのための市場をリードするインフラストラ
クチャスタックです。ただし、Web 2.0 スタイルアプリケーションでは特
別なスケーラビリティ面の課題が発生し、JBoss と Postgres の間で新た
な分業を必要とします。
Postgres Plus では、データベース層で高度なメモリキャッシュ、トラン
ザクション処理、およびサービスのパーティション化を提供するように設
定でき、JBoss がアプリケーションの拡大する計算集約的および表示集約
的な処理に対応することが可能になります。
© EnterpriseDB Corporation, 2008 All rights reserved.
EnterpriseDB および Postgres Plus は、EnterpriseDB Corporation の商標です。その他の名称は、該当する所有者の商標です。
http://www.enterprisedb.com