RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)

6,722
-1

Published on

RDBとの比較でMongoDBの特徴を紹介しています。

Published in: Technology
0 Comments
43 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,722
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
57
Comments
0
Likes
43
Embeds 0
No embeds

No notes for slide

RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)

  1. 1. RDB経験者に送る MongoDBの勘所 ! 玉川竜司
  2. 2. 自己紹介 • 玉川竜司 • FB: Ryuji Tamagawa • Twitter: tamagawa_ryuji • 本業ソフト開発(Sky株式会社) • 兼業翻訳者(ほぼオライリー)
  3. 3. もうすぐ出ます
  4. 4. 今日のお題は MongoDB
  5. 5. MongoDBのいいところ • 一言で言うなら「お手軽」 ­ いい意味で • Webアプリケーションで求められる機能が手っ取り早く使える • 多目的の高性能「オートマ車」 • インストーラやパッケージですぐ動きます • クラウド上で実績多数 • 多くの言語で、仕様がある程度統一されているドライバが利用可能
  6. 6. ただし • 集計は(今のところ)苦手 • (ほんとの)ビッグデータはちょっと難しいかも • 基本的に、オンメモリでいけるかどうかが問題 • そういえば、でかいメモリのインスタンス、AWSでもAzureで もさくらでも増えましたね・・・
  7. 7. RDBとの違い • 物理構造の違い • 論理構造の違い • トレードオフの柔軟性 • レプリカセット • シャーディング
  8. 8. 物理構造の違い RDB エンジンが管理する (物理)メモリバッファ データファイル MongoDB OSが管理するメモリ データ(メモリマップドファイル)
  9. 9. 物理構造の違い(2) • とにかく、「ホット」なデータが物理メモリに収まるかが肝心 • RDBほど細かなメモリのチューニングはできない • データが大きいなら、RAMを増やすか、シャーディングでスケール アウト
  10. 10. 論理構造の違い RDB MongoDB { _id: new ObjectId("6a5b1476238d3b4dd5000048"), slug: "gardening-tools", ancestors: [{ name: "Home", _id: new ObjectId("8b87fb1476238d3b4dd500003"), slug: "home" }, { name: "Outdoors",
 _id: new ObjectId( 9a9fb1476238d3b4dd5000001"), slug: "outdoors" } ], parent_id: new ObjectId("9a9fb1476238d3b4dd5000001"), name: "Gardening Tools", description: "Gardening gadgets galore!",
  11. 11. 論理構造の違い(2) • スキーマの自由度は高い(特に変更に強い) • ドキュメントを超えたアトミック性はない • 設計上のトレードオフが生じる • 一つのドキュメントで閉じない場合はIDで参照 • そうなると、処理をプログラムで書く必要が出てくる
  12. 12. トレードオフの柔軟性 RDB MongoDB 書き込み保証 する?しない? しなけりゃ高速 書いたら がっつり 永続化 トランザクション はデフォルト WAL使う? いくつのレプリ カへ書けたら成功 したことにする?
  13. 13. トレードオフの柔軟性(2) • 書き込みの確実性とパフォーマンスはトレードオフ • 大量のログの記録などでは、多少こぼれるリスクを抱えてもコストダウ ンしたいこともある • 逆に、データセンター間で複製できていることを保証したいこともある • 書き込み保証(Write Concern)、WAL、レプリカへの書き込み、タ ギングなどで、多彩な調整が可能
  14. 14. レプリカセットとシャーディングについて ちょっと注釈 • これらについては、「技術的には」RDBとの対立概念ではない • ただし、商用RDBではコストが跳ね上がる(ですよね?)機能 • MongoDBでは最初から組み込まれて、非常にお手軽 & 便利
  15. 15. レプリカセット Client-App Driver 書込 読取 Repreca-Slave 複製 Repreca-Master Repreca-Slave
  16. 16. レプリカセット(マスター交代) Client-App Driver 読取 書込 Repreca-Slave 複製 Repreca-Master Repreca-Master
  17. 17. レプリカセット (パフォーマンストレードオフ) Client-App Driver 書込 読取 Repreca-Slave Repreca-Master (バックアップ) 複製 (インデックスあり) Repreca-Slave (インデックスあり) バックアップ用のインスタン スにはインデックスを付けず、 非力なマシンで済ませる
  18. 18. レプリカセット(DC間での分散) Client-App Driver 書込 Repreca-Master 複製 読取 Repreca-Slave Repreca-Slave DC-1 DC-2
  19. 19. レプリカセットのまとめ • 読み取り負荷の分散 • 耐障害性 • 自動フェイルオーバー & リカバリ • 多彩なトレードオフ
  20. 20. シャーディング Client-App • • mongod for mongod for あかさたな はまやらわ パフォーマンスは上がる • mongos メモリ量をn倍に • Driver 書き込み負荷を1/nに 障害は起きやすくなる
 →レプリカセットと併用
  21. 21. シャーディング(意味なしパターン) Client-App Driver • ホットになるのは最新のシャードばかり • 順序づけできるシャードキーは要注意 • キーにはハッシュ的なデータが向く • 場合によっては複合キーを使う mongos mongod for mongod for mongod for 2013/9 2013/10 2013/11
  22. 22. シャーディングのまとめ • 「わりとビッグ」なデータに対応するための仕組み
  →どのくらいビッグかはハードによるが、期待しすぎは禁物 • キーの選択がキモ • 耐障害性はシャーディングと組み合わせて担保
  23. 23. RDBに似ているところは? 柔軟なインデックス!
  24. 24. 柔軟なインデックス • NoSQLエンジンは、インデックスが限定的なものが多い • MongoDBは、BSONデータのどこにでもインデックスを張れる • 複合キーも張れる • いくつでも張れる • クエリオプティマイザがキーの有無を(ある程度)ちゃんと見てくれる
  25. 25. まとめ
  26. 26. 今日話したこと • この本に事細かに書かれています。 • 電子書籍もあります。 • http://www.oreilly.co.jp/ books/9784873115900/ • そのほかにもMongoDB関連の電子 書籍があるので、オライリージャパ ンのサイトで検索を。
  27. 27. それはともかく • 簡単に始められて • かなり深く使うこともできます • ただし落とし穴もあります
 →コミュニティへどうぞ! http://www.mongodb.jp • まずは手を動かしてみましょう!
  28. 28. 最後に告知 • MongoDB Tokyo 2013 開催 • • • 日時:12/12(木) 申し込みサイト:http://atnd.org/event/mongodbtokyo2013 MongoDB University 日本語講座:第2弾開催 • 日時:11/25 • 申し込みサイト:https://education.mongodb.com/courses/10gen/M101P/2013_November/about
  29. 29. ご清聴ありがとうございました。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×