mongodbのデータ容量の削減方法を知りたいです。


■概要
テキストや数値をデータとして入れています。mongodbのデータ容量は14GBなのですが、dumpして圧縮すると54MBしかありません。どうやったら、mongodbが管理しているディレクトリの容量を減らせるでしょうか?

db.repairDatabase();は行っています。

■詳細
$ du -hs /var/lib/mongodb/
14G /var/lib/mongodb/

$ mongod --version
db version v2.2.1, pdfile version 4.5

$ mongodump
$ tar jcf dump.tar.bz2 dump
$ ll -h
-rw-r--r-- 1 gadmin gadmin 54M 2012-11-05 08:09 dump.tar.bz2

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2012/11/05 17:15:59
  • 終了:2012/11/06 10:04:54

ベストアンサー

id:oil999 No.3

oil999回答回数1728ベストアンサー獲得回数3202012/11/05 19:37:04

ポイント80pt
  1. collection内の各keyの名前を短くすることでサイズを小さくすることができます。 http://dayafterneet.blogspot.jp/2012/05/mongodb-collection.html#!/2012/05/mongodb-collection.html
  2. 検索はできなくなりますが、MessagePackで圧縮してバイナリ保存するというやり方があります。 http://sourceforge.jp/projects/msgpack/
id:matsubobo

1.のサイトは未チェックでした。
かなり詳しいですね。ありがとうございます!

http://dayafterneet.blogspot.jp/

2012/11/05 19:56:21

その他の回答(3件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492012/11/05 18:08:34

ポイント40pt

一度確保されたディスク領域は開放しないというのがmongoDB。

定期/不定期に停止可能であるならば、
バックアップ作成→領域削除→復元という手順が意外と早く済む。

通常はrepair、compactで確保領域内部の削除部分再利用を行い、
十分な空きがあるように気をつけておくという対応を行う。

本家 http://www.mongodb.org/display/DOCS/Excessive+Disk+Space
日本語訳 http://www.mongodb.org/pages/viewpage.action?pageId=17596968

データベースの最初のファイルは <dbname>.0 となり、次に <dbname>.1 となります。
<dbname>.0 は64MBになります, <dbname>.1 は128MB、最大で2GBになります。
一度2GBまで達すると、次からは2GBです。

他3件のコメントを見る
id:windofjuly

具体的なデータ構造が見えないので、あくまでも推測の域を出ませんが、
chunksizeを大幅に小さくすることで何とかなりそうな気がします。
(10ドキュメント分5MBとかでもいいかも…)

2012/11/05 19:49:08
id:windofjuly

「mongoDB 圧縮」でググった結果をみても☆5つ付けるかな?
私は無星…。もうやめた。ゼロポイントで終了してくれればいい。

2012/11/05 19:54:13
id:a-kuma3 No.2

a-kuma3回答回数4524ベストアンサー獲得回数18802012/11/05 18:29:06

ポイント62pt

削除は行なうことはなく、ログ保存用としてつかっています。なので、不要領域はできません。保存したデータに対して、mongodbのデータ領域の増え方が多すぎて困っています。

ログを保存している、ということなので、同じようなデータがほとんどだから、圧縮の効果が効きすぎているんじゃないでしょうか。

そのテーブルのフィールドって、日時とログの内容くらいですよね。
もしかしたら、ログの内容にインデックスを張ってません?
長い文字列が、テーブルにもインデックスにも入ってて、コマンドの圧縮効果が更に高くなるという...
で、インデックスを張った効果は、あまり感じられない(ような気がする)。


# 勝手な想像ですが...

id:matsubobo

> 圧縮の効果が効き過ぎている
確かにそれはありますね。圧縮前のbsonは4.6GBあります。

$ du -hs dump
4.6G dump

2012/11/05 19:15:27
id:oil999 No.3

oil999回答回数1728ベストアンサー獲得回数3202012/11/05 19:37:04ここでベストアンサー

ポイント80pt
  1. collection内の各keyの名前を短くすることでサイズを小さくすることができます。 http://dayafterneet.blogspot.jp/2012/05/mongodb-collection.html#!/2012/05/mongodb-collection.html
  2. 検索はできなくなりますが、MessagePackで圧縮してバイナリ保存するというやり方があります。 http://sourceforge.jp/projects/msgpack/
id:matsubobo

1.のサイトは未チェックでした。
かなり詳しいですね。ありがとうございます!

http://dayafterneet.blogspot.jp/

2012/11/05 19:56:21
id:pigmon88 No.4

pigmon88回答回数501ベストアンサー獲得回数252012/11/05 20:12:54

ポイント18pt

たいして変わらないみたいですが・・・

http://dayafterneet.blogspot.jp/2012/06/mongodb.html

id:matsubobo

はい。
id:oil999さんの1つめのページで見ました。

2012/11/05 21:03:45

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません