1

次のテーブルがある状況があります。

従業員- emp_id、emp_name、emp_address

Employee_assets - emp_id(FK)、asset_id、asset_name (従業員の場合は1-多数)

Employee_family_members - emp_id(FK)、fm_name、fm_relationship (従業員の場合は1-多数)

ここで、たとえば 1000 人の従業員のバッチでこれらのテーブルからデータを読み取り、DB 内の家族や資産との関係に基づいてこれらの 1000 レコードの XML 出力を作成する、スケジュールされたケトル ジョブを実行する必要があります。これは、従業員ごとにネストされた XML レコードになります。

私のシナリオでは、このケトル ジョブのパフォーマンスが非常に重要であることに注意してください。

ここで 2 つの質問があります-

  1. スキーマ内の 1 対多の関係でデータベースからレコードを取得する最良の方法は何ですか?
  2. XML 結合ステップがパフォーマンスに影響する場合、XML 出力構造を生成する最善の方法は何ですか?
4

2 に答える 2

0

データを取得するには、複数のデータベース ルックアップ フィールドまたはデータベース結合ステップを使用できます。パフォーマンスに関しては、結合の方が高速になる可能性が高いと思いますが、それはすべて、使用するクエリの複雑さとその記述方法などに依存します.

于 2016-09-27T15:32:06.947 に答える
0

これが私がこれを達成した方法です。

1 対多からの XML 作成を示す変換

そのため、基本テーブルを読み取り、続いてその XML チャンクを作成するテーブル入力ステップが 1 つあります。その後、フローでは、リレーションシップ キーを渡す別のデータベース結合ステップとして、1 対多リレーションシップ (子テーブル) を使用しています。データが取り出されると、子行の XML が生成されます。これは次に、修正された Java Script 値ステップ (行のマージ) に渡され、trans_Status = SKIP_TRANSFORMATION同様の行を使用してコンテンツがマージされます。同様の行がマージ/連結putRow(row)されると、次のステップへの出力としてダンプするために使用されます。これには、関係キーに基づいて SQL を並べ替える必要があることに注意してください。これは問題なく動作しているので、続行できます。

于 2016-10-05T08:26:01.947 に答える