複数行スキーマへの切り替え

複数行スキーマ構成では、保管できるデータ量に制限はなく、 アプリケーションのデータベース容量によってのみ制約されます。 アプリケーションは、レコード全体ではなく、個々のフィールドを読み取ることができるので、不要な Java™ オブジェクト・シリアライゼーションを回避することでパフォーマンスを向上させる上で役立ちます。 セッション管理機能を構成して、セッション・オブジェクトの各属性をデータベースのそれぞれの専用の行に保管するには、複数行スキーマ構成を使用します。

このタスクについて

残された唯一の実質的な制限は、セッション属性オブジェクトのサイズです。 複数行スキーマは、潜在的に、特定の使用法シナリオでパフォーマンスが向上します。 例えば、大量のデータがセッションに保管されているにもかかわらず、 指定のサーブレットの HTTP 要求の処理中には特定の少量のデータにしかアクセスがない というようなシナリオの場合です。 このようなシナリオでは、不要な Java オブジェクト・シリアライゼーションを回避することは、パフォーマンスの向上に有効です。

複数行スキーマを使用すると、 より大きなセッション・レコードを取得でき、さらにパフォーマンスも向上させることができます。 ただし、次の表にあるように、 単一行スキーマから複数行スキーマに切り替えるには、 少し手間がかかります。

デフォルトでは、単一セッションは、 セッションの保持に使用されるデータベース表内の単一行にマップされます。 こうしたセットアップにすると、WebSphere® Application Server がアクセス可能な、ユーザー定義かつアプリケーション固有のデータの量に厳しい制限が課せられます。

ご使用のアプリケーションのニーズに適したオプションを調べると共に、 あるデータベースに対しては単一行の直接使用を、また、 別のデータベースに対しては複数行の使用を設定することを検討してください。 使用するデータ・ソースを切り替えて、コード内でこれを実行してください。 続いて、パフォーマンスをモニターします。

表 1. 単一行または複数行のスキーマ構成を選択します。. 単一行スキーマ構成または複数行スキーマ構成
プログラミングの問題 アプリケーション・シナリオ
単一行を使用する理由
  • 一度のレコードの読み取りおよび書き込みだけで、 すべての値を読み取ったり、書き込んだりすることができます。
  • 各セッションがレコード 1 つ分の長さしかないことが保証されているため、 これがデータベース内で占めるスペースはより少なくなります。
単一行を使用しない理由 セッション当たり 2 メガバイトの保管データの制限があるためです。
複数行を使用する理由
  • アプリケーションはデータを無制限に保管できます。 つまり、ユーザーに課されるのは、データベースのサイズと、レコード当たり 2 メガバイトの制限だけです。
  • アプリケーションは、レコード全体の代わりに個々のフィールドを読み取ることができます。 セッション内に大量のデータが保管されているにもかかわらず、 サーブレットの HTTP 要求の処理中に、特に少量のデータだけにしかアクセスしない場合、 複数行セッションでは、不要な Java オブジェクト・シリアライゼーションを回避することによって、パフォーマンスを向上させることができます。
複数行を使用しない理由 データのサイズが小さい場合、全データを 1 行に保管できれば、 複数行読み取りによる余分なオーバーヘッドがなくなります。

複数行使用の場合、アプリケーション・データ・オブジェクト が相互参照を持たないよう、また、循環参照が発生しないように設計してください。 例えば、HttpSession.put(..) メソッドを使用するセッションに A と B という 2 つのオブジェクトを保管しており、A に B への参照が含まれているとします。 複数行の場合、オブジェクトはデータベースの複数の行に保管されているため、後にオブジェクト A および B を取り出したときに、A と B の間のオブジェクト・グラフが、保管されているものと違ってきます。 A と B は、独立したオブジェクトとして振る舞います。

手順

  1. セッション管理機能のプロパティーを変更して、 単一行スキーマから複数行スキーマに切り替えます。
  2. 手動で表を除去します。

    [AIX Solaris HP-UX Linux Windows][IBM i]表を除去するには、次のようにします。

    1. セッション管理が使用しているデータ・ソース構成を判別します。
    2. データ・ソース構成で、データベース名を検索します。
    3. データベース機能を使用して、該当のデータベースに接続します。
    4. SESSIONS 表を除去します。
  3. [z/OS]データベース表を再作成するか、 この製品が HttpSession オブジェクトを保持するために使用しているデータベース表内のすべての行を削除します。

    DB2® データベース表の除去方法の説明については、「DB2 Universal Database Server (OS/390® および z/OS® 版) 管理ガイド V7」を参照してください。

    セッション・パーシスタンス用の DB2 表の作成では、新規の DB2 データベース表の作成方法について説明しています。


トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tprs_swsk
ファイル名:tprs_swsk.html