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