「PASTEBIN」というコンソールの出力やエラーログ、ソースコードなどを張り付けて共有するWebサイトがあり、そこに投稿された内容が議論を巻き起こしました。「Don't use MongoDB」というタイトルが付けられた文章には、ヘビーにMongoDBを利用しているユーザからの辛辣(しんらつ)な批判が綴(つづ)られていました。
告発者はプロジェクトにて数千万件ものユーザ管理にMongoDBを利用しており、これまで長い間10gen社(MongoDBの開発元)から最高レベルの)有償サポートを受けていたため黙っていたが、少しでも多くの人に警鐘を鳴らすべく立ち上がったそうです。MongoDBの扱いやすさやスキーマフリーなモデル、豊富な実績などに一定の評価をしつつも、大規模な環境で実際に動かさずに判断するのは時に重大な問題となり、MongoDBにはそれが向いていないと言い切っています。
具体的に次の8つの点が問題であると指摘しています。
- ベンチマークで良い値を出したいがためにデフォルトでは安全でない方法で書き込みを行う
- レプリケーションがエラーを出さずに途中で止まるなど、原因不明なデータ消失が多い
- 書き込み時にグローバルにロックしてしまうので書き込みが多いとひどいことになる
- 読み込みが重いとシャーディングがうまく動かない
- mongosサーバがすぐにクラッシュして信頼できない
- 一度全データセットが消えた(バージョン1.6の話で1.8で修正済み)
- 問題を抱えた“出してはいけないもの”を安定バージョンとしてリリースしている
- 負荷が高いとレプリケーションがうまく機能しない
そして、本当に問題なのはそもそもこういった問題が存在してしまっていることであると主張し、データベース開発者はパフォーマンスよりもデータを消失させないことを優先するべき、と遠まわしに10genの企業体質を批判しています。
非常にインパクトのある内容であったために各所で話題になり、海外の有名技術ニュースサイト「Hacker News」上でも取り上げられ、Foursquareの開発者が登場してそれほど悪くないと弁護したり、10genのCTOが各批判ポイントについて真摯に受け止め回答するなど、数多くのコメントが飛び交いました。これほど厳しい意見が出てくるのも、MongoDBが非常に人気のあるプロダクトである証拠なのかもしれません。
URL:http://pastebin.com/raw.php?i=FD3xe6Jt