0

私は、モバイルクライアントだけでなくWebクライアントにもデータ/情報を提供するサーバーを設計しています(フェーズ2)。データはグラフに入力されます。毎日の5年間の株価(最小/最大/平均を表示)をプロットした画像。

1] 3000個のデータポイントをクライアントに送信すると、それは大量のデータを送信してからプロットします。逆に、サーバー上でグラフィックを作成すると、PNGをクライアントに送信できます。どちらが良いですか?

2] 5年間にわたってすべてのポイントをプロットすることは悪い習慣ですか?MySQLが一度に5データポイント(日)を平均して、代わりにそれを返す方法はありますか?

まだ設計段階ですが、この決定がアプリのパフォーマンスに大きく影響することを認識しています。

4

1 に答える 1

0

送信しようとしているデータの量を見積もることができますか? 3000 データ ポイントは、12K (1 つあたり 4 バイトfloat) から 100K (タイムスタンプ + テキスト形式の値) の間の任意の値です。12K は大したことではありませんが、特にモバイル デバイスの場合、100K は重要です。

処理時間も重要です。低レベル言語を使用してサーバー上でデータを生成し、PNG を返すことは、キャンバス上でグラフを生成するよりもはるかに効率的です。

ただし、チャートの解像度について考える必要があります。3000 ポイントをプロットする場合は、水平方向に少なくとも 3000 ピクセルが必要です。最近の最大の画面は2560 ピクセルの幅に達します。つまり、すべてのデータを表示することはできず、いくつかのポイントを非表示にする必要があります。モバイルではもっとひどいです。幅を 200 ~ 300 ピクセルにし、データ ポイントを少なくとも 2 分の 1 にします。

そうは言っても、私は次のアプローチを提案します。

  • 平均を計算し、ブラウザに 100 ~ 200 を超えるデータ ポイントを返しません (興味深い極端な値を失わないように、平均はスマートである必要があります)。

  • ブラウザーで数十の JavaScript チャート ライブラリの 1 つを使用する

  • より詳細な情報が必要になったら、ユーザーはチャートを拡大できます。これにより、サーバーに高解像度のデータが要求されます。

于 2012-12-02T17:12:02.723 に答える