0

XML リクエストを受け取るフローがあります。次に、Oracle データベースに対してクエリを実行する jdbc アウトバウンド エンドポイントを呼び出します。クエリの結果は、xquery トランスフォーマーを使用して XML に変換され、返送されます。データベースからの sql は最大で 50,000 行を返しますが、xquery トランスフォーマーによって作成された XML ファイルは 1 行あたり 60 行あり、非常に大きな XML ファイル (15 ~ 100 MB) になります。Mule は XML ファイルの「マッピング/作成」に非常に長い時間を費やしています。どうにかしてプロセスを高速化できないか、またはアプローチを再考する必要があるかどうか疑問に思っています。

よろしく、

マグナス

4

2 に答える 2

0

Mule のドキュメントから直接:

Efficient Transformations with DelayedResult

Mule contains a special XML output format called DelayedResult. This format allows very efficient XML transformations by delaying any XML serialization until an OutputStream is available.

For example, here is an XSLT transformer set up to use DelayedResult:

<mxml:xslt-transformer name="transform-in" 
                       xsl-file="xslt/transform.xslt"
                       returnClass="org.mule.module.xml.transformer.DelayedResult"/>

If the result of this transformation were being sent to an HTTP client, the HTTP client would ask Mule for an OutputHandler and pass in the OutputStream to it. Only then would Mule perform the transformation, writing the output directly to the OutputStream.

If DelayedResult were not used, the XML result would first be written to an in-memory buffer before being written to the OutputStream. This will cause your XML processing to be slower.

したがって、XQuery トランスフォーマーの代わりに XSLT トランスフォーマーを使用する方が理にかなっています。

于 2013-02-01T13:39:30.563 に答える
0

Zorba は、JDBC コネクターとストリーミング機能を提供します: http://www.zorba-xquery.com/ それはまさにあなたが探しているものかもしれません。

于 2013-01-31T09:20:25.807 に答える