Sharding - это еще одно название для «горизонтального разделения» базы данных. Возможно, вы захотите найти этот термин, чтобы прояснить его.
Из Википедии :
Горизонтальное разбиение - это принцип проектирования, согласно которому строки таблицы базы данных хранятся отдельно, а не по столбцам (как при нормализации). Каждый раздел является частью сегмента, который, в свою очередь, может находиться на отдельном сервере базы данных или в физическом местоположении. Преимущество заключается в том, что количество строк в каждой таблице уменьшается (это уменьшает размер индекса, что повышает производительность поиска). Если сегментирование основано на некотором реальном аспекте данных (например, европейские клиенты против американских клиентов), то можно легко и автоматически вывести соответствующее членство в шарде и запросить только соответствующий шард.
Еще немного информации о шардинге:
Во-первых, каждый сервер базы данных идентичен, имея одинаковую структуру таблицы. Во-вторых, записи данных логически разделяются в изолированной базе данных. В отличие от многораздельной базы данных, каждая полная запись данных существует только в одном сегменте (если нет зеркалирования для резервного копирования / избыточности) со всеми операциями CRUD, выполняемыми только в этой базе данных. Возможно, вам не понравится используемая терминология, но это действительно другой способ организации логической базы данных на более мелкие части.
Обновление: Вы не сломаете MVC. Работа по определению правильного шарда, в котором будут храниться данные, будет прозрачно выполняться вашим уровнем доступа к данным. Там вам нужно будет определить правильный шард на основе критериев, которые вы использовали для шардирования вашей базы данных. (Поскольку вы должны вручную разделить базу данных на несколько различных сегментов на основе конкретных аспектов вашего приложения.) Затем вы должны позаботиться о загрузке и сохранении данных из / в базу данных, чтобы использовать правильный фрагмент.
Возможно, этот пример с кодом Java проясняет (о проекте Hibernate Shards ), как это будет работать в реальном сценарии.
Для решения вопроса « why sharding
»: это в основном только для очень крупных приложений с большим количеством данных. Во-первых, это помогает минимизировать время отклика для запросов к базе данных. Во-вторых, вы можете использовать более дешевые машины более низкого уровня для размещения ваших данных вместо одного большого сервера, которого может уже не хватить.