バッチ高速化フレームワーク

大量データを処理するバッチでは厳しい性能要件が求められる場合が多くあります。
多くの場合はSQL文のチューニングなどの個別対応で性能向上を目指しますが、アーキテクチャの変更にまで及ぶ大幅なケースも少なくありません。プロアクシアではこれらの問題を解決するためのストリームベースのバッチ高速化フレームワークを提供しています。

■ストリームベースのデータ処理

ストリームベースのデータ処理はCEP(complex event processing)のように大量ストリームデータをあるまとまり単位で処理する方法をRDBMSに応用した手法です。SQL文を実行し大量データをある単位(チャンク)ごとに切り出して、連続的に読み出しながら、ビジネスロジックを並列処理して結果をテーブルに高速出力(BulkCopy)します。

【主なメリット】
・処理するデータのみメモリにロードされるので大量データであってもメモリリソースの消費は少ない
・発行されるSQL文はストリームの読み出しが中心で少数で処理コストが読みやすくチューニングポイントがわかりやすい
・チャンクはビジネス的に意味のある単位になりビジネスロジックの記述も自然で保守性が向上(高速化のトリックが不要)

上記のストリーム処理の考えをフレームワーク化したのがプロアクシアが提供するバッチ高速化フレームワークです。

【参考:BulkCopyを利用した更新処理の効果】

INSERT UPDATE DELETE
VB.NETからSQL文を実行 38.10秒 37.87秒 37.96秒
ストアドプロシージャ(カーソルループ) 11.79秒 17.81秒 17.38秒
VB.NETからBulkCopyを実行
(更新・削除はBulkCopyしたデータを利用して一括更新)
0.55秒 0.74秒 1.36秒

※10万件処理のデータを開発用ノートPC1台で実行した結果

Comments are closed.

%d人のブロガーが「いいね」をつけました。