大量のデータを保存し、グラフのビューを生成するデータベースがあります。グラフのすべてのデータを返す代わりに、定義済みの数のサンプルのみを返します。私が現在これを行う方法は、mongo で map/reduce ジョブを使用することですが、これを行う方法が非常に効率的かどうかはわかりません。14 秒かかり、89000 を超えるサンプルを持つグラフに CPU をペグします。例。
ダウン サンプリングは、「解像度」、つまり (ポイントの総数) / (目的のサンプル数) を計算することによって機能します。次に、スコープ変数を使用して外部のカウントとインデックスを保持します。次に、基本的に各ポイントを見て、解像度とカウント/インデックス変数の現在の状態に基づいて、結果リストに含めるかどうかを決定します。
これは問題なく動作しますが、かなり遅く、おそらくスケーラブルではありません。たとえば、すべてのポイントを返してルビーでダウンサンプリングを行う方が良いか、それとももっと良い方法があるかどうか疑問に思っています。