Планирование мощностей MongoDB
У меня есть база данных Oracle с около 7 миллионами записей в день, и я хочу перейти на MongoDB. (~300Gb)
Чтобы настроить POC, я хотел бы знать, сколько узлов мне нужно? Я думаю, что 2 копии 3 узла в 2 шарда будет достаточно, но я хочу знать, что вы думаете об этом:)
Я хотел бы иметь настройку HA:)
Заранее спасибо!
3 ответа
Подумайте над своими ключами шардинга, в каких полях имеет смысл поделиться своими данными? Это будет влиять на решение о том, сколько осколков развернуть, в зависимости от емкости каждого осколка. Вы можете использовать относительно немного шардов, например, два или три больших глубоких шарда, если ваши данные можно легко сегментировать на половину или треть, или несколько более легких, более тонких шардов, если вы можете использовать шард с более разнообразным ключом.
Чтобы MongoDB работал эффективно, вам нужно знать размер вашего рабочего набора. Вам нужно знать, сколько данных составляет 7 миллионов записей в день. Это активные данные, которые должны оставаться в оперативной памяти для высокой производительности.
Кроме того, будьте уверены, почему вы мигрируете в Монго. Я предполагаю... в вашем случае это масштабируемость... но прежде чем делать это, хорошо изучите ваши данные.
Для вашего POC, сохранение двух осколков означает примерно 150 ГБ на каждом.. Если у вас есть столько свободного диска, нет проблем.
Относительно просто обновить конфигурацию набора реплик MongoDB до сегментированного кластера (каждый фрагмент фактически является набором реплик). Вместо того, чтобы заранее определять, что разделение - это правильное решение для начала, я бы подумал о том, каковы ваши причины разделения (например, не превысят ли ваши требования приложения ресурсы одного компьютера; какая часть вашего набора данных будет активным рабочим набором для запросы и т. д.).
Было бы целесообразно начать с наборов реплик и сравнить их как часть планирования вашей архитектуры и POC.
Некоторые заметки для начала:
Ведение журнала MongoDB, которое включено по умолчанию с версии 1.9.2, обеспечивает восстановление после сбоев и долговечность механизма хранения.
Наборы реплик являются строительным блоком для обеспечения высокой доступности, автоматического перехода на другой ресурс и избыточности данных. Каждому набору реплик необходимо минимум три узла (например, три узла данных или два узла данных и арбитр), чтобы включить аварийное переключение на новый первичный сервер через выборы.
Разделение полезно для горизонтального масштабирования, когда ваши данные или записи превышают ресурсы одного сервера.
Другие соображения включают планирование ваших документов на основе использования вашего приложения... например, если ваши документы будут часто обновляться и со временем увеличиваться в размере, вы можете рассмотреть возможность заполнения вручную, чтобы предотвратить чрезмерное перемещение документов.
Если это ваш первый проект MongoDB, вам обязательно следует прочитать ответы на часто задаваемые вопросы по наборам реплик и Sharding с MongoDB, а также для разработчиков приложений.
Обратите внимание, что выбор хорошего ключа для вашего случая использования является важным фактором. Неправильный выбор ключа шарда может привести к "горячим точкам" для записи данных или несбалансированным шардам, если вы планируете удалять большие объемы данных.