私は、mongo db で (カスタマイズされた認証の) スケーラブルなセッション テーブルのスキーマ設計に取り組んでいます。Mongo DB のスケーラビリティは設計から継承されており、要件もあることがわかっています。私のユーザーケースはシンプルで、
- ユーザーがログインすると、ランダムなトークンが生成され、ユーザーに付与されます。次に、シャード可能な主キーとしてトークンを使用してセッション テーブルにレコードを挿入します。古いトークン レコードが存在する場合は削除されます。
- トークンを使用したユーザー アクセス サービス
私の質問は、システムが期限切れのセッション キーを削除し続ける場合、セッション コレクションのサイズ (トークン フィールドにパーティションが必要なシャード化された状況を考慮して) が非常に大きくなり、期限切れのセッションの多くの「ギャップ」が含まれる可能性があるということです。この問題 (またはより良い設計) を適切に処理するにはどうすればよいですか?
前もって感謝します。
編集: 私の質問は、ストレージ レベルについてです。レコードが頻繁に削除および挿入される場合、mongodb はどのようにディスク領域を管理しますか? そこには一種の(自動)縮小メカニズムがあるはずです。コレクションへの読み取りをブロックしないことを願っています。