本文へジャンプ

データベース/データ管理  >  DB2 Developer Domain  >  ライブラリー  >  技術白書-DB2ファミリー関連  >  
   
 

OnDemand:
優れたパフォーマンスと高いユーザー満足度をめざすソリューションの設計



Eric Hann、Benjamin Boltz共著
コンテンツ・マネージャー、OnDemand Support
IBM Corporation
2002年5月

 
 
コンテンツ
はじめに
OnDemandとは?
ステップ1:データの検索方法を判断する
ステップ2:データ検索の効率をアップする
ステップ3:優れたパフォーマンスと使いやすさを目指したフォルダーの設計
関連情報
執筆者について
 執筆者
Eric Hann、
Benjamin Boltz共著
コンテンツ・マネージャー、OnDemand Support
IBM Corporation
 

はじめに
皆さんの会社がIBM Content Manager OnDemand(OnDemand)ソリューションの購入を決定し、皆さん自身がその担当者になったとしましょう。そして、皆さんはOnDemand Universityに登録してワークショップに出席し、OnDemand Web Support Webサイトで長い時間をかけて学習したとします。

「もう、ユーザー・フレンドリーでパフォーマンスに優れたOnDemandソリューションを設計できるようになったかね?」という上司の問いに対して、皆さんはどのように答えることができるでしょうか。

この記事は、こうした問いに対して皆さんが前向きに、しかも自信を持って答えられるよう、お手伝いするものです。ここでは、OnDemandソリューションを正しく設計するためのすべての方法を述べることはできませんが、ソリューションの作成におけるポイントをいくつか挙げることにしましょう。

OnDemandに初めて接する人のほとんどは、OnDemandによって、文書の保管、および、PCやWebブラウザーによるそれらの文書の検索ができるようになるということは理解しています。また、そのような人たちの多くは、個々のコンポーネントの基本機能について理解し、また、文書を保管するアプリケーションを作成することができます。しかし、OnDemandにあまり慣れていない人々も多く、OnDemandをしばらく使用していても、そのユーザー・フレンドリーな点や優れたパフォーマンスを十分に発揮できるような使い方をしていない場合もあります。そのような場合、エンド・ユーザーもそのような状況に慣れてしまい、ソリューションの向上/改善を提案しなくなってしまっています。

上に戻る

OnDemandとは?
OnDemandソリューションの設計方法を学ぶには、まずOnDemandがどのようなものであるのかを理解することが必要です。

OnDemandによって、エンド・ユーザーは最小の時間、最小のやりとりによって、特定の文書を記憶域から検索することができるようになります。パフォーマンスに優れたユーザー・フレンドリーなソリューションを作るためには、まず、データがどのように使われるのか、それを少し見てみることが必要でしょう。

きわめて簡単に言えば、OnDemandとは、手で記入するカード・カタログ(引出しに入った)を使っていた頃の「図書館」の「電子版」といえるでしょう。図書館とOnDemandを対比させると次のようになります。

図書館 OnDemand
書籍のページ 文書のページ
書籍の章 保管オブジェクト内の文書
書籍 保管オブジェクト
引出しのカード データベース表の行
カード・カタログの引出し データベース表
カード・カタログのキャビネット フォルダー

図書館では、「特定の書籍」の「特定の章」を調べたい場合、カード・カタログ・キャビネットで特定のカード・カタログの引出しを開け、特定のカード(書籍の場所を示している)を見つけ、書籍を取りに行き、それから調べたいページを開きます。

OnDemandのPCまたはWebビューアーでは、特定のデータベース表に接続されているフォルダーを選択し、次に検索基準を入力します。それからEnterキーを押すと、文書のヒット・リスト(データベース表の特定の行のコピー)が表示されます。このリストで1つの行を選択すると、その文書を取り出すことができます。

最大限のパフォーマンスと最大限の使いやすさ
図書館の話に戻りましょう。見つけたい書籍は分かっているのに、カード・カタログ・キャビネットには、まったく同じラベルのついたカード・カタログの引出しが4つもあるとします。目的の書籍の場所を見つけるためには、4つの引出しをすべて調べなければならず、カードの引出しを1つ調べるよりもはるかに時間がかかることは明らかです。

同様のことがOnDemandの場合にもいえます。検索基準が複数のアプリケーション・グループ表にまたがっていれば、照会にはより長い時間を要します。これは、1つの照会に対してシステムがより多くの作業を行い、エンド・ユーザーがより長い時間待たなければならないということです。

OnDemandソリューションの設計者が行うべきことは、複数のアプリケーション・グループ表にまたがる検索を行わないようにアプリケーションを設計するための最もよい方法を見つけ出すことです。複数のアプリケーション・グループ表は、同じアプリケーション・グループから発生することも、また複数のアプリケーション・グループから発生することもあります。

アプリケーションの設計にあたっては、設計上最も重要な意味を持つ「OnDemandアプリケーションの4つの要素」を理解しておくことが必要です。

  1. アプリケーション - OnDemandアプリケーションによって、索引付けが行われます。データベース行の挿入に必要な情報、およびロードされるデータに必要なリソースをデータから収集します。リソースには、ロゴ、特殊フォント、ページ定義、書式定義などさまざまなものがあります。アプリケーションにはさらに、データの表示/印刷のための情報も含まれます。
  2. アプリケーション・グループ - アプリケーション・グループは、表ビルダーであり、表の構築の際にどの列を表に追加するべきかを示します。データのロードに際して、アプリケーションが正しいフィールド(列)情報を提供し、行の挿入が正しく行われるようにします。
  3. フォルダー - OnDemandフォルダーは、データベースの「ビュー」をエンド・ユーザーに提供します。フォルダーは、SQLに対する「空所補充」アプローチをユーザーにもたらし、照会が行われるデータベース表を決定します。
  4. 記憶域 - UNIX®用またはWindows®用Tivoli™Storage Management(TSM)などのキャッシュ記憶域または光/テープ記憶装置です。記憶域は、データの保管される場所であり、文書検索により、データはキャッシュまたは長期記憶域のいずれかから取り出されます。

OnDemandソリューションに関する要素には、さらに多くのものがありますが、OnDemandソリューションの設計の成功に最も大きく影響するのは、この4つです。

1つのレポート・タイプに対してのみOnDemandが使用される場合には、優れた設計も容易に可能です。しかし、ほとんどの場合、OnDemandソリューションは常に数千のユーザー、数百のデータ・タイプの検索を対象としているため、パフォーマンスと使いやすさに優れた設計のためには、3段階のアプローチが必要となります。

上に戻る

ステップ1:データの検索方法を判断する
OnDemandでは、データベースに収集される情報に基づいて文書の検索が行われるため、ユーザーがどのように検索を行うかを理解することが重要となります。ユーザーが照会を入力すると、ソリューションは関連する情報をできる限り迅速にユーザーに返さなければなりません。そのためには、きわめて限られた数のデータベース表に対してのみ検索が行われ、また、限られた数の一致項目のみが返されることが必要です。一致項目が1つのみ返されるというのが、最も理想的な状態です。

ユーザーがフォルダーを開いた時点で、データベースの照会はすでに開始されています。フォルダーを選択することによって、検索対象とするアプリケーション・グループ表の数が制限されます。この点については、ステップ3で説明します。

フォルダーは、エンド・ユーザーがデータベース表を照会する際のインターフェースを提供します。フォルダーのフィールドはアプリケーション・グループのフィールドに対応し、これがデータベースの索引とフィルター・フィールドに対応しています。セグメント・フィールドによって、検索対象の表を絞り込むことができます。フォルダーにサーバーベースのテキスト検索フィールドを置くこともできますが、他の照会フィールドを突き合わせた後に一致する文書において一致する単語/句を検索するため、データ検索に最も時間のかかる方法です。OnDemandのユーザーには、照会フィールドによる検索で十分な効率が提供されるため、テキスト検索フィールドの使用はあえて避けるべきでしょう。

照会の要求の後に行われること(ハイレベル・ビュー)は、以下のようなことです。

1. セグメント・フィールドの照会であれば、これを使用してその基準を満たす表のみを選択する。

2. 索引フィールドの照会であれば、セグメント検索により選択された表の索引を検索して、一致する表の行を選択する。

3. フィルター・フィールドが選択された場合は、選択されている行を、一致するフィルター・フィールドを持つ行のみに絞り込む。

4. 一致する行をヒット・リストとしてエンド・ユーザーに返す。

すべてのフィールドを索引フィールドにしたくもなりますが、それに伴うトレードオフの関係を理解しておく必要があります。索引を作成する場合、データベース表に保管されている情報を取り出し、その情報を再び別の表に追加するためにデータベース・スペースを使い、しかも索引の作成にかかわる余分なスペースも使うことになります。表フィールドがすべて索引であれば、何のメリットも得られないままデータベースはただ巨大化することになります。

あまりにたくさんのフィールド、索引、フィルターを作ることも、よい方法とはいえません。アプリケーション・グループに作成される表ごとのそれぞれのデータベース列には、データベース内の追加スペースが必要です。必要となるのは、検索対象に対するフィールド(データベース列)の作成のみであり、最低1つの索引フィールドが必要です。このフィールドは、通常、エンド・ユーザーが検索を行うフィールドであり、Customer Number(顧客番号)、Social Security Number(社会保障番号)、Phone Number(電話番号)など、一意の値であることが必要です。

これこそが、ユーザーがどのような文書検索を行うかを知ることが不可欠である理由です。ユーザーが1つのフィールドで検索を行う場合、必要なのはそのフィールドのみです。また、ユーザーの80%が3つのフィールドを使い、残りの20%がその3つのフィールドとその他のフィールドを使って照会を行う場合、索引を3つ作り、他のフィールドは単にフィルター・フィールドのままにしておくのがよいでしょう。

アプリケーション・グループ表は、使用できる行数によって制限を受けます。使用できる行数は、アプリケーション・グループのプロパティーに設定しますが、デフォルトでは1,000万行に設定してあります。1,000万行を保管すると、最初の表が閉じられて次の表が開かれます。この場合、両方の表に対して照会が行われる際には、パフォーマンスがわずかに低下します。1つの表に対する照会と2つの表に対する照会では、パフォーマンスの差は極めて微小なものであり、ほとんど気づかれないほどですが、それが100の表に対する検索となると状況は異なります。また逆に、行の制限を高く設定してしまうと、表との照会に時間がかかるようになり、その場合にもパフォーマンスは低下します。

そこで、セグメント・フィールドが必要となります。通常、「レポートの日付」や「ステートメントの日付」といったセグメント値を常に指定することによって、パフォーマンスを高めることができます。レポートにそのような値がない場合には、「ロードの日付」をアプリケーションで指定することによって、それを行うことができます。この値は、日時順にすることによって、有効なセグメント化が可能となります。セグメント・フィールドによって、検索する表の数を制限できるようになります。セグメントに「ロードの日付」を使い、年に4回、表が更新される場合には、検索の際に「月」および「年」を追加することによって、その検索をひとつの表に制限することができます。悪くても、月が2番目の表に繰り越される程度ですみます。このように、検索する表を絞り込むだけでも、検索の幅をうまく狭めることができます。

上に戻る


ステップ2:データ検索の効率をアップする
ここまでで、ユーザーがどのようにデータ検索を行うかが分かりましたので、次のステップでは、ユーザーによるデータ検索の頻度を判断します。頻繁に検索対象となるデータは、ユーザーの90%が必要としなくなるまでキャッシュに入れられたままの状態となり、一方、それ以外のデータは長期記憶域に保存されます。キャッシュは、エンド・ユーザーにデータを提示する最も迅速な方法です。データの需要が低くなるとデータはキャッシュから除かれますが、それでもユーザーは長期記憶域からそのデータを検索することができます。光ディスク/テープをドライブに入れて、ドライブを稼動し、データをエンド・ユーザーに提示するというプロセスは、キャッシュからの検索に比べて、かなり時間を要します。たくさんのユーザーが長期記憶域からの検索を行い、また、検索のニーズにドライブが対応できない場合には、事態はさらに悪いものとなるでしょう。

企業によっては、利用できるキャッシュの量に何らかの制限を加えている場合もあります。しかし、多くの場合、データをできる限り長期間の間、キャッシュに保持しておくことが重要です。長期記憶域からデータを取り出す時間の間エンド・ユーザーを待たせておくということは、できる限り避けたいものです。

上に戻る

ステップ3:優れたパフォーマンスと使いやすさを目指したフォルダーの設計
フォルダーは、1つのアプリケーション・グループも持つ場合、また、複数のアプリケーション・グループが割り当てられている場合があります。1つのフォルダーに1つのアプリケーション・グループが割り当てられているのが最もよい状態です。ただしこれは、検索対象となるデータに対して必ずしも効率のよいソリューションであるとは限りません。

以下のような、役に立つOnDemandの基本的原則があります

  1. 以下の状況では、データ・オブジェクトは、同じアプリケーションを使用することが必要です。
    • データが同じタイプ
    • 各データ・オブジェクトに対してフィールド情報が同じ場所にあり、レポートまたはデータ・タイプを識別するためにフィールドを作成する必要がない
    • リソースが同じ
  2. 以下の状況では、データ・オブジェクトは、同じアプリケーション・グループであっても異なるアプリケーションを使用することが必要です。
    • フィールド情報は同じであるが、最初のアプリケーションとは同じ場所にない
    • リソースが全く異なる
    • データ・タイプが異なる
    • データの元となるアプリケーションを判別するためのアプリケーションIDフィールドを簡単に作成できる

    これはつまり、索引付けされた情報が同じである限り、AFP™、JPG、LINE、PDF、TIFFのデータを同じアプリケーション・グループ内に置くことができる、ということです。

  3. アプリケーション・グループを設計する前に、それを複数のアプリケーションにロードする可能性があるかどうかを検討する必要があります。より多くのアプリケーションに対応するようにアプリケーションIDフィールドを拡張することもできますが、アプリケーションIDフィールドを追加せずに作業を進めた場合、後からこのフィールドを追加することはできません。

  4. 各アプリケーション・グループ内に共通の検索フィールドがある限り、アプリケーション・グループは同じフォルダー内に存在する可能性があります。ただし、エンド・ユーザーがすべてのアプリケーション・グループに同等にアクセスできない場合は、検索時間に関する問題が起きるか、または、各アプリケーション・グループに膨大な量の表が置かれ、セグメント検索の絞り込みが十分にできないことが予想されるため、アプリケーション・グループごとに個々のフォルダーを置くことを検討すべきでしょう。フォルダーで検索されるアプリケーション・グループの数は、ユーザー/グループ許可によって制限することができます。

  5. フォルダーは、照会の最初の段階、また、照会制限の最初の段階として使用されます。エンド・ユーザーには、使用するデータの含まれるアプリケーション・グループのあるフォルダーのみが提示されます。フォルダーには、類似性が高く分割しないほうがよいと判断されるアプリケーション・グループまたはアプリケーション・グループの一部のみが含まれます。また、ユーザーには、その業務に関連するフォルダーのみが提示されます。たとえば、「在庫記録」は「給与計算フォルダー」には含まれません。ユーザー/グループ許可を使用して、フォルダー・リストでユーザーに提示されるフォルダーの数を制限することができます。

以下のようになることが必要です。

  • アプリケーション = 1対多数のデータ・オブジェクト
  • アプリケーション・グループ = 1対多数のアプリケーション
  • フォルダー = 1対1または1対少数のアプリケーション・グループ

ここまで基本を述べましたので、これから、簡単なシナリオを実際に検討し、OnDemandソリューションの設計をすることにしましょう。

あなたの会社では、以下の6つのレポートをOnDemandで保管したいと考えているとします。

  1. バランスシート - AFP データ
  2. セールス明細報告書 - 行データ
  3. 在庫明細報告書 - AFP データ
  4. 取引明細報告書 - 行データ
  5. 損益計算書 - PDF
  6. 給与計算元帳 - AFPデータ

よくないソリューションの例:

以下は、上記の情報のみに基づいた、きわめて簡単かつ未熟な設計です。

  • レポートごとにアプリケーションを作成し、アプリケーションごとにアプリケーション・グループを作成する
  • すべてのフィールドを索引フィールドにする
  • 6つのアプリケーション・グループすべてを含む、すべてのユーザーがアクセスする1つのフォルダーを作成する。共通の索引フィールドでこの1つのフォルダーを検索するたびに、6つのアプリケーション・グループすべてに対する検索が行われる。セグメント・フィールドがない場合、6つのアプリケーション・グループの表すべてを検索することになる。さらに悪いことに、すべてのフィールドを索引フィールドにしたため、データベースが必要以上に巨大にものとなる。

よいソリューションの例:

データの使用方法について少し詳しく調べることによって、以下のことが確認できる。

1. バランスシート - AFP データ

顧客番号、日付にメジャー照会を用いる

顧客説明にマイナー照会を用いる

(役員と会計士が使用)

2. セールス明細報告書 - 行データ

顧客番号、日付にメジャー照会を用いる

顧客説明にマイナー照会を用いる

(役員、会計士、販売担当者が使用)

3. 在庫明細報告書 - AFP データ

製品番号、日付にメジャー照会を用いる

製品説明、取引タイプにマイナー照会を用いる

(役員、会計士、在庫管理、販売担当者が使用)

4. 取引明細報告書 - 行データ

顧客番号、日付にメジャー照会を用いる

顧客説明、取引タイプにマイナー照会を用いる

(会計士が使用)

5. 損益計算書 - PDF

顧客番号、日付にメジャー照会を用いる

顧客説明にマイナー照会を用いる

(役員、会計士が使用)

6. 給与計算元帳 - AFPデータ

従業員番号、姓、日付、社会保障番号にメジャー照会を用いる

姓、部門にマイナー照会を用いる

(会計士、人事が使用)

これらのレポートから得られた情報を使用する、優れたOnDemand設計は、以下のようなものになります。

給与計算元帳」は、人事部門が使用する唯一のレポートです。したがって、以下のものを作成します。

1. フォルダー「Payroll Ledger」

2. アプリケーション・グループ「payledge」

  • セグメント・フィールド:Date
  • 索引フィールド:employeenum、lastname、ssn
  • フィルター・フィールド:firstname、dept

3. アプリケーション「payledge」

次に、「在庫明細報告書」があります。これは、在庫管理部門が表示する唯一のレポートです。

  1. フォルダー「Inventory Detail Report」
  2. アプリケーション・グループ「invreport」
    • セグメント・フィールド:date
    • 索引フィールド:prodnum
    • フィルター・フィールド:proddescr、transtype
  3. アプリケーション「invreport」

次の「取引明細報告書」は、他と必要項目が類似しています。ただし、他の会計報告書では必要とされない「取引タイプ」が必要です。

  • フォルダー「Transaction Detail Report」
  • アプリケーション・グループ「transdtl」
    • セグメント・フィールド:date
    • 索引フィールド:acctnum
    • フィルター・フィールド:desription、transtype
  • アプリケーション「transdtl」

最後に、「バランスシート」「セールス明細報告書」「損益計算書」の3つのレポートがありますが、これらはすべてデータ・タイプが異なります。照会に必要な項目はすべて同じです。1つ注意しなければならないのは、セールス明細報告書だけが唯一販売部門によって使用されるものだということです。しかし、これらのレポートは、単一のアプリケーション・グループにも適しています。

1. フォルダー:

  • 「Executive Report」
  • 「Sales Detail Report」

    • これはアプリケーションIDによって制限される

2. アプリケーション・グループ:「execreport」

  • セグメント・フィールド:date
  • 索引フィールド:acctnum
  • フィルター・フィールド:acctdescr、application ID

3. アプリケーション「balsheet」「salesrpt」「incomestmnt」

このソリューションでは、「6つのアプリケーション」、「4つのアプリケーション・グループ」、「5つのグループによるアクセスが管理される5つのフォルダー」が必要となります。各照会では、1つの表の最小限の部分に対して検索が行われ、検索のほとんどは、表スキャン(フィルター・フィールド)ではなく、索引スキャン(索引フィールド)によって行われます。日付フィールドをセグメント日付としてリストしてあるため、データを日付順にロードし、ユーザーが日付を入力する場合、最小限度の表で照会を行うことができるようになります。

優れたOnDemand設計は、以上の例には限られるものではありません。照会の制限、ユーザー・グループの制限、アプリケーション・グループの許可など、他の方法もいつくかあります。他の設計方法に関しては、OnDemand Support Webサイトを参照してください。

OnDemandソリューションの設計者として、皆さんはこれから、さまざまな種類のレポートのアーカイブを手がけることになるでしょう。行データやAFPデータ以外のものもあり、また、さまざまな照会のニーズがあります。最高の設計を実現するには、「誰がレポートを使用するのか」、「レポートの照会はどのように行われるのか」を理解することが必須です。ソリューションの構築の前に綿密な計画を立てることが、その後長年にわたって効率を維持することのできる設計を可能にするのです。

上に戻る

関連情報:

執筆者について
Eric Hannは、1998年からContent ManagerのOnDemand Supportに加わり、現在、コロラド州ボールダーを拠点とするContent Managerの OnDemand Supportで Team Leadを務めています。彼はこれまで、Content Manager製品のWebベース・サポートの初期設計と実 施において重要な役割を果たしてきました。
Benjamin Boltzは、同じく、コロラド州ボールダーに拠点を置くContent ManagerのOnDemand Developerです。Content Manager OnDemand(最終的にそういう名称の製品となった)のインストーラーとして1996年にIBMに入社しました。メールアドレスはそれぞれ、ehann@us.ibm.comとboltz@us.ibm.comです。

原文はこちら
(英文)
上に戻る