3

Meteor Collection は、mongodbのTTL (Time to live) 機能を使用する方法を提供しますか? これは、一時データを使用する一種のマルチユーザー セッションに必要です。変更が完全に反応的であることは重要ではありません。

4

1 に答える 1

0

この回答の 2 つの部分:

1) インデックスを適用するには、Meteor で _ensureIndex メソッドを使用できますが、_ が示すように、このサポートはいつでもプルできます。渡すことができるものに関しても制限があるかもしれませんが、次のような単純なものの場合

db.log.events.ensureIndex( { "status": 1 }, { expireAfterSeconds: 3600 } )

.. 次に、mongo-livedata の標準実装

self._collection._ensureIndex(index, options);

...で十分なはずです。

2) テストはしていませんが、TTL が機能することは確かです。(一方で、キャップ付きコレクションをテストしましたが、動作します)。おわかりのように、データの変更を取得するという点で DDP が行うことは 2 つあります。

  • meteorが駆動したことがわかっているすべての書き込み操作の後にmongoをポーリングします
  • とにかく10秒ごとにmongoをポーリングします(帯域外更新用)

その 2 番目の部分は、手動で mongo シェルに移動し、削除/追加/更新することができ、その後 10 秒以内に変更が反映されることを意味します。

その上で、反応するまでの 10 秒の遅延に満足している場合は、TTL が機能するはずです。

これに満足できない場合は、Arunoda のスマート コレクションを試すことができます。詳細については、http://meteorhacks.com/introducing-smart-collections.html を参照してください。それらは oplog (ある場合) から読み取るため、反応性の遅延を減らすことができます。この概念は興味深いものですが、David Glasser がこの投稿でカバーしている制限があることに注意してください: https://groups.google.com/d/msg/meteor-talk/h-ulU7guh1Y/nTfJ1F8uGxwJ

いずれにせよ、幸運を祈ります。あなたの調子を教えてください。

于 2013-08-19T06:55:11.697 に答える