0

基本的にサードパーティの REST API からデータをポーリングし、取得したデータをループ処理し、各レコードを Meteor コレクションに挿入または更新する Meteor ベースのシステムがあります。

しかし、それは私を襲った: エントリがサードパーティのデータから削除されるとどうなりますか?

  • データを挿入/更新してから、コレクションをループして、フェッチされたデータに含まれていないものを見つけます。確かに、それはそれを行う 1 つの方法です。

  • もう 1 つの方法は、コレクションをクリアし、フェッチしたデータからすべてを書き換えることです。

しかし、何千ものエントリ (現在は 1500 以上のレコードで、爆発する可能性があります) があるため、どちらも非常に遅く、CPU を消費しているようです。

データから削除されたアイテムがコレクションでも削除されるように、JS オブジェクトから Meteor/Mongo コレクションにデータをミラーリングするための最適な手順は何ですか? .

これは、同様の偉業を成し遂げることができる他の言語に適用できる可能性があるため、ここではコードは無関係だと思います。

4

1 に答える 1

1

この種の使用法では、より最適化されたものを使用してみてください。meteor の連中は、データを取得/設定するための一種のレプリカ mongodb セットとして meteor を使用することに取り組んでいます。

現時点では、mongodb の oplog を使用してパフォーマンスを大幅に向上させる Smart-Collections があります。特定の最適化を行わなくても、1 つのサイズですべてのシナリオに対応できます。これを示すベンチマークがあります。

Meteor 1.0 が出たら、独自の mongodb ドライバーが最適化されると思います。

これは何千ものエントリに役立つと思います。毎秒何千ものドキュメントを変更している場合は、mongodb に近いものを取得する必要があります。Meteor は、これにはあまり最適ではない多くのキャッシュ技術を採用しています。データベースを5秒ごとにポーリングしてキャッシュを更新すると思います。

スマート コレクション: http://meteorhacks.com/introducing-smart-collections.html

このシナリオで役立つかどうか知りたいので、それが役立つかどうかお知らせください。

これが機能しない場合は、すべてがメモリ内に保存されるため、redis も役立つ場合があります。ユースケースが何であるかはわかりませんが、永続化が必要ない場合、redis は mongo よりも多くのパフォーマンスを絞り出します。

于 2013-10-24T21:27:07.433 に答える