2016-12-05 9 views
1

В настоящее время я изучаю, как работает база данных Sharding в Mongo DB.База данных в MongoDB?

Мое использование кейс есть у меня есть количество продуктов, таких как электроника/детские палочки/книги/ткани и т. Д. В моем веб-приложении. Скажем, я хочу хранить различные продукты на разных БД (на разных машинах), чтобы распределять нагрузку и масштабировать, если это необходимо.

Мой вопрос является ответственностью Mongo DB для хранения продукта в правой БД на основе типа продукта, и мой код Java-сервера будет полностью не знаком с этим? Поддерживает ли Mongo DB это?

Или он несет ответственность за код Java-сервера webserver для подключения к правильной БД для хранения продукта в зависимости от его типа?

ответ

0

Да, MongoDB поддерживает то, что вы описываете. Sharding in MongoDB - это то, как MongoDB позволяет масштабировать/горизонтально масштабировать. Для этого требуется ключ осколка, который используется для определения того, какой осколок документа (продукт в вашем случае) в собранной коллекции будет включен. Похоже, вы хотели бы использовать тип продукта в качестве ключа осколка. MongoDB берет на себя ответственность за направление документов в осколки на основе ключа осколка. Со ссылкой на связанную веб-страницу ваш веб-сервер будет подключать и отправлять запросы в экземпляры маршрутизатора запросов mongos, которые будут маршрутизировать запросы к осколкам соответствующим образом на основе ключа осколка.

Выбор ключа осколка не следует воспринимать легкомысленно. Если выбрано плохо, почти все запросы могут оказаться в одном осколке. Читайте о том, как ключевые факторы осколка, такие как мощность, частота и скорость изменения, могут влиять на характеристики осколков here.

1

Ваше приложение Java подключается к mongos и mongos не представляют всю базу независимо от того, сколько mongod вы работаете! mongos обрабатывает соединение с правильным сервером mongod и выполняет ваш запрос. Таким образом, в основном ваше приложение Java видит MongoDB как единый черный ящик.

P.s: вы можете запустить несколько mongos, назначить им одно доменное имя в своем local DNS provider, и оно позаботится о балансировке нагрузки на ваш mongos. В этом сценарии поведение вашего приложения Java одинаково.