2016-12-05 2 views
1

現在、データベースShardingがMongo DBでどのように動作しているかを調べています。MongoDBのデータベースシャーディング?

私の使用例では、私のウェブアプリケーションにエレクトロニクス/ベビー用品/書籍/布などの製品があります。負荷を分散し、必要に応じてスケールアップするために、別の製品を別のマシン(異なるマシン)に保管したいとします。

私の質問は、製品タイプに基づいて正しいDBに製品を保管するためのMongo DBの責任であり、WebサーバーのJavaコードは完全に認識されません。 Mongo DBはこれをサポートしていますか?

または、タイプに基づいて を保存するには、DBに接続するWebサーバーのJavaコードが必要です。

答えて

0

はい、MongoDBはあなたの記述をサポートしています。 Sharding in MongoDBは、MongoDBがスケーリングアウト/水平スケーリングを可能にする方法です。シャードされたコレクション内の文書(あなたの場合の製品)がどのシャードになるかを決めるために使われるシャードキーが必要です。製品タイプをシャードキーとして使用するように思えます。 MongoDBは、シャード鍵に基づいて文書をシャードに誘導する責任を負います。リンクされたWebページを参照すると、Webサーバーは接続し、クエリをshardキーに基づいてshardsに適切にルーティングするmongosクエリルータインスタンスにクエリを送信します。

シャードキーの選択は軽くはなりません。ほとんど選択されていないと、ほぼすべてのクエリが単一のシャードになる可能性があります。カーディナリティ、頻度、変化率などのシャードの重要な要素がシャードのパフォーマンスにどのように影響するかについては、hereを参照してください。

1

Javaアプリケーションは、mongosmongosに接続されているに関係なく、あなたが実行しているどのように多くのmongod全体のDBを表していません! mongosは、正しいmongodサーバーへの接続を処理し、クエリを実行しています。だから、基本的にあなたのJavaアプリケーションはMongoDBを単一のブラックボックスと見なします。

P.s:複数のmongosを実行し、local DNS providerに1つのドメイン名を割り当てて、mongosに負荷分散する必要があります。このシナリオでも、Javaアプリケーションの動作は同じです。