32

初めてのMongo db

  • Upload
    -

  • View
    1.120

  • Download
    3

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: 初めてのMongo db
Page 2: 初めてのMongo db

自己紹介

•玉川竜司@Sky

•翻訳してます。4冊/年

•今日は日本MongoDB

ユーザー会ということで。

Page 3: 初めてのMongo db

主な訳書

Page 4: 初めてのMongo db

最新刊

実践Vagrant

2/21発売!

Page 5: 初めてのMongo db

ちなみに次の次

Page 6: 初めてのMongo db

本日のお品書き

•NoSQL登場の背景

•MongoDBの特徴

Page 7: 初めてのMongo db

まず申し上げて

おきたいこと

Page 8: 初めてのMongo db

リレーショナルデータベースは

基本です

勉強しましょう!

Page 9: 初めてのMongo db

NoSQL登場の背景

Page 10: 初めてのMongo db

NoSQL登場の背景

•一言でいうなら、「ビッグデータのせい」•リレーショナルデータベースが本来向いている処理:•複雑な構造を持っているデータを•繰り返し読み書きする•少量でもメモリキャッシュが効きやすい

Page 11: 初めてのMongo db

NoSQL登場の背景

•いわゆるビッグデータでよくあるパターン:•比較的単純な構造•単一マシンでまかなえるメモリキャッシュには乗らないほどの量

•書き込みや修正が少なく、読み出しが多い

Page 12: 初めてのMongo db

NoSQL登場の背景

•RDBが持っている長所をいくつか捨てて、

新たに登場してきたワークロードに対応する

•捨てるもの:複雑なデータ処理、トランザクション処理など

•得るもの:スケーラビリティ

Page 13: 初めてのMongo db

NoSQL登場

•比較的シンプルなエンジン群が登場 ― いわゆるキーバリューストア

•値にアクセスするためのキーは1つだけ。シンプルなAPI

•きわめて高いスケーラビリティを持つ

•スケールアウト

Page 14: 初めてのMongo db

そしてMongoDB登場

•クラウドプラットフォームの開発プロジェクトから独立したプロダクトに

•今では、ワールドワイドで見ればNoSQLエンジンとしてはNo.1

•開発元は10genが改名してMongoDB社に

Page 15: 初めてのMongo db

MongoDBの紹介

Page 16: 初めてのMongo db

MongoDBの特徴•NoSQLとリレーショナルデータベースとのハイブリッド的な性格

リレーショナルデータベース的 NoSQL的

•セカンダリインデックス

•クエリプロセッサ

•JSONストア(構造化データ)

•スケールアウトによるスケーラビリティ

•Fire & Forget

•キャップ付きコレクション

•レプリカセット/フェイルオーバー

Page 17: 初めてのMongo db

インストールは簡単です

WindowsもOK!

Page 18: 初めてのMongo db

MongoDBの特徴(JSONストア)•構造を持ったデータをそのままドキュメントとして格納可能

•内部的にはバイナリ形式のJSONドキュメントを保存

•各種JavaScriptフレームワークと非常に相性が良い

MEANスタック:MongoDB、Express、AngularJS、Node.js

Page 19: 初めてのMongo db

MongoDBの特徴(JSONストア)

•Demo

Page 20: 初めてのMongo db

MongoDBの特徴(インデックスとクエリ)

•NoSQL系エンジンは、主キー以外にインデックスを持てないものも多い

•MongoDBでは、ドキュメント中のほぼ任意の部分の値に対してインデック

スを張ることができる。階層構造の中でもOK

•独自のクエリ言語を持っており、クエリプロセッサが実行方針を判断する

Page 21: 初めてのMongo db

MongoDBの特徴(セカンダリインデックス)

•デモ

Page 22: 初めてのMongo db

MongoDBの特徴(レプリカセット)•複数のサーバーで、可用性と読み取りのパフォーマンスをアップ

•基本機能であり、非常に手軽に利用できる

•アプリケーションの側のフェイルオーバー処理の多くはドライバ担当。

•サーバーのフェイルオーバーは、ほぼ自動•もちろん、シビアな環境ではいろいろ考慮する必要あり

Page 23: 初めてのMongo db

MongoDBの特徴(レプリカセット)

Primary書き込み

Secondary

Secondary

複製

読み取り

Page 24: 初めてのMongo db

MongoDBの特徴(レプリカセット)

Primary書き込み

Primary

Secondary

複製

読み取り

Page 25: 初めてのMongo db

MongoDBの特徴(シャーディング)

•複数のサーバーで、書き込みのパフォーマンスアップ

•全体としての可用性は下がるので、レプリカセットと併用する

Page 26: 初めてのMongo db

MongoDBの特徴(シャーディング)

Primary

Secondary

Secondary

Primary

Secondary

Secondary

Primary

Secondary

Secondary

Mon

gosシャードキーで分散

Page 27: 初めてのMongo db

MongoDBの特徴(トレードオフ)

•データの安全性とパフォーマンスとのトレードオフの選択肢が多彩

• Fire & Forget

•Write Ahead Log

•書き込み保証(Write Concern)

• タグによる書き込み保証

Page 28: 初めてのMongo db

MongoDBの特徴(アーキテクチャ)

•特にメモリ管理が特徴的

•MongoDB自身はメモリバッファは管理しない。

•単に、データファイルをメモリマップドファイルとして扱っているだけ•事実上64bit OS必須。

• 「ホット」なデータのサイズと、OSが利用できる物理メモリのサイズの関係が重要

Page 29: 初めてのMongo db

欠点もあります

集計

Page 30: 初めてのMongo db

MongoDBがはまるところ

•ログなどの受け手

•プロトタイピング

•シャーディングが効きやすく、ある程度の単位で構造化されているデータ

Page 31: 初めてのMongo db

Playgroundの紹介

•https://bitbucket.org/tamagawa_ryuji/mongodb_replicaset_playground_o

n_vagrant

•Vagrantがあれば、リポジトリをダウンロードしてVagrant upするだけで、レプ

リカセットの環境を構築して遊べます

•3台の仮想マシンが立ち上がるので、メモリはそれなりに必要です。

Page 32: 初めてのMongo db

ご清聴ありがとうございました

Questions?