CappedCollection

MongoDBにおいて表題を試す。

■ 環境

  • MongoDB 3.0.7
  • Mac OSX (10.10.5)

■ MongoDB

起動する。先日のエントリの通りの設定である。

$ mongod --config /usr/local/etc/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 4142
child process started successfully, parent exiting
$

■ CappedCollection

CappedCollection“は、2つの方法で作成することができる。1つはこれkション作成時に指定する。

> db.createCollection("log", {capped: true, size: 100})

上記は、コレクションサイズが最大100byteの”log“コレクションを”CappedCollection“で作成している。

既に存在するコレクションを”CappedCollection“にするには下記の通り。

$ db.runCommand({"convertToCapped": "log", size: 100})

■ データ投入

データを投入しつつドキュメントも見てみる。

> db.createCollection("log", {capped: true, size: 100})
{ "ok" : 1 }
>
> show collections
log
system.indexes
>
> db.log.insert({test: "aaa"})
WriteResult({ "nInserted" : 1 })
>
> db.log.find()
{ "_id" : ObjectId("565c0afc90b88be4ec0bee18"), "test" : "aaa" }
>
> db.log.insert({test: 1111111111})
WriteResult({ "nInserted" : 1 })
> db.log.insert({test: 2222222222})
WriteResult({ "nInserted" : 1 })
> db.log.insert({test: 3333333333})
WriteResult({ "nInserted" : 1 })
> db.log.insert({test: 4444444444})
WriteResult({ "nInserted" : 1 })
> db.log.insert({test: 5555555555})
WriteResult({ "nInserted" : 1 })
>
> db.log.find()
{ "_id" : ObjectId("565c0bb890b88be4ec0bee25"), "test" : 1111111111 }
{ "_id" : ObjectId("565c0bbd90b88be4ec0bee26"), "test" : 2222222222 }
{ "_id" : ObjectId("565c0bc190b88be4ec0bee27"), "test" : 3333333333 }
{ "_id" : ObjectId("565c0bc690b88be4ec0bee28"), "test" : 4444444444 }
{ "_id" : ObjectId("565c0bca90b88be4ec0bee29"), "test" : 5555555555 }
>

この時点までは特に変化は無し。そのままデータの投入を続けていくと、下記のようになる。

> db.log.find()
{ "_id" : ObjectId("565c0bc690b88be4ec0bee28"), "test" : 4444444444 }
{ "_id" : ObjectId("565c0bca90b88be4ec0bee29"), "test" : 5555555555 }
  :
> db.log.count()
73
> 

size“で指定したものと合っているのかはこの時点ではわからないが、最初に投入したデータから順に消えていくということが分かるであろう。ログのように増える一方のデータを扱うには良いコレクションである。

■ 注意点

CappedCollection“は”update“や”remove“といったデータの変更ができない。

> db.log.remove({})
WriteResult({
    "nRemoved" : 0,
    "writeError" : {
        "code" : 20,
        "errmsg" : "cannot remove from a capped collection: test.log"
    }
})

以上。

■ 関連

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください