Replication, Partitioning и Sharding
(продолжение предыдущего поста)
1. Replication (репликация)
- Суть: копирование данных на множество серверов. Каждый сервер хранит полную копию датасета.
- Ключевые особенности:
- обеспечивает работу системы при сбоях (если один сервер выходит из строя, другие продолжают работать);
- масштабирует трафик чтения (но не записи);
- использует модели «ведущий–ведомый» (leader–follower) или «множество ведущих» (multi–leader);
- оптимальна для нагрузок с преобладанием операций чтения (read–heavy workloads).
- Пример использования: создание дополнительных slave–серверов для снятия нагрузки с основного сервера, выполнение ресурсоёмких задач (например, аналитических отчётов) на отдельных серверах без влияния на работу других пользователей.
2. Partitioning (партиционирование)
- Суть: разделение большой таблицы на более мелкие части (партиции) внутри одного сервера базы данных. Каждая партиция хранит подмножество строк.
- Ключевые особенности:
- ускоряет запросы к большим таблицам за счёт распределения нагрузки;
- упрощает обслуживание и очистку данных (cleanup and maintenance);
- не требует добавления новых машин — работает в рамках одного сервера;
- разбивает данные по выбранным администратором критериям (например, по дате публикации на новостных сайтах).
- Пример использования: секционирование таблиц с большим объёмом данных для ускорения обработки запросов.
3. Sharding (шардирование)
- Суть: распределение данных по разным физическим машинам (шардам) на основе ключа шардинга. Связанные данные группируются и хранятся на одном сервере.
- Ключевые особенности:
- позволяет горизонтально масштабировать систему (horizontal scaling);
- масштабирует как трафик чтения, так и записи;
- требует логики маршрутизации, «осведомлённой» о шардах (shard–aware routing logic);
- используется, когда одна база данных не справляется с нагрузкой;
- ключ шардинга (например, ID пользователя) определяет, на каком сервере будут храниться данные.
- Пример использования: в социальных сетях все данные пользователя (по ключу — ID пользователя) хранятся и обрабатываются на одном сервере, что упрощает обработку и ускоряет запросы.
### Краткое резюме:
- Replication — про отказоустойчивость и масштабирование чтения через копирование полных копий данных.
- Partitioning — про ускорение работы с большими таблицами путём разделения данных внутри одного сервера.
- Sharding — про распределение данных по разным серверам для масштабирования как чтения, так и записи, подходит для крупномасштабных систем.
Post #3056
1.99K