目次


IBM Optim Solution V7.2

Data Growth Solution

データベースのアーカイブ

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: IBM Optim Solution V7.2

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:IBM Optim Solution V7.2

このシリーズの続きに乞うご期待。

はじめに

企業の扱うデータ量は年々増加しており、肥大化したデータベースが、ミッション・クリティカルなアプリケーションのパフォーマンスを低下させるケースも見られます。 こういった問題に対しOptimは、古くなった業務トランザクション・レコードをアーカイブし (アーカイブ・ファイルに書き出す)、データベース上から削除することにより、データベースのパフォーマンス改善を図ります。Optimのアーカイブには以下のような特徴があります (図1)。

  • アーカイブ対象の行のみでなく、 関連する表の関連する行を一緒にアーカイブすることができます
  • アーカイブ・ファイルを参照できます
    Optimのアーカイブは単に保管のためだけでなく、必要であればその内容を確認できます。 また、一緒に保管されている関連する行を容易に参照できます。
  • ODBC/JDBCを用いて、アプリケーションからアーカイブ・ファイルを参照できます
  • アーカイブしたデータを元のデータベースに、戻すことができます(リストア)
    アーカイブ・ファイルには表の情報も含まれているので、新規に表を作成してデータを戻すこともできます。
図1. Optimアーカイブ
図1. Optimアーカイブ
図1. Optimアーカイブ

この記事では、

  • 手動でのデータベースのアーカイブ(と削除)
  • スケジューラーを用いたデータベースのアーカイブ(と削除)

について説明します。 ODBC/JDBCでの参照については参考文献の記事を参照して下さい。

シナリオについて

今回のシナリオでは、顧客情報(CUSTOMERS)、受注情報(ORDERS)、詳細情報(DETAILS)、 商品情報 (ITEMS)の 4つの表を用います(図2)。 顧客ID、注文ID、商品IDはそれぞれ、顧客情報表、受注情報表、商品情報表の主キーです。 受注情報表の顧客IDは、顧客情報表の顧客IDへの外部キーです。詳細情報表の注文ID、商品IDはそれぞれ、受注情報表の注文ID、商品情報表の商品IDへの外部キーです。

図2. シナリオで用いる表
図2. シナリオで用いる表
図2. シナリオで用いる表

シナリオの内容は以下のとおりです。

  1. 受注情報のうち1年以上前に受注した情報については、 アクセス頻度が少ないので、アーカイブする
    アーカイブする受注情報のほかに、関連する顧客情報、詳細情報、商品情報の 関連する行も一緒にアーカイブします。
  2. アーカイブ後、アーカイブ・ファイルの内容を確認する
  3. データベースからアーカイブした行を削除する
    表の意味から、削除するのは受注情報表と詳細情報表の 行となります。

最後に、スケジューラーを用いてアーカイブを定期的に行う方法について説明します。 今回のシナリオで用いるDB別名はYDUTF8、作成者IDはJDEMOです。

アーカイブ前の表の確認

最初に、アーカイブ前のORDERS表の内容を確認します。 図3がOptimのメイン・ウィンドウです。

図3. Optimメイン・ウィンドウ
図3. Optimメイン・ウィンドウ
図3. Optimメイン・ウィンドウ

この画面でFile -> New -> Editを選択すると、エディター・オプション画面が表示されます (図4) 。

図4. エディター・オプション画面
図4. エディター・オプション画面
図4. エディター・オプション画面

この画面でTableをチェックし、 その下に参照する表名YDUTF8.JDEMO.ORDERSを入力します。そしてOKを押すと、 ORDERS表の内容が表示されます(図5)。 ORDER_DATEが2009年4月の行が10件あり、これらがこのあとアーカイブされます。

図5. アーカイブ前のORDER表
図5. アーカイブ前のORDER表
図5. アーカイブ前のORDER表

アーカイブ

アクセス定義

アーカイブする表の定義をします。Optimのメイン・ウィンドウ(図3)において、File -> New -> Access Definitionを選択すると、アクセス定義エディターが表示されます (図6)。

図6. アクセス定義エディター(1)
図6. アクセス定義エディター(1)
図6. アクセス定義エディター(1)

この画面で、まずアーカイブを開始する表を指定します。 Default Qualifierに、開始表のDB別名と作成者IDを"."で区切って指定します。そして、 Start TableORDERS表を指定します。開始表を指定すると、その下の表一覧に 開始表が自動的に追加されます。 次に、開始表と一緒にアーカイブする表を表一覧に追加します。 Optimにはこれら関連する表を自動で検出する機能があります。 表一覧の表名を右クリックし、ポップアップ・メニューでAdd Tables...を選択すると、表選択画面が表示されます (図7)。

図7. 表選択画面
図7. 表選択画面
図7. 表選択画面

この画面で、Find Tables Related to Tableをチェックし、その下のフィールドに開始表名を入力 します。Bothオプション、All Levelsがチェックされていることを確認し、 Select All Matchingを押すと、図8のように、 関連する表が表一覧に追加されます。

図8. アクセス定義エディター(2)
図8. アクセス定義エディター(2)
図8. アクセス定義エディター(2)

次に、アーカイブする条件 「ORDERS表の受注日(ORDER_DATE)が1年以上前の行」の定義を行います。 図8ORDERSTable Specifications領域 を右クリックし、ポップアップ・メニューのTable Specifications -> Selection Criteriaを選択すると表仕様画面が表示されます (図9)。

図9. 表仕様画面
図9. 表仕様画面
図9. 表仕様画面

この画面のORDER_DATESelection CriteriaBEFORE(1Y)と入力します。 File -> Closeでこの画面を終了し、アクセス定義エディター(図8)に戻ります。 次に、関連表のアーカイブする行の指定をします。 アクセス定義エディターのRelationshipsタブを選択すると図10のようになります。

図10. アクセス定義エディター - 関係
図10. アクセス定義エディター - 関係
図10. アクセス定義エディター - 関係

この画面のOptions(1), (2)がその指定になります。親表の行が選択された とき子表の関連する行は自動的に選択されます (図2のORDERSとDETAILSの関係)。 逆に、子表の行が選択されたとき親表の関連する行を選択する か否かを決めるのがOption(1)です。Option(1)がチェックされていると、 親表の関連する行を選択します。 Options(2)は、Options(1)によって親表の行が選択された とき、それに関連する子表の行をさらに追加で選択するか否かのチェックです (図11)。

図11. 関連行の選択
図11. 関連行の選択
図11. 関連行の選択

よって、今回のシナリオでは、Option(1)のみすべてチェックします(図10)。 最後に、アーカイブした行をデータベースから削除する定義を行います。削除するのは、ORDERS表と DETAILS表なので、アクセス定義エディター(図8)で、 この2つの表のDelete Rows After Archiveにチェックを付けます。 そして、File -> Saveを選択し、このアクセス定義に適当な名前をつけて(今回はOPTUSER.ORDER1Yとします) 保存したのち、終了します。

アーカイブの定義、実行

Optimメイン・ウィンドウ(図3)にて、File -> New -> Archiveを選択するとアーカイブ要求エディターが表示されます (図12)。

図12. アーカイブ要求エディター
図12. アーカイブ要求エディター
図12. アーカイブ要求エディター

この画面のArchive Fileにアーカイブ先のファイル名を入力します。 図12ではorder1y<$SEQ>.afと入力しています。この名前の<$SEQ>の部分はアーカイブ時に1からの連番に置き換わります。Archive Index Fileの値はアーカイブ・ファイル名から自動的に設定されます。次にAccess Definition OptionsNamedを選択し、Access Definition Nameに先ほど定義したアクセス定義の名前OPTUSER.ORDER1Yを入力します。最後に、Process OptionDefer Delete after Archiveがチェックされていることを確認します。これは、アーカイブと同時にアーカイブした行をデータベースから削除するか否かの指定です。 今回は、アーカイブ後、アーカイブ・ファイルの内容を確認したのち、データベースから行を削除するので、このオプションをチェックします。以上で、アーカイブの定義は終了です。 図12File -> Saveを選択し、この定義に適当な名前 を付けて(これもOPTUSER.ORDER1Yとします)保存します。 そして、File -> Runを選択し、アーカイブを実行します。 実行が終了すると、プロセス・リポート(図13)が表示されるので、正常に終了したかどうか確認します。

図13. アーカイブ・プロセス・リポート
図13. アーカイブ・プロセス・リポート
図13. アーカイブ・プロセス・リポート

参照

アーカイブ・ファイルが作成されたので、その内容を確認します。 Optimメイン・ウィンドウ(図3)で、Utilities -> Browseを選択します。ブラウズ画面で、アーカイブ・ファイル名を指定して開きます。 ブラウズ画面には、アーカイブ・ファイル内の表名と行数の 一覧が表示されます(図14)。

図14. アーカイブ・ファイル内の表一覧
図14. アーカイブ・ファイル内の表一覧
図14. アーカイブ・ファイル内の表一覧

この画面で、YDUTF8.JDEMO.ORDERSをダブル・クリックすると、 その内容が図15のように表示されます。

図15. アーカイブ・ファイル内の表の参照
図15. アーカイブ・ファイル内の表の参照
図15. アーカイブ・ファイル内の表の参照

図13のプロセス・レポートからわかるようにアーカイブを実行した日付は2010年5月1日です。 そして図15ORDER_DATEは、アクセス定義の図9で指定したとおり、 それより一年以上前の行であることがわかります。 次に、この画面のORDER_ID=XY001の行を右クリックし、ポップアップ・メニューでJoinを選択します。 そして、表示されたSelect Join TableCUSTOMERS表を選択すると、 画面は図16の ようになり、ORDER_ID=XY001に対応する顧客の情報が同時に表示されます。

図16. アーカイブ・ファイル内の表の結合
図16. アーカイブ・ファイル内の表の結合
図16. アーカイブ・ファイル内の表の結合

この画面の上のORDERS側で別のORDER_IDを選択すると(右矢印を移動させる)、それに応じた顧客情報が下のCUSTMERS側に表示されます。このように行と、それに関連する 表の関連する行の内容を容易に確認することができます。

削除

アーカイブ・ファイルに、期待どおりの行が保存されていることが確認できたので、 アーカイブした行をデータベースから削除します。 Optimのメイン・ウィンドウ(図3)においてFile -> New -> Deleteを選択します。 削除要求エディターが表示されます(図17)。

図17. 削除要求エディター
図17. 削除要求エディター
図17. 削除要求エディター

アーカイブ・ファイルに保存した行をデータベースから削除するので Source File TypeArchiveを 選択し、Source Fileにアーカイブ・ファイル名を入力します。 Control Fileには適当な制御ファイル名を入力します。 このファイルには行ごとの削除結果が書かれます。 この削除要求は保存せず、図17の画面でFile -> Runを選択し、実行します。 実行後、プロセス・レポートが表示されるので正常に終了したか確認します。 確認のため、削除後のORDERS表を参照すると図18のようになっており、 アーカイブされたORDER_DATEが2009年4月の行が削除されていることがわかります。

図18. 削除後のORDER表
図18. 削除後のORDER表
図18. 削除後のORDER表

スケジューラーを用いたアーカイブ

定期的にアーカイブを行うことにより、 データベースの継続的なパフォーマンスの改善が図れます。 Optimのスケジューリング機能を用いて、アーカイブを定期的に実行する 方法について説明します。 Optimのメイン・ウィンドウ(図3)で、File -> Open... を選択します。 表示されるダイアログで、先ほど保存したアーカイブ定義名OPTUSER.ORDER1Yを選択し、 アーカイブ要求エディター(図12)をオープンします。 今回は、アーカイブ後、自動的に削除を行うようにするため、 Defer Delete after Archiveのチェックをはずし、定義を上書き保存します。 そして、この定義をスケジューラに登録するためFile -> Schedule... を選択すると、 ジョブ詳細画面が表示されます(図19)。

図19. ジョブ詳細 - 一般
図19. ジョブ詳細 - 一般
図19. ジョブ詳細 - 一般

例として、「2010年6月から12月まで毎月1日の深夜1時にこのアーカイブを実行する」定義を行います。Startに最初の開始日2010/06/01を、Start Timeに開始時刻01:00を指定します。Latestには1時10分を指定しています。 Latestの時刻はジョブの実行を試みる最後の時刻を指定します。 これは例えば、1時0分にはたまたまPCが再起動していたが、1時5分には起動が完了していたといった場合、 ジョブの開始時刻は過ぎているがLatestの時刻より前なので、 再起動後、ジョブが開始されます。 次に、Repeatsタブを選択します(図20)。

図20. ジョブ詳細 - 繰り返し
図20. ジョブ詳細 - 繰り返し
図20. ジョブ詳細 - 繰り返し

この画面では以下のように入力します。

表1. 繰り返しの定義

フィールド入力値
Cycle 1Every Nth Month
Repeat 11
Cycle 2Day
Repeat 21
Stop Date2010/12/01

これが「2010/12/01まで月1回、1日に実行する」の定義です。 これらの定義に従い、右下のカレンダー上で実行日にチェックが付けられます。 Stepsタブの定義は図21 のようになっています。ここに、このジョブで実行するアーカイブ要求が定義されています。 もし、このアーカイブ要求と一緒に実行したい要求があればここに追加します。

図21. ジョブ詳細 - ステップ
図21. ジョブ詳細 - ステップ
図21. ジョブ詳細 - ステップ

OKを押して定義を終了します。 続いてアーカイブ要求エディター(図12)も終了します。定義したジョブの状態はスケジューリング・モニターで確認できます。 Optim Schedulerを起動すると 図22のような画面が表示されます。

図22. スケジューリング・モニター
図22. スケジューリング・モニター
図22. スケジューリング・モニター

Jobsタブに定義されているジョブの一覧が表示されます。 Activeタブには、その時点で実行されているジョブが表示され、 Completedタブには実行されたジョブの一覧が表示されます (図23)。

図23. 実行されたジョブ一覧
図23. 実行されたジョブ一覧
図23. 実行されたジョブ一覧

実行されたジョブの結果を確認するには、そのジョブをダブル・クリックし、 ジョブのステップ結果を表示します(図24)。

図24. ジョブのステップ結果
図24. ジョブのステップ結果
図24. ジョブのステップ結果

そして、ステップをダブル・クリックすると、そのステップの実行結果が表示されます (図25)。

図25. ステップの実行結果
図25. ステップの実行結果
図25. ステップの実行結果

まとめ

Optimのソリューションの1つであるData Growth Solution(データベースのアーカイブ)について説明しました。 そして、スケジューラーでアーカイブ作業を定期的に行う方法についても説明しました。 このようにデータベースのアーカイブを定期的に行うことにより継続的なパフォーマンスの改善が図れます。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=555885
ArticleTitle=IBM Optim Solution V7.2: Data Growth Solution
publish-date=10042010