1

Flex Java BlazeDS アプリケーションでは、次の方法で DataBase からデータをフェッチします。

  1. Java への RemoteObject 呼び出しを開始して Flex からデータを要求する
  2. それぞれのクエリを Java で実行し、結果セットを取得して、結果セットをリストとして Flex に渡します。
  3. リモートオブジェクトのresultHandlerでデータを受け取り、配列コレクションに変換して表示します。

この手順は BlazeDS DataSerilization の教科書的な方法ですが、データに何百万ものレコードが含まれている場合、非常に長い時間がかかります。以下のいくつかの統計を見つけてください。

  • Flex から Java を呼び出すのにかかる時間: 5 ミリ秒
  • データベース接続の確立にかかる時間: 3000ms
  • クエリの実行にかかる時間: 120ms
  • 結果セットを反復処理してリストにデータを追加するのにかかる時間: 8000ms
  • Java から Flex にデータを渡すのにかかる時間: 2000 ミリ秒
  • event.result を配列コレクションに変換するのにかかった時間: 6000ms

総所要時間: 19125 ミリ秒 (MySQL データベースの場合)、データベース内の 143,000 レコードの Oracle データベースの場合はそれ以上。

明らかに問題は、Java で ResultSet を List に変換するとき (各レコードを繰り返す必要があります)、および Flex で List を ArrayCollection に変換するときにあります。

プロセスをスピードアップできる方法や手順はありますか?

考えられるプロセスの 1 つは、Java でこれらの反復を回避し、ResultSet を直接 Flex に渡すことです。それは可能ですか?

4

1 に答える 1

1

バックエンドの ORM テクノロジなど、別のデータベース テクノロジを使用することを検討してください。現在、一度に多くのレコードをプルするわけではありませんが、多くのユーザーが一度にレコードをプルするアプリケーションに取り組んでおり、選択した ORM テクノロジにより、JDBC を使用してプロジェクトを開始したときと比較して、応答が大幅に高速化されます。

于 2012-10-25T10:20:56.290 に答える