Please enable JavaScript.
Coggle requires JavaScript to display documents.
2.4 MongoDB - Coggle Diagram
2.4 MongoDB
-
Шардирование - это горизонтальное масштабирование данных, при котором данные разбиваются на шарды (т. е. части) и размещаются на разных хостах кластера. Нагрузка на БД при этом распределяется по хостам, что позволяет добиться большей производительности системы, чем если бы она была расположена на одном мощном сервере. Это особенно важно, если данных или запросов к ним очень много
Позволяет
Обойти технические ограничения. Если БД работает на пределе производительности — можно разбить её на части и распределить запросы на чтение между ними
Ускорить доступ к данным для пользователей из конкретного региона. Например, международные соцсети могут хранить контент на русском языке на серверах ближе к России
Выполнить юридические требования. Например, хранить конфиденциальные данные на шарде, публичный доступ к которому отключен
Повысить доступность. Если БД находится на одном нешардированном хосте, то его выход из строя приведет к потере всех данных. Если же БД шардирована, то при отказе одного шарда все данные на других остаются доступными. Для шардов можно дополнительно настроить репликацию. Так вы обойдетесь без потерь, если сервер выйдет из строя. А размещение реплик шарда в разных зонах доступности даст вам отказоустойчивую систему.
Ускорить запросы. Они могут выполняться медленнее из-за того, что конкурируют за ресурсы сервера. Шардирование устраняет конкуренцию, исполняя запросы параллельно на разных серверах
Недостатки
Правильно шардировать данные, т. е. разбить их на части — непростая задача. Если вы сделаете это неверно, то мощности серверов будут использоваться нерационально. Например, потребуется много межсерверных запросов
Из-за несбалансированного распределения данных между шардами появляются горячие точки — разделы БД, к которым идет намного больше обращений по сравнению с остальными. Запросы к горячим точкам обрабатываются заметно медленнее
Имеет смысл если
-
-
Требования к скорости чтения и записи данных высоки. Шардирование распределит нагрузку по хостам, чтобы обойти технические ограничения
Особенности
Шардирование доступно для кластеров MongoDB с версией не ниже 4.0. Оно происходит с автоматическим созданием служебных хостов mongos (для маршрутизации запросов пользователей) и mongocfg (для хранения конфигурации шардов), которые тарифицируются отдельно от основных хостов БД
-
Отменить шардирование кластера невозможно. Чтобы воссоздать кластер до шардирования, придется сделать его резервную копию, а затем из копии создать новый кластер
Чтобы повысить доступность, составляйте каждый шард из трёх или более хостов БД
В отличие от строк реляционных БД, документы
-
позволяют сохранять объекты со сложной структурой, которая может изменяться
Подойдет, если необходимо
Управлять большим объемом данных с заранее неизвестной структурой (каталоги товаров, пользовательские профили, системы управления контентом)
-
MongoDB — это популярная NoSQL БД, в которой данные хранятся не в строках таблиц, а в документах. Один объект — один документ. Структура каждого документа подобна структуре JSON (JavaScript Object Notation).