Попытаюсь простыми словами объяснить, что это такое и для чего используется
➡ Реплицирование
Представьте, что у нас есть папка с фотками на ноутбуке. Мы боимся их потерять, поэтому копируем папку и сохраняем на жестком диске, в облаке и на флешке, а при обновлении добавляем новые фотки сразу во все места
В терминах БД это репликация – процесс создания копий (реплик) базы данных и поддержка их актуальности на разных серверах
Не путать с бэкапами! Бэкап означает создание копий до определенного момента и хранение их для аварийного восстановления, но без поддержки в актуальном состоянии
Цель: повышение отказоустойчивости и доступности. Если потеряем одну БД, то будем уверены, что где-то есть актуальная копия🎉
➡ Партиционирование
Снова пример из жизни: у нас дома есть большой шкаф👕, вплотную забитый носками. Представим, их там 1200. Чтобы освободить место, мы разгребаем вещи и складываем 300 носков в комод, 300 в тумбочку, 300 куда-нибудь еще, а 300 оставляем в шкафу
На языке БД это партиционирование – метод разделения больших таблиц на много маленьких секций. Важно, что все секции должны находиться на одном сервере
Партиционирование используют для распределения нагрузки, обхода ограничений на размер таблиц (менее актуально с современными технологиями) и для манипуляций с данными (охлаждение, удаление)
📌 Пример: у нас есть табличка Users, в которой 1 млн пользователей. Если использовать один из методов партиционирования, то таблица Users разделится на две, в одной будут юзеры с id от 1 до 500 тыс, во второй от 500 тыс до 1 млн
➡ Шардирование
Вспоминаем предыдущий пример, но теперь вещи из шкафа развозим в гараж, на дачу и домой к родителям. Получается, теперь 1200 наших носков хранятся в четырех удаленных местах.
В системах это шардирование – подход, предполагающий разделение таблиц на независимые сегменты (шарды). Важно, что каждый сегмент управляется разными серверами
К шардированию приходят, когда данные не вмещаются в один сервер, или у нас ограничены его ресурсы
➡ Когда что использовать?
– Реплицирование — если нужны отказоустойчивость и читаемая масштабируемость. Данные на разных серверах
– Партиционирование — если таблица очень большая, но сервер один. Данные хранятся на одном сервере, но в разных разделах/партициях
– Шардирование — если данных слишком много для одного сервера. Данные лежат на разных серверах
Иногда эти методы комбинируют: например, шардируют базу данных, а каждый шард реплицируют для отказоустойчивости.
—————
Этот пост не раскрывает особенности каждого из методов: в следующих расскажу о каждом отдельно
#полезное_системный_анализ
