Skip to main content

 

 

 

 

Template:OutSystems/Documentation_KB/Breadcrumb_New_Layout

 

 

Template:OutSystems/OSLanguageSwitcher

 

 

 

OutSystems

データ処理を最適化する

画面のデータ処理は効率的に行う必要があります。そうすることでユーザーエクスペリエンスが向上します。

通常、次のような場合にデータ処理が非効率になります。

1.データモデルが画面のユースケースをサポートしていない場合。たとえば、複雑な条件によって大量のデータをグループ化して平均やカウントなどを取得する必要があるときや、リストのレコードごとにその場で値を計算する必要があるときがこれに該当します。

2.無駄のないSQLクエリではなく、Aggregateやループが使用されている場合。たとえば、単一のSQLクエリですべての情報を結合するのではなく、単一のAggregateを使用してマスターエンティティからデータを取得し、ループ内のAggregateで各行の情報を収集してレコードリストに追加する場合がこれに該当します。

影響

必要な情報の取得にかかる時間の長さ、多数のクエリや計算、過度なループの使用により、Webサーバーやデータベースサーバーに過度の負荷がかかります。

ベストプラクティス

  • データ要件を把握し、画面のサポートに必要な情報を網羅したデータベースモデルを設計することで、画面リクエストのたびに情報を計算しなくてすむようにします。
  • そのためには、すべての計算が以下のように事前に行われるようにする必要があります。

    • データが生成されるときに計算します。たとえば、各従業員の休暇取得可能日数のリストが必要なときに日数を計算するのではなく、休暇期間を追加するたびに従業員詳細の残りの取得可能日数を即座に更新します。

    • 非同期ジョブ(タイマーや、Automatic ActivityによるBPT)でデータをあらかじめ準備します。たとえば、ダッシュボードをサポートする集積テーブルを用意します。

  • JOINやSQL関数を適切に使用し、必要なすべてのデータを1つのクエリに集めます。

  • 画面で複数のクエリを使用して様々なExpressionを呼び出すのではなく、Preparationで複数のクエリを使用してデータを取得するようにします。

  • あらゆる状況への対処が必要となる非効率的なデータ処理を伴う画面ではなく、様々な専用画面を作成します。

  • Was this article helpful?