「MongoDB」の版間の差分

m
→‎Sharding: シャーディング(Sharding)
(新しいリリース番号を反映(2.6.7))
m (→‎Sharding: シャーディング(Sharding))
MongoDBは、レプリカセット (Replica Sets) と呼ぶ仕組みによって高い可用性を提供する。1つのレプリカセットはデータの2つ以上のコピーからなる。レプリカセットの各メンバーは、常時、プライマリレプリカもしくはセカンダリレプリカとしての役割を果す。プライマリレプリカはすべての書き込みおよび読み込みを実行する。セカンダリレプリカは、組み込みのレプリケーションを用いて、プライマリにあるデータのコピーを保持する。プライマリレプリカが機能しなくなった時は、レプリカセットが自動的に投票プロセスを開始して、どのセカンダリがプライマリになるべきかを決定する。
 
===シャーディング(Sharding)===
===Sharding===
 
MongoDBは、Shardingシャーディング(Sharding)<ref name="sharding">[http://www.mongodb.org/display/DOCS/Sharding sharding]</ref><ref>[http://www.atmarkit.co.jp/ait/articles/1211/09/news056_3.html 開発者が知っておくべき、ドキュメント・データベースの基礎 (3/3)]</ref>というシステムによって水平スケーリングが可能である。これは[[BigTable]]や[[PNUTS]]のスケーリングモデルに非常に良く似ている。開発者はshardキーを選択し、このキーがデータをどのように分散させるかを決める。データ中のキーを元にデータを分散させるshardが決められる。(一つのshardは1つ以上のスレーブを持つマスタである)
 
アプリケーションはいくつかの操作を行う際に、shardingされたクラスタと対話していることを認識している必要がある。例えば "findAndModify" クエリは、shardされたコレクションからクエリをするときにshardキーを含む必要がある。<ref name="findAndModify">[http://www.mongodb.org/display/DOCS/findAndModify+Command#]</ref> アプリケーションは、`mongos`と呼ばれる特別なルーティングプロセスと対話する。このプロセスは、shardクラスタを単一のMongoDBサーバに見えるようにする。`mongos`プロセスはどのデータがどのshardにあるかを知っており、クライアントのリクエストを適切にルーティングする。すべてのリクエストはこのプロセスを通して流れる: リクエストやレスポンスを転送するだけでなく、必要に応じてマージやソートも行う。 `mongos`プロセスはいくつでも実行できるが、通常は1つのアプリケーションに対して1つが推奨される。