Mongo DB Casual Talksに参加してきました




渋谷のDeNAさんで開催されたMongo DB Casual Talksに参加してきました。業界用語で言うところのカジュアルにふさわしい、ガチの勉強会でした。

MongoDBのアレ

  1. MongoDBはクラスタリングやシャーディングが自動的なのが魅力
    1. ただしシャード設定の不備があると、本当に突然パフォーマンスがダウンする
  2. バックアップはオートバランスを停止してから
  3. ロックがグローバルなのに注意
  4. 障害・ログ
    1. mogostat
      1. faultが多い場合はメモリ不足の可能性あり
      2. Locked%が高い場合は書き込みを分ける
      3. qr|qwもロックの可能性を疑うこと
  5. mongosniff
    1. 複雑なクエリなどを見るときに
  6. Loglevel変更は動的にできるので、何かあった時にあげるといい

「みんなもカジュアルに100シャード運用してみよう!」

Casual Compression onMongoDB

  1. 「今日はデータ圧縮の話をします」
  2. トランザクションは甘え
  3. 標準ではデータ圧縮未サポート
  4. カジュアルに圧縮
  5. レコードひとつひとつフィールド名がある→短くすればサイズ短縮可能
    1. OR Mapperをつかってサポート
  6. 圧縮・伸張の早いアルゴリズムを使う
  7. シリアライズはMessagePack
  8. 効果はあるが副作用も大きい

「大きいデータ扱うならHBaseがおすすめ」

AWSでMongoDB

  1. ロードバランサーの裏でデータセンターをまたいでサーバーとDB
  2. 10genがイメージを出している
  3. ディスクの性能
    1. EBSは複数つけて性能向上
    2. インスタンスを大きくしても回線が太くなってEBSの性能が上がるので大丈夫
    3. それでもダメならばシャーディング
  4. バックアップもスナップショットで簡単
  5. 手順
    1. 静止点を生成
    2. スナップショットを取得
    3. わずか数秒
  6. データセンターをまたいでもそんなに遅くならない

LT1 mongodbを使ってみたい

  1. MongoDBは嫌い
  2. でもクエリーは好き
  3. だからMongoDBと同じクエリでMySQLが使えるORマッパー作ったよ
  4. リーダブルコードにしたい

LT2 mogodbでカジュアルなタイムラインの実装(資料)

  1. 実際にサービスで使っているもの
  2. MySQLで重くなるものをMongoDBで
  3. スキーマは残念
  4. CappedCollectionが最適→無駄にコレクションが増える→限界がすぐ来る→DBがたくさん→止まりまくり(^^;)

「Mongoはカジュアルに導入しない」

LT3 カジュアルに非公式データパックアップ(資料)

  1. Mongoexportはデータが壊れる
  2. Mongodumpはデータが大量に出てしまう
  3. データ量が多いとリストアも大変
  4. とりあえずsecondaryを落としてみると意外と早い?
    1. lockした方がいいかも?

LT4 アーキテクチャ的な何か(資料)

  1. 追記型のメリットデメリット
    1. 書き込み周りがシンプル
    2. 代わりにゴミが増える、インデックスの更新などのデメリット
  2. 追記を避ける為にpadding facter
    1. insert以外で増える

LT5 カジュアルなMongo dbの運用

  1. 一年サービス運用した経験から
  2. 定期的なチェック重要
    1. シャーディングの偏りチェック等
  3. バックアップ
  4. 定期的な最適化
    1. ただし時間がかかるので注意
    2. V2系からコレクション単位で最適化
    3. ただし物理サイズは減らない

LT5 casual sukcks(資料)

  1. Mongoの不満点
    1. スワップしまくり
    2. Rubyクライアントでデータが飛ぶ
      1. 治ってないらしい
    3. RubyのBSONの実装が異なる二つのバージョンがある
    4. 名前についての制限がマニュアルにない
    5. まだででないバージョンでドキュメント化
      1. 全然足りない

「MongoDBなんてみなさんもう使うこと無いと思うんですけど☆」

LT6 mongoengineでカジュアルな有向グラフ(サンプルコード)

  1. 「有向グラフがわからない人はニュアンスでお願いします」
  2. MongoDBで有向グラフを作って分析できるPythonライブラリ
  3. カジュアルに使えるが、あまり大きなデータはダメ

「MongoDBさんはスモールデータには最適だよ!」

LT7 MongoDBとfluentdの素敵な関係

  1. はてなのCTO
  2. Mongoはリソースくいということでメイン使用はしてない
  3. ファイルで疎結合
  4. ソケットでつなぐとデーモンの不具合に巻き込まれたりする
  5. プラグインを書いてログの集積にしよう
  6. Mongoはフロントエンドも素敵
  7. 基本的に一週間程度のログを保存。のこりはファイルに

スモールデータを保っています」


※追記

 お寿司、おいしゅうございました。