XML Framework

XML Frameworkとは

HULFT Squareでは、処理コンポーネント間でのデータの受け渡しをする際には、必ずこのXML Frameworkを介して処理を行います。そのためXML Frameworkは、HULFT Squareのデータハンドリングの心臓部にあたるといえます。

XML Frameworkの役割

XML Frameworkを経由してデータをやり取りすることにより、各処理コンポーネントはお互いにデータを透過的に扱えるようになります。

XML Frameworkには大きく2つの役割があります。

  • データの保存形式の差異を吸収する

    HULFT Squareでは、処理コンポーネントごとに大容量データを扱うようにするかどうかの設定が可能です。大容量データ処理を有効にしなかった場合と有効にした場合とでは、結果データの内部的なデータ保存形式が異なります。

    大容量データ処理を有効にしなかった場合には、結果データはメモリに保存され、大容量データ処理を有効にした場合には結果データはファイルに保存されます。

    結果データの保存先がメモリであってもファイルであっても、XML Frameworkが保存形式の差異を吸収するため、処理コンポーネントからは単一のデータ形式に見えます。このため、処理コンポーネントの実装は保存形式に依存しません。

    = 参照 =

    大容量データについては、「大容量データの対応」を参照してください。

  • データモデルの差異を吸収する

    内部データモデルには、構造を柔軟に設計できるXML型と、高速処理や大容量データ処理に適応したテーブルモデル型があります。

    内部的には2つのデータモデルが存在するものの、XML Frameworkがデータモデルの差異を吸収するため、処理コンポーネントからは単一のデータモデルに見えます。

    = 参照 =

    XML型とテーブルモデル型については、「データモデル 」を参照してください。

    XML Frameworkを経由することにより、処理コンポーネント同士はお互いに緩やかな結合となり、ある処理コンポーネントの設定や状態の変更が、ほかの処理コンポーネントに影響をおよぼさなくなります。

    たとえば、データベースからCSVにデータを書き込む処理を作成した場合、当初はデータ量が少なく大容量データ処理を有効化せずに実行していたスクリプトが、要求の変更により大容量データの読み取りをサポートしなければならない状況になったとしても、データベースコネクター読み取り処理の大容量データの設定を有効にするだけです。 書き込み対象のCSVコネクターの設定を変更する必要はありません。また、CSVに書き出すのではなく、XML文書に書き出すように変更があった場合でも、CSVコネクターをXMLコネクターに変更するだけです。

データモデル

XML Frameworkで使用されているデータモデルは、テーブルモデル型とXML型があります。

テーブルモデル型

テーブルモデル型とは、データを高速に処理(読み取り、変換、および書き込み)するためのデータモデルです。

テーブルモデル型は、CSV形式のデータやデータベースのレコード/カラム情報など、二次元配列として表現できるデータモデルを扱う際に適しています。

テーブルモデル型は、実際のデータ(データベースの場合にはデータベースから抽出したデータ)以外の情報はほとんど生成されないため、非常にコンパクトなデータモデルとなっています。

また、内部では、配列にアクセスするのと同様のデータアクセス速度となるため、非常に高速に処理を行うことができます。

= 参照 =

テーブルモデル型に対応しているコンポーネントについては、各コネクターのデータモデルの項を参照してください。

スキーマ

テーブルモデル型のスキーマ構造は以下のとおりです。基本的に「行」、「列」の情報を保持しています。

<table>
  <row>
    <column></column>
    <column></column>
       :
  </row>
  <row>
    <column></column>
    <column></column>
       :
  </row>
    :
</table>

テーブルモデル型は上記のように同一のスキーマであるため、テーブルモデル型同士のデータを入出力する際に、値の変換やカラム順序の変換がない場合にはMapperは必要ありません。 Mapperを使用しない場合には、カラム順序は出現順序で処理されます。

Mapperとの関係

Mapperの入出力スキーマにテーブルモデル型のコンポーネントを指定した場合には、テーブルモデル型専用の変換エンジンに切り替えられます。テーブルモデル型専用の変換エンジンは大容量データに対応しており、非常に高速に変換処理が行われます。

テーブルモデル型専用変換エンジンは一部ロジックを除き、row要素(行)のループのみとなり、row要素(行)を超えての値のマッピングを行うことはできません。つまり、1行目の内容を2行目の内容に含めることはできません。

また、テーブルモデル型のコンポーネントをMapperの入力元または出力先とした場合、入出力スキーマの読み込みを行う必要はありません。

XML型

XML型とはデータを中間データとしてXML文字列で保持するデータモデルです。

XML型は構造を自由に設計できるため、処理によって構造が異なる場合に適しています。

= 参照 =

XML型に対応している処理コンポーネントについては、各コネクターのデータモデルの項を参照してください。

スキーマ

処理コンポーネントや操作によって異なります。

XMLコネクターなどのように特にスキーマを持たないものや、FTPコネクターのように固定のスキーマを持つものなどがあります。

Mapperとの関係

XML型がMapperの入出力のどちらかに設定された場合には、繰り返しのノードを自由に指定できます。 これは、構造を自由に変換できることを意味します。

このようにXML型は非常に柔軟ではありますが、Mapper内部ではDOM(Document Object Model)形式で処理されるため、メモリ使用量が多くなります。

また、XML型のコンポーネントをMapperの入力元または出力先とした場合、一部コンポーネントを除き、入出力スキーマの読み込みを行う必要があります。

= 参照 =

入出力スキーマの読み込みについては、「スキーマ編集」を参照してください。