14

このプロジェクトの要件は奇妙ですが、洞察を得たいと思っています...

約 12,000 行のデータ、約 12 ~ 15 列の CSV ファイルがあります。それを JSON 配列に変換し、JSONP 経由でロードしています (クライアント側で実行する必要があります)。データ セットに対してあらゆる種類のクエリを実行して、より小さなフィルター処理されたデータ セットを返すには、数秒かかります。私は現在 JLINQ を使用してフィルタリングを行っていますが、基本的には配列をループして、条件に基づいて小さなセットを返すだけです。

webdb または indexeddb を使用すると、このフィルタリングを大幅に高速化できますか? この特定のタイプの問題に取り組んでいるチュートリアル/記事はありますか?

4

3 に答える 3

12

http://square.github.com/crossfilter/(メンテナンスは終了しました。新しいフォークについては、https://github.com/crossfilter/crossfilterを参照してください。)

Crossfilterは、ブラウザで大規模な多変量データセットを探索するためのJavaScriptライブラリです。Crossfilterは、100万以上のレコードを含むデータセットでも、調整されたビューとの非常に高速な(<30ms)相互作用をサポートします...

于 2012-05-07T17:08:06.950 に答える
3

変換を適用する前にデータオブジェクト全体をメモリにロードする必要がある場合は、IndexedDBとWebSQLの両方が複雑さを増し、アプリのパフォーマンスを低下させるため、これらを混在させないようにします。

このタイプのフィルタリングでは、Crossfilterのようなライブラリが大いに役立ちます。

IndexedDBとWebSQLがフィルタリングの観点から機能するのは、データセット全体をメモリにロードする必要がない場合、またはロードしたくない場合です。これらのデータベースは、行(WebSQL)と属性(IndexedDB)にインデックスを付ける機能に最適です。

ブラウザデータベースでは、一度に1レコードずつデータベースにデータをストリーミングしてから、一度に1レコードずつデータベースにカーソルを合わせることができます。ここでのフィルタリングの利点は、データを「ディスク」(.leveldbChromeではa、.sqliteFFではデータベース)に残し、事前フィルター手順またはフィルター自体として不要なレコードをフィルターで除外できることです。

于 2012-05-08T00:04:31.497 に答える
3

これは、John Resig が辞書検索 (プログラミング構造ではなく、実際の辞書) について書いた記事を思い出させます。

http://ejohn.org/blog/dictionary-lookups-in-javascript/

彼はサーバー側の実装から始め、次にクライアント側のソリューションに取り組んでいます。現在行っていることを改善する方法について、いくつかのアイデアが得られるはずです。

  • キャッシング
  • ローカルストレージ
  • メモリに関する考慮事項
于 2012-05-07T16:10:52.873 に答える