Más contenido relacionado
La actualidad más candente (20)
Similar a Mongo dbを知ろう (20)
Mongo dbを知ろう
- 8. ドキュメンド指向②
Profile collection:
{
name: “Alice”,
age: 20,
hobby: {
“outdoor”: [
“motorcycle”,
…
],
“indoor”: [
“reading”,
],
}
}
レコードの代わりに、JSONライクなオブジェクト
が格納される。
オブジェクトの構造は理解され、検索や参照に利
用できる。
この例でアウトドアの趣味にアクセスするときは、
hobby.outdoor
でアクセスできる。
こうしたサブオブジェクトやデータに対しイン
デックスの作成など、DBの機能がフルで利用でき
る。
NOTE:
内部的にはJSONがBSONというJSONのバイナリ版が格納され、
パフォーマンスの向上と容量削減に貢献している。
© CROOZ,Inc
8
- 21. レプリケーションまとめ
• Primary, Secondary, Arbiterサーバーで構成する。
• データサーバーの数に応じてArbiterを用意し無駄をなす。
• 障害時は自動的にシステムの可動性を維持する。
• システム動作状態での復旧が可能。
• レプリカセットに対する読み込み先は細かく制御できる。
© CROOZ,Inc
21
- 23. シャーディングの仕組み
mongos
{key: 150}
Primary shard
chunk0
chunk3
•
•
•
•
•
0 ~ 100
301 ~
Shard
Shard
chunk
1
101 ~ 200
chunk
2
201 ~ 301
データはドキュメンド単位ではなく、chunkというデータの箱単位でシャー
ドされる。
インデックス作成と同じ要領でコレクション別のシャードキーを作成。こ
のキーは変更不可。
シャードキーに対してはRangeBasedPaginationのアルゴリズムでchunkに
分割し、このchunkを各シャードに分散する。
振り分けられないデータは全部プライマリシャードサーバーでに行く。
プライマリシャードはコレクション別でシステムが勝手に割り振る。
© CROOZ,Inc
23
- 27. シャーディング構成要素の障害時の挙動
• configサーバー障害
– 一部障害の場合
• configサーバーのメタデータが読み取り専用になる。
• DBに対する通常操作、mongosの立ち上げができるが、シャーディング構成
の変更やChunkの移動や分割ができなくなる。
• データの大量インサードがあった場合、偏ったシャーディング結果になる
か、インサード失敗になる。
– 全部障害の場合
• 一部障害の挙動に加え、mongosの追加や再起動ができなくなる。(精確に
は立ち上げ後落ちる)
• 一部シャーディング構成状態を確認するコマンドが利用できなくなる。
• Mongosサーバー障害
– 単一mongosの障害はシステム自体にインパクトを与えない。
– クライアントにとってはシングルポイントになるため、プロセスの自動再起動
や、接続先切り替えの仕組みで回避できる。
© CROOZ,Inc
27
- 34. Memory-Mapped Fileから見るMongoの特性
• 利点:
– 通常はメモリ上で動作するため、動作が早い。(特に書き込み)
– よく利用するデータは自然と物理メモリに来るので、メモリ
キャッシュシステムのような役割もこなす。
– 大量な書き込みでも相対的にディスクIOが小さい。
• 欠点:
– 32bitシステムでは使いものにならない。
– 仮想メモリ扱いなので、ページアウトが発生する。(page fault)
– Mongoがアクティブに動く環境では他のプロセスをガンガンス
ワップアウトさせてしまう。
– 永続化は60秒ごとの更新なので、最悪60秒のデータが飛ぶ。
• 結論:
– メモリをいっぱい積みましょう!
© CROOZ,Inc
34
- 42. 特徴的な仕様②: fsync
• Mongoではfsyncは管理コマンド。メモリをディスクに
直ちにフラッシュさせる。
• 各言語のドライバでは書き込み系APIのオプション。
– 指定すると該当オペレーションのディスク書き込みを保証する。
– ただし、ジャーナリングありとなしで挙動が違う。
– ジャーナリングなし:
• メモリへの書き込み後、直ちにディスク書き込みが行われる
– ジャーナリングあり:
• メモリへの書き込み後、ジャーナリングファイル書き出しの最大
100ms間隔を待つ。
– ジャーナリングありではより低負荷で永続保証書き込みできる。
– でも、用法用量を守って正しく使うべき。
© CROOZ,Inc
42
- 44. その他の機能
• MapReduce
– ビッグ・データの解析機能をデフォルトで搭載。
• 固定長コレクション(Capped)
– サイズやドキュメンド数が予め決まった特殊なコレクション。
– 挿入に対して非常に高いパフォーマンスを持つ。
– シャードできない。
• 二次元地理空間インデックス
– 2D座標インデックスによる距離的な検索ができる。
– 平面モデルと球面モデルをサポート。
– このインデックスはシャードキーに指定できない。
© CROOZ,Inc
44