MongoDB キャップ付きコレクション(Capped Collections)

MongoDB キャップ付きコレクション(Capped Collections)は、パフォーマンスに優れ、固定サイズを持つコレクションです。固定サイズなので、リングバッファのようなものと考えることができます。コレクションの容量を使い切ると、次に挿入される要素は最初の先頭要素を上書きします!


キャップ付きコレクションの作成

createCollectionを使用してキャップ付きコレクションを作成し、cappedオプションをtrueに設定します:

>db.createCollection("cappedLogCollection",{capped:true,size:10000})

ドキュメントの個数を指定することもできます。max:1000属性を追加します:

>db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})

コレクションがキャップ付きコレクションかどうかを判断する:

>db.cappedLogCollection.isCapped()

既存のコレクションをキャップ付きコレクションに変換する必要がある場合は、次のコマンドを使用できます:

>db.runCommand({"convertToCapped":"posts",size:10000})

上記のコードは、既存のpostsコレクションをキャップ付きコレクションに変換します。


キャップ付きコレクションのクエリ

キャップ付きコレクションのドキュメントは挿入順に格納されます。デフォルトでは、クエリは挿入順に返されます。$naturalを使用して返却順序を調整することもできます。

>db.cappedLogCollection.find().sort({$natural:-1})

キャップ付きコレクションの機能と特徴

挿入と更新は可能ですが、更新はコレクションのサイズを超えることはできません。超えると更新は失敗します。削除は許可されていませんが、drop()を呼び出してコレクション内のすべてのドキュメントを削除することはできます。ただし、drop後に明示的にコレクションを再作成する必要があります。

32ビットマシンでは、キャップ付きコレクションの最大値は約482.5MBです。64ビットでは、システムファイルサイズの制限のみを受けます。


キャップ付きコレクションの属性と使い方

属性

  • 属性1:キャップ付きコレクションへの挿入が非常に高速
  • 属性2:挿入順のクエリ出力が非常に高速
  • 属性3:最新データを挿入するときに、最も古いデータを排除できる

使い方

  • 使い方1:ログ情報の保存
  • 使い方2:少量のドキュメントのキャッシュ
その他の拡張