EJBはトランザクションのやり方次第で速くなるのに…WebSphereサーバ・チューニング入門(6)(4/4 ページ)

» 2008年04月04日 00時00分 公開
[上野憲一郎日本アイ・ビー・エム]
前のページへ 1|2|3|4       

【7】Read-read整合性チェック(キャッシュ・データの検証)

 「Repeatable Read(RR)」のアクセス・インテントは、データの整合性をチェックし、整合性を確認し、チェック後は誰もデータを更新しないことを意味します。それに対し、「Read Committed(RC)」のアクセス・インテントは、データの整合性をチェックした際に整合性があることを意味しますが、チェックした後にデータが変更されないことを保障するものではありません。

 「データの更新がほとんどない場合(例えば、本の価格など)、DBから読み込んだデータをキャッシュに保存しておき、コミット処理を確定する直前にDB上の値とキャッシュの値の整合性をチェックする」という仕組みを、WASでは「Read-read整合性チェック」という機能で提供しています。

 先ほど説明した「Lifetime in Cache」を設定したBeanが保持するデータをほかのトランザクションが読み込むというシナリオにおいて有効です。例えば、CMPアプリケーションが、BMP(Bean-Managed Persistence)やJDBCを使ったアプリケーションと同じデータを共有するといったケースです。

「Read-read整合性チェック」の設定の仕方

 「Read-read整合性チェック」では、以下の3つのオプションを提供しています。

  1. Read-read整合性チェックを実施しない(NONE)
  2. トランザクション開始時にRead-read整合性チェックを実施する(AT_TRAN_BEGIN)
    「ejbLoad()」メソッド実施時にデータをキャッシュから読み込んだ場合、Beanのデータが最後にロードされた時点から変更されていないかどうかDBをチェックすることにより確認する
  3. トランザクション終了時にRead-read整合性チェックを実施する(AT_TRAN_END)
    トランザクションの最後に、Beanが変更されておらず、かつ、現在のトランザクションでロードし直していない場合に、最後にロードされた時点から変更されていないかどうかDBをチェックすることにより確認する。もし、データが変更されていた場合には、トランザクションは失敗する

 AST(あるいは、RAD)を使用し、[WebSphere拡張機能]のアクセス・インテントに対する[パーシスタンス・オプション]に[読み取り専用データの検証]を設定します(図17)。

図17 Read-read整合性チェックの設定 図17 Read-read整合性チェックの設定

「Read-read整合性チェック」の3つのオプションをシナリオで読み解く

 以下に、各オプションについて図解します。まず、読み取り専用データの検証に「NONE」を指定したシナリオです(図18)。

図18 Read-read整合性チェックなし 図18 Read-read整合性チェックなし

  次に、読み取り専用データの検証に「AT_TRAN_END」を指定したシナリオです。

図19 トランザクション開始時にRead-read整合性チェックを実施 図19 トランザクション開始時にRead-read整合性チェックを実施

 3つ目は、読み取り専用データの検証に「AT_TRAN_BEGIN」を指定したシナリオです。

図20 トランザクション終了時にRead-read整合性チェックを実施 図20 トランザクション終了時にRead-read整合性チェックを実施

 このように、「読み取り専用データの検証」機能を使用することにより、データの整合性を保ちながら、高速なDBアクセスを実現可能になります。

【8】Lightweight Entity Bean(単純なローカル・モード)

 WASは、「Lightweight Local Mode」(単純なローカル・モード)と呼ばれるEntity Beanの性能向上の仕組みを提供しています。「Lightweight Local Mode」は、「セッション・ファサード・パターン」というデザイン・パターンによって、利用されるEntity Bean向けにデザインされています。

 「セッション・ファサード・パターン」において、Entity Bean Local HomeおよびLocal Businessメソッドは、Stateless Session Bean、あるいはStateful Session Beanのメソッド内から呼ばれます。

 そして、そのリモートあるいはローカルから呼ばれるSession Beanのメソッドが、Session BeanによってアクセスされるEntity Beanのためのセキュリティ管理やトランザクション境界を提供します。

「Lightweight Local Mode」を使用する条件

 以下の条件に適する場合に、「Lightweight Local Mode」を使用できます。

  • EJB Local Interfaceを実装している
  • Entity Bean Local HomeあるいはLocal Business Interfaceのメソッドに対して、セキュリティ権限が設定されていない
  • Entity Bean Local HomeあるいはLocal Business Interfaceのメソッドに対して、「run-as」セキュリティ属性が設定されていない
  • 呼び出すSession Beanと呼び出されるEntity Beanが同じクラス・ローダーによってロードされる
  • Entity BeanがWAS固有のInternationalization ServiceあるいはWork Area Serviceを呼び出さない

 なお、「Lightweight Local Mode」は、CMP BeanとBMP Beanの両Entity Beanタイプにも使用できます。

 また、「Lightweight Local Mode」のパフォーマンス性能を最大限に利用するためには、Entity Beanメソッドがグローバル・トランザクションを開始しないことが条件になります。これには、以下の2つを満たす必要があります。

  • Entity Bean HomeあるいはBusinessメソッドが呼ばれた際に、グローバル・トランザクションがすでに開始している。一般には、Entity Beanを呼び出すSession Beanによってトランザクションは開始される
  • Entity BeanのLocal Business InterfaceのメソッドおよびLocal Home Interfaceのメソッドが、トランザクション属性の中の「REQUIRED」「SUPPORTS」「MANDATORY」のみを使用している

 もし、Entity Bean メソッドがグローバル・トランザクションを開始する必要がある場合は、パフォーマンス向上の効果が減少します。

「Lightweight Local Mode」の設定の仕方

 AST(あるいは、RAD)を使用して、「Lightweight Local Mode」の設定を行います。図21のように、「AssemblyEnt」を選択し、[WebSphere拡張機能]の中の[単純なローカル・モードの使用]をチェックします。

図21 Lightweight Local Modeの設定 図21 「Lightweight Local Mode」の設定

オンライン・マニュアルも参照しよう!

 このように、前回と今回の前後編でEJBに関するチューニングを解説しましたが、いかがでしたでしょうか。特に、今回の内容は、過去の連載では取り上げたことのない「AST(あるいはRAD)」と呼ばれるツールを使用して設定を行いました。

 本連載では、簡単な説明にとどめましたが、今回取り上げた項目についての詳細は、「InfoCenter」と呼ばれるオンライン・マニュアルに記載があります。設定を行う際には参照してみると有効でしょう。

@IT関連記事

JBOSSでかんたんEJB
無償で使えるEJBサーバ「JBOSS」とEclipseを使って、簡単なEJBプログラミングを体験し、EJBを理解します。この連載で苦手意識を払拭!

AntとXDocletでEJB開発を効率化
[連載]現場に生かすJakarta Project(3) ファイルが多いために煩雑になりやすいEJB開発。AntとXDocletを使うと非常に効率よく開発ができ、その問題が解決できます
Java Solution」フォーラム 2003/2/19

さよならJDBC?EJBの出番はこれから?
[特別企画] EJBはEJB2.0の登場でEJB1.1時代のパフォーマンスの問題を解決したといわれる。EJB2.0は、EJBに実用期をもたらしたのか? EJB2.0のメリットを解説
Java Solution」フォーラム 2002/12/25

J2EEの基礎
この講座では、これからサーバ・サイドJavaを学ぶ人のために、J2EEをWebとDBをつなぐミドルウェアという観点で捉えて説明していきます

樋口研究室 スマートなサーバ・サイドJava
Javaとノーツの研究記事で人気の樋口研究室が@ITにも参上。ベストなeビジネス・アプリケーションを実現するためのノウハウを、あなたの仕事にも生かしてみよう!

EJBの作成とデバッグ
[連載]初めてのWebアプリケーション・サーバ(最終回)
最終回は、いよいよEJBツールを使ってEJBを作成したあと、デバックまで行います
Java Solution」フォーラム 2001/9/7

Webアプリケーションにおけるサーバ・サイドJavaの効果的な利用
EJB(Enterprise JavaBeans)はアプリケーション・サーバ上でのシステム構築に必要不可欠になりつつある。EJBの役割とアーキテクチャをわかりやすく解説する

プロフィール

日本アイ・ビー・エム 東京基礎研究所 アドバイザリー・リサーチャー

上野 憲一郎(うえの けんいちろう)
kenueno@jp.ibm.com

日本アイ・ビー・エムに入社後、システム・エンジニアとして10年ほど活動した後、米国IBMへ赴任。米国IBM Raleighソフトウェア開発研究所にて、WebSphere Application Server開発部門のパフォーマンス専門グループのメンバーとして活動。2003年に帰国後、IBM東京基礎研究所にて、XML、Web サービス、SOA関連技術の研究開発に従事。WebSphere Application Serverパフォーマンス専門家として、セミナーなどで講演も実施。

主な著書
WebSphere V3.5 Handbook」(Prentice Hall)

主な訳書
Webサービスプラットフォームアーキテクチャ」(エスアイビーアクセス)



前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。