初めてのMongo db

1,817 views
1,599 views

Published on

XEgg 第2回 初心者向けのMongoDBの解説です。

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

No Downloads
Views
Total views
1,817
On SlideShare
0
From Embeds
0
Number of Embeds
42
Actions
Shares
0
Downloads
17
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

初めてのMongo db

  1. 1. 自己紹介 •玉川竜司@Sky •翻訳してます。4冊/年 •今日は日本MongoDB ユーザー会ということで。
  2. 2. 主な訳書
  3. 3. 最新刊 実践Vagrant 2/21発売!
  4. 4. ちなみに次の次
  5. 5. 本日のお品書き •NoSQL登場の背景 •MongoDBの特徴
  6. 6. まず申し上げて おきたいこと
  7. 7. リレーショナルデータベースは 基本です 勉強しましょう!
  8. 8. NoSQL登場の背景
  9. 9. NoSQL登場の背景 •一言でいうなら、「ビッグデータのせい」 •リレーショナルデータベースが本来向いている処理: • 複雑な構造を持っているデータを • 繰り返し読み書きする • 少量でもメモリキャッシュが効きやすい
  10. 10. NoSQL登場の背景 •いわゆるビッグデータでよくあるパターン: •比較的単純な構造 • 単一マシンでまかなえるメモリキャッシュには乗らないほどの量 • 書き込みや修正が少なく、読み出しが多い
  11. 11. NoSQL登場の背景 •RDBが持っている長所をいくつか捨てて、 新たに登場してきたワークロードに対応する •捨てるもの:複雑なデータ処理、トランザクション処理など •得るもの:スケーラビリティ
  12. 12. NoSQL登場 • 比較的シンプルなエンジン群が登場 ― いわゆるキーバリューストア • 値にアクセスするためのキーは1つだけ。シンプルなAPI • きわめて高いスケーラビリティを持つ • スケールアウト
  13. 13. そしてMongoDB登場 • クラウドプラットフォームの開発プロジェクトから独立したプロダクトに • 今では、ワールドワイドで見ればNoSQLエンジンとしてはNo.1 • 開発元は10genが改名してMongoDB社に
  14. 14. MongoDBの紹介
  15. 15. MongoDBの特徴 • NoSQLとリレーショナルデータベースとのハイブリッド的な性格 リレーショナルデータベース的 NoSQL的 •セカンダリインデックス •JSONストア(構造化データ) •クエリプロセッサ •スケールアウトによるスケーラビリティ •Fire & Forget •キャップ付きコレクション •レプリカセット/フェイルオーバー
  16. 16. インストールは簡単です WindowsもOK!
  17. 17. MongoDBの特徴(JSONストア) •構造を持ったデータをそのままドキュメントとして格納可能 •内部的にはバイナリ形式のJSONドキュメントを保存 •各種JavaScriptフレームワークと非常に相性が良い MEANスタック:MongoDB、Express、AngularJS、Node.js
  18. 18. MongoDBの特徴(JSONストア) • Demo
  19. 19. MongoDBの特徴(インデックスとクエリ) • NoSQL系エンジンは、主キー以外にインデックスを持てないものも多い • MongoDBでは、ドキュメント中のほぼ任意の部分の値に対してインデック スを張ることができる。階層構造の中でもOK • 独自のクエリ言語を持っており、クエリプロセッサが実行方針を判断する
  20. 20. MongoDBの特徴(セカンダリインデックス) • デモ
  21. 21. MongoDBの特徴(レプリカセット) • 複数のサーバーで、可用性と読み取りのパフォーマンスをアップ • 基本機能であり、非常に手軽に利用できる • アプリケーションの側のフェイルオーバー処理の多くはドライバ担当。 • サーバーのフェイルオーバーは、ほぼ自動 • もちろん、シビアな環境ではいろいろ考慮する必要あり
  22. 22. MongoDBの特徴(レプリカセット) 書き込み 読み取り Primary Secondary Secondary 複製
  23. 23. MongoDBの特徴(レプリカセット) 書き込み 読み取り Primary Primary Secondary 複製
  24. 24. MongoDBの特徴(シャーディング) •複数のサーバーで、書き込みのパフォーマンスアップ •全体としての可用性は下がるので、 レプリカセットと併用する
  25. 25. MongoDBの特徴(シャーディング) シャードキーで分散 Mon gos Primary Primary Primary Secondary Secondary Secondary Secondary Secondary Secondary
  26. 26. MongoDBの特徴(トレードオフ) • データの安全性とパフォーマンスとのトレードオフの選択肢が多彩 • Fire & Forget • Write Ahead Log • 書き込み保証(Write Concern) • タグによる書き込み保証
  27. 27. MongoDBの特徴(アーキテクチャ) • 特にメモリ管理が特徴的 • MongoDB自身はメモリバッファは管理しない。 • 単に、データファイルをメモリマップドファイルとして扱っているだけ • 事実上64bit OS必須。 • 「ホット」なデータのサイズと、OSが利用できる物理メモリのサイズの関係が重要
  28. 28. 欠点もあります 集計
  29. 29. MongoDBがはまるところ •ログなどの受け手 •プロトタイピング •シャーディングが効きやすく、 ある程度の単位で構造化されているデータ
  30. 30. Playgroundの紹介 • https://bitbucket.org/tamagawa_ryuji/mongodb_replicaset_playground_o n_vagrant • Vagrantがあれば、リポジトリをダウンロードしてVagrant upするだけで、レプ リカセットの環境を構築して遊べます • 3台の仮想マシンが立ち上がるので、メモリはそれなりに必要です。
  31. 31. ご清聴ありがとうございました Questions?

×