4 リバースエンジニアリング戦略

カスタマイズされたリバースエンジニアリングのプロセスと、高度なメタデータを取得するためにリバースエンジニアリング・ナレッジ・モジュールで使用される戦略について理解することが重要です。

この章の内容は次のとおりです。

4.1 カスタマイズ・リバースエンジニアリング・プロセス

Oracle Data Integratorの標準リバースエンジニアリングでは、指定されたデータ・サーバーへの接続に使用されるドライバの機能に依存して、データ構造を記述したリッチ・メタデータを返します。

このメタデータが正確でないか、データ・サーバーから特定のメタデータを取得してリッチ化する必要がある場合は、カスタマイズ・リバースエンジニアリングを使用します。

4.1.1 SNP_REV表

Oracle Data Integratorリポジトリには、SNP_REV表と呼ばれるメタデータ・ステージング表のセットが含まれています。

これらのSNP_REV表の内容は、次のツールを使用して管理されます。

  • OdiReverseResetTableは、指定されたモデルに対してこれらの表の内容をリセットします。

  • OdiReverseGetMetadataは、標準のJDBCリバースエンジニアリングと同じプロセスを使用してこれらの表をロードします。

  • OdiReverseSetMetadataは、これらのステージング表の内容を、データストア、列、制約などを記述するリポジトリ表に適用します。このアクションによってOracle Data Integratorモデルが変更されます。

SNP_REV表の詳細はSNP_REV表のリファレンスを、リバースエンジニアリング・ツールの詳細はOracle Data Integrator開発者ガイドを参照してください。

4.1.2 カスタマイズ・リバースエンジニアリング戦略

カスタマイズ・リバースエンジニアリング戦略は、すべてのRKMで共通のパターンに従います。

このパターンには次のステップが含まれます。

  1. OdiReverseResetTableツールをコールし、SNP_REV表の前の実行結果をリセットします。
  2. SNP_REV表をロードします。これは次の3つの主要パターンを使用して実行されます。
    • メタデータ・プロバイダからメタデータを取得し、それらをSNP_REV表にロードします。これはRKM Oracleの例に使用されるパターンです。

    • サードパーティ・プロバイダからメタデータを取得します。これはRKM File (FROM EXCEL)の例に使用されるパターンです。メタデータは、モデルに記述されたファイルからではなく、これらのファイルの記述を含むMicrosoft Excelスプレッドシートから抽出されます。

    • OdiReverseGetMetadataを使用してSNP_REV表を事前にロードし、これらの表をターゲットとする問合せを使用してメタデータを修正/リッチ化します。

  3. OdiReverseSetMetaDataツールをコールして、現在のOracle Data Integratorモデルに変更を適用します。

RKMでは、ソース・コマンドとターゲット・コマンドは次のように機能します。

  • 「自動コミット」トランザクションで「未定義」テクノロジにより指定された「ターゲットに対するコマンド」は、リポジトリのSNP_REV表をターゲットとします。

  • 「自動コミット」トランザクションで「未定義」スキーマにより指定された「ソースに対するコマンド」は、リバースエンジニアリングのデータ構造を含むデータサーバーからデータを取得します。メタデータ・プロバイダ(たとえば、Excelスプレッドシート)を使用する場合は、特定のテクノロジと論理スキーマを指定する必要があります。

  • ツール(OdiReverseSetMetadataなど)のコールは、ODIツール・テクノロジにより、「ターゲットに対するコマンド」で指定されます。

4.2 ケース・スタディ

この項では、リバースエンジニアリング戦略の例を示します。

4.2.1 RKM Oracle

RKM Oracleは、データベース・ディクショナリをメタデータ・プロバイダとして使用するリバースエンジニアリング・プロセスの一般的な例です。

次のコマンドは、OracleのRKMから抽出したもので、ここに例として示します。このナレッジ・モジュールのコードはOracle Data Intagrator Studioで編集して確認できます。

4.2.1.1 SNP_REV表のリセット

このタスクは、現在のモデルに対してSNP_REV表の内容をリセットします。

ターゲットに対するコマンド(ODIツール)

OdiReverseResetTable -MODEL=<%=odiRef.getModel("ID")%>
4.2.1.2 表の取得

このタスクは、Oracleシステム表から表のリストを取得し、その内容をSNP_REV表にロードします。

ソースに対するコマンド

Select	t.TABLE_NAME			TABLE_NAME,	t.TABLE_NAME			RES_NAME,	replace(t.TABLE_NAME,'<%=odiRef.getModel("REV_ALIAS_LTRIM")%>','')		TABLE_ALIAS,	substr(tc.COMMENTS,1,250)		TABLE_DESC,	'T' TABLE_TYPE,	t.NUM_ROWS			R_COUNT,	SUBSTR(PARTITIONING_TYPE ,1,1) PARTITIONING_TYPE,	SUBSTR(SUBPARTITIONING_TYPE,1,1) SUBPARTITIONING_TYPEFrom	ALL_TABLES	t,	ALL_TAB_COMMENTS 	tc,	ALL_PART_TABLES tp
Where ...
...

ターゲットに対するコマンド

insert into SNP_REV_TABLE(	I_MOD,	TABLE_NAME,	RES_NAME,	TABLE_ALIAS,	TABLE_TYPE,	TABLE_DESC,	IND_SHOW,	R_COUNT,	PARTITION_METH,	SUB_PARTITION_METH)values(	<%=odiRef.getModel("ID")%>,	:TABLE_NAME,	:RES_NAME,	:TABLE_ALIAS,	'T',	:TABLE_DESC,	'1',	:R_COUNT,	:PARTITIONING_TYPE,	:SUBPARTITIONING_TYPE)
4.2.1.3 ビュー、パーティション、列、FK、キーおよびその他のOracleメタデータの取得

後続のコマンドでは、同じパターンを使用してOracleシステム表の内容からSNP_REV表をロードします。

4.2.1.4 メタデータの設定

このタスクは、現在のモデルに対してSNP_REV表の内容をリセットします。

ターゲットに対するコマンド(ODIツール)

OdiReverseSetMetaData -MODEL=<%=odiRef.getModel("ID")%>