人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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


●質問者: まつぼっくり
●カテゴリ:コンピュータ 科学・統計資料
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● うぃんど
●40ポイント

一度確保されたディスク領域は開放しないというのが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です。


まつぼっくりさんのコメント
はい。その辺りは調査済みです。説明が足りなくてすいません。 削除は行なうことはなく、ログ保存用としてつかっています。なので、不要領域はできません。保存したデータに対して、mongodbのデータ領域の増え方が多すぎて困っています。

うぃんどさんのコメント
(a)ツリー構造の見直し 検索対象にならないフィールドを1つにまとめたりする必要があるでしょう。 (b)キーフィールドの見直し ムダにインデックスが増大しているようなことも考えられますので…。

まつぼっくりさんのコメント
以下に回答致します。 (a) データは、全て1階層です。1ドキュメント辺り500B程度です。 (b) インデックスは利用していません。(デフォルトのプライマリのみ) インデックス肥大化を防ぐために1コレクション1万ドキュメント程度です。

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

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

2 ● a-kuma3
●62ポイント

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

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

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


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


まつぼっくりさんのコメント
> 圧縮の効果が効き過ぎている 確かにそれはありますね。圧縮前のbsonは4.6GBあります。 $ du -hs dump 4.6G dump

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

まつぼっくりさんのコメント
1.のサイトは未チェックでした。 かなり詳しいですね。ありがとうございます! http://dayafterneet.blogspot.jp/

4 ● pigmon88
●18ポイント

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

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


まつぼっくりさんのコメント
はい。 id:oil999さんの1つめのページで見ました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ