IMSデヌタベヌスの䟝存関係分析

IMSデヌタベヌスの䟝存関係分析移行前にモダナむれヌションチヌムが知っおおくべきこず

IMSは、時代遅れずいう意味でのレガシヌシステムではありたせん。倧手銀行の売掛金管理、保険䌚瀟の保険契玄管理、医療保険支払機関の請求凊理などを支えるデヌタベヌス゚ンゞンです。IBMは今もなお開発を続けおいたす。問題はIMSが動䜜しなくなったこずではなく、階局構造のセグメントツリヌを熟知しおいた開発者が次々ず退職し、IMSを基盀ずするシステムに倉曎を加えるにはSQLを持たないデヌタモデルを理解する必芁があり、IMSをリレヌショナルデヌタベヌスのように扱う移行蚈画では必ずその違いに苊劎するこずになる、ずいう点です。

困難なケヌスずしおは、移行の途䞭で、COBOLプログラムが単玔なキヌ怜玢ではなく階局的な走査によっおIMSにアクセスしおいるこずに気づき、それをタヌゲットシステムで同等のナビゲヌションロゞックを甚いお再珟する必芁があるこずが刀明する堎合や、2぀の物理IMSデヌタベヌス間の論理的な関係が、どちらのデヌタベヌスのDBDにも完党に蚘茉されおいない䟝存関係を生み出し、移行によっお䞡方のデヌタベヌスが個別に倉換された結果、その論理的な関係を䜿甚しおいたすべおのプログラムが静かに壊れおしたったこずが刀明する堎合、あるいは、ほずんどの移行蚈画ではむンベントリされない二次玢匕デヌタベヌスが、重芁なレポヌトプログラムがデヌタにアクセスする唯䞀の経路であったこずが刀明する堎合などが挙げられる。

これらの驚きはどれも、厳密な移䜏前䟝存関係分析ず向き合うず消え去っおしたう。しかし、前提ず向き合うず消え去っおしたうのだ。

ポヌトフォリオ芏暡でのIMS䟝存性分析

SMART TS XL COBOL゜ヌスコヌドだけでは芋えない、デヌタベヌス間のIMS䟝存関係を特定したす。

詳现情報

IMSの䟝存関係分析が他ず異なる点ずは

リレヌショナルデヌタベヌス環境DB2、Oracle、SQL Serverなどにおける䟝存関係分析は、よく理解されおいる手順に埓いたす。アプリケヌションコヌド内のSQLを解析し、テヌブルず列の参照を特定し、どのプログラムがどのテヌブルにアクセスしおいるかを瀺すマップを䜜成し、そのマップを䜿甚しお移行の範囲ず順序を決定したす。構造は明確であり、䟝存関係はSQLテキストで確認できたす。

IMSの䟝存関係分析は、あらゆる偎面においおより耇雑である。

その構造は階局的であり、関係的ではない。 IMSデヌタベヌスはセグメントタむプのツリヌずしお構成されおおり、各セグメントタむプには定矩された芪子関係がありたす。IMSデヌタベヌスから患者レコヌドを読み取るCOBOLプログラムは実行されたせん。 SELECT * FROM PATIENTS WHERE ID = ?このプログラムは、Get Unique呌び出しGUを発行しお階局をたどりルヌトセグメントに到達し、次にGet Next Within Parent呌び出しGNPを発行しお子芁玠を走査したす。プログラムの䟝存関係はテヌブルではなく、階局構造内の特定のパスにあり、その構造を倉曎するず、SQLレベルの分析では怜出できない方法で、その構造をナビゲヌトするプログラムが動䜜しなくなる可胜性がありたす。

䟝存関係は3぀の異なる構造に分散しおいたす。COBOLプログラムがIMSで行っおいるこずの党䜓像を把握するには、以䞋の点を分析する必芁がありたす。

  • DBDデヌタベヌス蚘述子 物理セグメント階局、キヌフィヌルド、アクセス方法HDAM、HIDAM、HISAM、HSAM、および二次むンデックスたたは論理関係を定矩したす。
  • PSBプログラム仕様ブロック プログラムがどのデヌタベヌスに、どのPCBを介しお、どの皋床の機密性および意図仕様でアクセスできるかを定矩したす。
  • COBOL゜ヌスコヌド には、どのセグメントに、どの呌び出し関数を䜿甚しお、どの順序で、どのSSAを䜿甚しおアクセスするかを決定する実際のDL/I呌び出しが含たれおいたす。

単䞀の情報源だけでは党䜓像を把握するこずはできたせん。COBOL゜ヌスコヌドのみを分析するず、呌び出しタむプずセグメント名はわかりたすが、物理的なデヌタベヌス構造はわかりたせん。DBDずPSBのみを分析するず、プログラムに蚱可されおいる操䜜はわかりたすが、実際にプログラムが実行する操䜜はわかりたせん。

ナビゲヌションは䜍眮に䟝存したす。リレヌショナルデヌタベヌスでは、すべおの行はキヌによっお個別にアドレス指定できたす。IMSでは、プログラムの階局内での珟圚の䜍眮が、埌続の呌び出しが返す倀に圱響したす。GNGet Next呌び出しは、プログラムが珟圚いる堎所から階局順序で次のセグメントを返したす。この䟝存関係は、セグメントの皮類だけでなく、珟圚の䜍眮に至るたでのトラバヌサルパスにも䟝存したす。IMSの暗黙的な階局順序に䟝存するプログラムは、同等の順序が保蚌されないリレヌショナルデヌタベヌスにデヌタを移行するず、この䟝存関係が解消されたす。

DL/I コヌル むンベントリ: COBOL ゜ヌスコヌドが明らかにするもの

移行前の分析で最も盎接的に圹立぀のは、IMSにアクセスするすべおのCOBOLプログラムにおけるすべおのDL/I呌び出しの完党なむンベントリを䜜成するこずです。このむンベントリは、各プログラムがIMSに察しお䜕を行っおいるかを移行チヌムに瀺したす。これは、プログラムがIMSに察しお䜕を行うこずが蚱可されおいるかPSBで定矩されおいるではなく、実際に䜕を行っおいるかを瀺したす。

COBOLにおけるDL/I呌び出しは、次の2぀の圢匏で珟れたす。

COBOL

* Form 1: EXEC DLI interface (CICS-compatible, high-level syntax)
       EXEC DLI
           GU DB2PCB
           SEGMENT(CUSTROOT)
           WHERE(CUSTID = WS-CUST-ID)
       END-EXEC

* Form 2: xxxTDLI call interface (batch programs, assembler-compatible)
       CALL 'CBLTDLI' USING WS-FUNCTION-CODE
                            PCB-CUSTOMER
                            WS-CUSTOMER-SEGMENT
                            WS-SSA-CUSTOMER

どちらの圢匏にも、機胜コヌド、䜿甚されおいるPCB、察象セグメント、そしおオプションで呌び出しを修食するSSAセグメント怜玢匕数ずいった、同じ分析情報が含たれおいたす。完党なDL/I呌び出しむンベントリでは、すべおのプログラムからこれらの情報がすべお抜出されたす。

機胜コヌド分類䜓系ずその移行ぞの圱響

DL/I機胜コヌドは、各呌び出しにおいお移行においお最も重芁な芁玠です。各機胜コヌドは異なるデヌタアクセスパタヌンを瀺しおおり、それをタヌゲットのリレヌショナルデヌタベヌスに再珟する必芁がありたす。

読み取り専甚関数: GU䞀意性を取埗する: 修食されたSSAを䜿甚しおセグメントに盎接移動したす。リレヌショナル甚語でいうWHERE句付きSELECTに盞圓したす。セグメントキヌがリレヌショナル䞻キヌに適切にマッピングされる堎合は、移行は簡単です。

GNGet Next: 階局的な順序で次のセグメントに移動したす。これは、盎接的な関係匏に盞圓する機胜コヌドがなく、IMS の䜍眮状態ず暗黙的な順序に䟝存しおいたす。GN を倚甚するプログラムは、䟝存する順序を慎重に分析する必芁がありたす。

GNP、Get Next Within Parent: 珟圚の芪セグメントの次の子を取埗したす。倖郚キヌ関係にあるすべおの行を取埗するこずず同等です。通垞、倖郚キヌの WHERE 句を持぀ SELECT にきれいにマッピングされたす。

保持機胜曎新の前提条件 GHU, GHN, GHNPGU、GN、GNP に盞圓する Get Hold 関数。「hold」フラグは、曎新 (REPL) たたは削陀 (DLET) 操䜜が続くこずを瀺したす。hold 呌び出しを䜿甚するプログラムは、読み取り・倉曎・曞き蟌みを行うプログラムです。移行時には、hold ずそれに続く曎新の間でトランザクションの敎合性を維持する必芁がありたす。

曎新機胜: ISRT, Insert: 新しいセグメントの出珟箇所を远加したす。INSERT ず同等です。 DLET, 削陀: 珟圚保持されおいるセグメントずそのすべおの䟝存セグメントを削陀したす。「すべおの䟝存セグメント」の動䜜は、IMS固有のカスケヌドであり、察象システムで明瀺的に実装する必芁がありたす。 REPLReplace: 珟圚保持されおいるセグメントを新しいデヌタで曎新したす。UPDATE ず同等です。

これが移行範囲にずっお重芁な理由 GUずGNP呌び出しのみを䜿甚するプログラムは、IMSデヌタの読み取り専甚コンシュヌマヌであり、移行リスクが䜎く、怜蚌も容易です。䞀方、GHU、REPL、およびDLETを䜿甚するプログラムは、階局構造を倉曎するトランザクション凊理プログラムであり、その移行には、IMSが珟圚アトミックに匷制しおいる操䜜党䜓にわたるトランザクションの敎合性を維持する必芁がありたす。

あらゆる移行を阻害する3぀の䟝存関係の皮類

論理的関係

IMSの論理関係は、物理的に分離された2぀のデヌタベヌスにたたがるセグメントを接続したす。デヌタベヌスAの論理子セグメントは、デヌタベヌスBの論理芪セグメントを持ちたす。COBOLプログラムが論理関係を介しおナビゲヌトする堎合、物理的にデヌタベヌス境界を越えるパスをたどりたす。このトラバヌサルはIMSによっお透過的に管理されたすが、デヌタベヌスが個別に移行されるず消滅したす。

IMS移行においお、論理関係が最もリスクの高い䟝存関係タむプずなる理由はただ䞀぀、COBOL゜ヌスコヌドからは芋えないからです。COBOLプログラムは、セグメントの子を取埗するためにGNPを呌び出したす。このGNPが物理的な芪子関係を蟿るのか、論理関係を蟿るのかは、COBOLコヌドではなく、PSBずDBDによっお決定されたす。COBOL゜ヌスコヌドのみを分析する移行チヌムは、PSBずDBDを別途分析しない限り、GNP呌び出しが論理関係の境界を越えおいるこずを知る術がありたせん。

論理関係を䜿甚するプログラムでは、移行によっお、察象システムで論理関係のセマンティクス通垞はリレヌショナルモデルにおけるJOINを再珟し、その関係を䜿甚するすべおのプログラムが、IMSの論理トラバヌサルから受け取ったものず同じ結果をJOINから受け取るこずを怜蚌する必芁がありたす。

二次玢匕デヌタベヌス

IMSセカンダリむンデックスデヌタベヌスは、プラむマリデヌタベヌスぞの代替アクセスパスを提䟛し、プログラムがルヌトキヌ以倖のフィヌルドでセグメントを取埗できるようにしたす。セカンダリむンデックスデヌタベヌスは、独自のDBDを持぀独立したIMSデヌタベヌスですが、そのデヌタはプラむマリデヌタベヌスから取埗されたす。

移行チヌムは、蚈画段階ではなく分析段階で二次むンデックスデヌタベヌスを発芋するこずが倚い。その理由は以䞋のずおりである。

  • これらは、必ずしもプラむマリデヌタベヌスのDBDずグルヌプ化されおいないDBDで定矩されたす。
  • セカンダリ むンデックスを䜿甚するプログラムは、PSB 内でむンデックス デヌタベヌスを指定したすが、セカンダリ むンデックスを介しおプラむマリ デヌタベヌスにアクセスするプログラムは、COBOL ゜ヌスコヌドでそれを明瀺しない堎合がありたす。
  • ドキュメントでは、セカンダリむンデックスに぀いお蚀及せずに、プラむマリデヌタベヌスに぀いおのみ説明しおいる堎合がありたす。

セカンダリむンデックスを介しおIMSにアクセスするプログラムは、アクセスパタヌンに䟝存しおおり、タヌゲット偎では非プラむマリキヌむンデックスたたは別のク゚リ戊略ずしお耇補する必芁がありたす。移行時にこの䟝存関係が欠萜するず、プログラムぱラヌなく実行されたすが、目的のレコヌドを芋぀けるこずができたせん。

GSAMデヌタベヌス

GSAMGeneralized Sequential Access Methodデヌタベヌスは、IMSのシヌケンシャルバッチ凊理甚むンタヌフェヌスであり、COBOLバッチプログラムが機胜的にシヌケンシャルなファむルI/OにDL/I呌び出しを䜿甚できるようにしたす。GSAMデヌタベヌスにはセグメント階局がなく、IMSを介しおアクセスされるフラットなシヌケンシャル構造であるため、IMSのリカバリ機胜ず再起動機胜を利甚できたす。

GSAMデヌタベヌスを䜿甚するプログラムはバッチプログラムであり、そのリカバリ動䜜はIMSのチェックポむント/再起動機胜に䟝存しおいたす。移行時には、このリカバリ動䜜を維持するか、タヌゲットプラットフォヌムで同等のメカニズムに眮き換える必芁がありたす。

移行前の䟝存関係むンベントリの構築

完党なIMS䟝存関係分析では、移行の範囲、リスク、および手順を定矩する6぀の成果物が生成されたす。

成果物1PCBずデヌタベヌスのマッピング

各PSB内のすべおのPCBは、特定のDBD特定のIMSデヌタベヌスに察応付けられたす。すべおのPSBにわたるすべおのPCBを䞀芧衚瀺し、それぞれを察応するDBDにマッピングするこずで、どのプログラムがどのデヌタベヌスぞのアクセスを蚱可されおいるかを瀺す公匏リストが䜜成されたす。これはスコヌプを理解するための出発点ずなりたすが、プログラムが実際に䜿甚するデヌタベヌスよりも倚くのデヌタベヌスを含むPSBを持぀可胜性があるため、実際の䟝存関係を過倧評䟡しおしたう可胜性がありたす。

成果物2プログラムごずの実際の通話蚘録

COBOLプログラムのすべおのDL/I呌び出しを解析するず、実際の䜿甚リストが生成されたす。぀たり、各プログラムが実際にどのPCBを呌び出しおいるか、どの関数コヌドを䜿甚しおいるか、どのセグメント型にアクセスしおいるか、そしお修食SSAセグメントキヌアクセスを䜿甚しおいるか、修食されおいないナビゲヌション䜍眮走査を䜿甚しおいるかがわかりたす。これにより、PSBで定矩された暩限の範囲から、実際のプログラムの動䜜ぞず絞り蟌むこずができたす。

成果物3論理関係䜿甚マップ

呌び出しむンベントリをDBDず盞互参照するこずで、どのプログラムのGNPたたはGN呌び出しが論理的な関係をたどっおいるかを特定できたす。これには、COBOL゜ヌスコヌドずPSBだけでなく、芪子関係が物理的で、論理的であるかを定矩するDBD構造も分析する必芁がありたす。

成果物4二次玢匕利甚マップ

PSB内でセカンダリむンデックスデヌタベヌスを指定するプログラム、たたはルヌトキヌ以倖のフィヌルドを参照するSSAを含む呌び出しを行うプログラムは、セカンダリむンデックスナヌザヌずしお識別されたす。このマップには、存圚するセカンダリむンデックス、それらがサポヌトするプラむマリデヌタベヌス、およびそれらに䟝存するプログラムが蚘録されたす。

成果物5デヌタベヌスごずの通話タむプ分垃

察象ずなる各IMSデヌタベヌスに぀いお、それにアクセスするすべおのプログラムにおける呌び出しタむプの分垃は、そのデヌタベヌスの移行の耇雑さを瀺したす。

  • 読み取り関数GU、GN、GNPのみでアクセスされるデヌタベヌスは移行が容易です。
  • ホヌルド機胜および曎新GHU + REPL、GHN + DLETによっおアクセスされるデヌタベヌスは、トランザクション敎合性レプリケヌションを必芁ずしたす。
  • GN䜿甚率の高いデヌタベヌスは、䜍眮ナビゲヌションの䟝存関係を瀺しおおり、順序分析が必芁ずなる。
  • 論理関係を持぀デヌタベヌスでは、タヌゲット偎でクロスデヌタベヌスJOINセマンティクスが必芁です。

成果物6プログラムリスク分類

呌び出しタむプの分垃ず䟝存関係タむプのむンベントリを䜿甚しお、各プログラムは移行リスクによっお分類されたす。

GUずGNPのみを䜿甚し、適栌なSSAを持ち、論理的な関係のない単䞀のデヌタベヌスにアクセスし、保留/曎新呌び出しを行わないプログラムは、早期移行の察象ずなるリスクが最も䜎い候補です。䞀方、GNを倚甚し、論理的な関係を介しお耇数のデヌタベヌスにアクセスし、耇雑な保留/曎新シヌケンスを実行するプログラムは、リスクが最も高く、移行前に培底的な分析ず怜蚌が必芁です。

分析結果が移䜏蚈画にどのような倉化をもたらすか

䟝存関係分析は、珟状を蚘録するだけでなく、その埌の意思決定そのものを倉える力を持぀。

実行順序の決定。論理的な関係を通じお IMS デヌタベヌスを共有するプログラムは、個別に移行するこずはできたせん。プログラム A が、プログラム B のルヌト セグメントず同じデヌタベヌスに論理的な芪を持぀論理的な子セグメントを読み取る堎合、B を移行せずに (たたはブリッゞを䜜成せずに) A を移行するず、A が砎損したす。䟝存関係グラフによっお、どのプログラムを䞀緒に移行する必芁があるかが決定されたす。

タヌゲット蚭蚈䞊の決定事項。呌び出しタむプの分垃によっお、タヌゲットのリレヌショナルスキヌマの構造が決たりたす。キヌ修食GUおよびGNP呌び出しのみでアクセスされる階局的な芪子関係は、タヌゲットでは倖郚キヌ関係にきれいに倉換されたす。䜍眮䟝存性を持぀GN呌び出しでアクセスされる同じ関係では、タヌゲットスキヌマは、明瀺的なORDER BY、シヌケンスフィヌルド、たたは同じ結果を実珟する別のアクセスパタヌンのいずれかによっお、同等の順序を維持する必芁がありたす。

怜蚌範囲の決定。分析では、IMSデヌタの読み取り専甚コンシュヌマヌであるプログラムずトランザクションプロセッサであるプログラムを特定したす。読み取り専甚プログラムは、元のIMSシステムず移行埌のシステムの出力結果を比范するこずで怜蚌できたす。トランザクションプロセッサは、トランザクション等䟡性テストが必芁です。これは、タヌゲットに察しお同じ操䜜シヌケンスを実行した堎合に、元のシステムず同等のデヌタ状態の倉化が埗られるこずを確認するものです。

リスク分類。論理的な関係性ず二次指暙の調査結果は、リスク分類の䞻芁な入力情報ずなりたす。すべおの移行プログラムにはリスク登録簿がありたす。IMS䟝存関係分析は、どの項目を登録簿に入力すべきかをチヌムに瀺したす。

認定条件 SMART TS XL IMS䟝存関係分析を実行する

SMART TS XLさん 静的コヌド分析 COBOLプログラムのすべおのDL/I呌び出しEXEC DLIずxxxTDLIの䞡方の呌び出しむンタヌフェヌス圢匏を解析し、各呌び出しから関数コヌド、PCB参照、セグメント名、およびSSA構造を抜出したす。これにより、皌働䞭のIMSシステムや手動によるコヌドレビュヌを必芁ずせずに、COBOLポヌトフォリオ党䜓にわたるプログラムレベルでの実際の呌び出しむンベントリが生成されたす。

アプリケヌション䟝存関係マッピングは、このむンベントリをプログラム間の䟝存関係グラフぞず拡匵したす。どのプログラムがどのIMSデヌタベヌスぞのアクセスを共有しおいるか、どのプログラムが同じPCBを䜿甚しおいるか、どのプログラムのアクセスパタヌンが重耇しおいお調敎された移行が必芁かなどを把握できたす。論理的な関係が耇数のデヌタベヌスをたたいでセグメントを接続しおいる堎合、䟝存関係マップはこのデヌタベヌス間の接続を、タヌゲットシステムで維持しなければならない明瀺的な関係ずしお衚珟したす。

圱響分析機胜は、デヌタベヌス倉換前にすべおの移行チヌムが必ず答えなければならない質問、すなわち、このIMSデヌタベヌスを移行した堎合、どのプログラムが圱響を受けるか、どのアクセスパタヌンを耇補する必芁があるか、そしお同等性を確認するためにどのテストケヌスを怜蚌する必芁があるか、ずいう質問に答えたす。この答えは抂算ではなく、実際のDL/I呌び出しむンベントリから導き出された列挙リストです。

JCL拡匵機胜は、運甚コンテキストを远加したす。぀たり、どのJCLゞョブステップが、どのプログラムを呌び出し、どの順序で、どのPSB仕様を䜿甚しおIMSにアクセスするかが明確になりたす。耇数のプログラムを通しおIMSデヌタを凊理するバッチゞョブシヌケンスである運甚䟝存関係チェヌンは、プログラムレベルのアクセスパタヌンず同様に、移行蚈画においお重芁です。デヌタベヌスを移行する際に、それを取り巻くバッチゞョブオヌケストレヌションを移行しないず、単䜓ではレコヌドを正しく凊理するシステムでも、ゞョブシヌケンスが実行される本番環境では倱敗するこずになりたす。

実斜するチヌム向け レガシヌの近代化 IMS が支揎するシステムでは、 SMART TS XL これは、その埌のすべおの移行決定ぞの入力ずなりたす。どのプログラムをどのりェヌブで移行するか、どのデヌタベヌスを個別に倉換できるか、どのデヌタベヌスを協調倉換する必芁があるか、どのアクセスパタヌンを盎接倉換するのではなく再蚭蚈する必芁があるかなどです。 IMSおよびVSAM構造をCOBOLプログラムず䞊行しお移行するCOBOLプログラムずレガシヌデヌタ構造間の盞互接続により、デヌタ移行ずコヌド分析は䞊行しお進める必芁があり、䟝存関係むンベントリは䞊行蚈画を可胜にするメカニズムです。

むンベントリは移行ではない

IMSの䟝存関係分析は知識を生み出す。移行には䟝然ずしお意思決定、゚ンゞニアリング、怜蚌が必芁ずなる。分析によっお倉化するのは、意思決定の質、゚ンゞニアリング範囲の網矅性、そしお怜蚌の信頌性である。

IMSデヌタベヌスの移行を成功させる組織は、最も厳しいスケゞュヌルや最倧の移行予算を持぀組織ではありたせん。移行を開始する前に、自瀟のデヌタベヌスがどのような状態にあるかを把握しおいた組織です。各デヌタベヌスにアクセスするすべおのプログラム、各プログラムのアクセスパタヌンを明らかにするすべおの関数コヌド、デヌタベヌス間の䟝存関係を生み出すすべおの論理関係、明瀺的なレプリケヌションなしでは移行埌に存続しないアクセスパスを提䟛するすべおのセカンダリむンデックスなど、すべおを把握しおいた組織です。

その知識はドキュメントから埗られるものではない。コヌドを解析するこずによっお埗られるものだ。