2017-12-26 71 views
0

私は、次の(1つの実行のための詳細)を実行します(春ブーツと春のバッチ付き)は、Java 8バッチ処理を作成する必要があります。Javaの春ブーツ+春のバッチ:プロセス膨大な量の情報

  • 取得私は5つの異なるクエリを起動する必要があることがわかっているN異なる情報源(3つのWebサービス、3つの異なるデータベース)からの情報は、約14のサービス方法を呼び出します。私は、情報の量が合計で処理される約50万~1,000,000の情報データであると計算した。
  • 処理情報(単純な数学的計算ですが、以前の情報をすべて利用可能にする必要があります)。
  • 複数の計算を行います。
  • 結果をデータベースに保存します。

このプロセスは、特定の入力データに依存します。これにより、プロセスは1日のうちのある時刻に同時に23回実行されます(異なる基本データによる実行、異なる情報は共通情報ではないため)。

私が見る問題は、最終的に計算を実行するために操作する情報の量に関連しており、情報をどのように操作するのかが明確ではありません。

  • Javaで直接:これはJVM(Stackoverflowなど)でパフォーマンス上の問題が発生する可能性があるため、これはオプションではないことを理解しています。
  • SQLデータベースを使用しない:わかりませんが、面白いかもしれません。
  • キャッシュシステム:わかりませんが、面白いかもしれません。
  • いくつかのDBに対するテンポラリテーブル:このオプションは私にとっては面白いようでしたが、テンポラリテーブルにすべての情報を挿入し、クエリを使用して最終結果を得るために同じ計算を実行できます。

情報の操作に使用できる代替またはシステムに関するアイデアはありますか?

ありがとうございました!

+0

この質問はあまりにも広すぎます。 1M整数など。 jvmについては絶対に**問題はありません**、あなたは1秒未満でその量のデータを見やすく計算できます。パフォーマンスを心配する前に、少なくとも1度はそれを実現するためにそれを実装してください。その後、あなたは戻って、あなたが持っているデータとあなたが苦労している場所をより詳細に説明することができます。 – luk2302

+0

問題は、取り出される情報が基本的なタイプではなく、すべてが複雑なオブジェクトであるため、1,000,000もの大きさのリストを持つことが最適ではないと心配しています。問題にぶつかる。 – mgi1985

+0

"複合オブジェクト"あたり1000バイトでさえ、1GBのRAM使用率、つまり「何もありません」となります。私の主張は:パフォーマンスの問題に直面していない場合は、パフォーマンスのアドバイスを提供することは絶対不可能です。なぜなら、今のところ、何が欲しいと思うのか、何かをよりよく実行する必要があるからです。 – luk2302

答えて

0

Apache Camelを使用することもできます。それはすべての要件をカバーして別のコンポーネントがありますweb service call、/ JPA​​など

キャメルは、データの大きな金額を扱うことができ、それがstreamingsplitのように、この作業が容易、になりますいくつかの素晴らしい機能を提供しています。

+0

それは面白いaproach、ありがとう! – mgi1985