1

ドキュメントの期限切れ TTL 設定について質問があります。

私のユースケース:

私のアプリケーションは一種のアグリゲーター サービスです。ソースごとに 1 つの新しいコレクションを作成します。ソースが行き来する場合があります (read die)。私のデータ アクセス パターンは、読み取り回数が少なく、書き込み回数が多いです。一部のコア コレクション (変更されない) にはインデックスが付けられますが、アプリケーションがソースごとに作成するコレクションにはインデックスが付けられません。通常、そのコレクションからデータ全体またはデータの部分サブセット (10 レコードなど) が取得されるため、実際にインデックスを作成する必要はありません。

問題:

ソースからのこれらの動的コレクションは大きくなり、一定期間が経過すると、これらのコレクションからの古いドキュメントは必要なくなります。そこで「TTL設定の期限切れ」を適用しようと考えていました。しかし、私はそれについていくつか疑問を持っていました。

質問:

  1. 検索に役立つインデックスを実際に作成しますか。つまり、これらのドキュメントにインデックスを付けたくないということです。現在、コレクションからすべてを取得しています。それが私たちのユースケースです。
  2. そのコレクション内のすべてのドキュメントの有効期限が切れたときに、コレクションも削除しますか。これは内部の詳細かもしれませんが、これについての手がかりが役立つと思います
4

1 に答える 1

3

ドキュメントの期限切れ TTL 設定は、expireAfterSeconds フラグが設定された BSON 日付オブジェクトのインデックスを通じて実装および適用されます。したがって、TTL を機能させるには、そのフィールドにインデックスが必要です。ドキュメントのインデックス作成に問題がある理由は定かではありませんが、これが TTL が機能する唯一の方法です。

作成されたインデックスは検索に役立ちますか - はい、そうです。これをテストするには、expireAfterSeconds を使用して日付オブジェクトにインデックスを作成し、そのフィールドに対してクエリを実行し、explain() を使用します。検索にインデックスが使用されていることがわかります。

コレクションの削除に関しては、そうではありません。期限切れのドキュメントを削除するだけです。

于 2014-04-17T18:24:16.410 に答える