Опишите основные преимущества использования масштабирования методами:
- активный master-сервер и пассивный репликационный slave-сервер;
- Всегда актуальная резервная копия данных на случай ппадения master-сервера
- Возможность отностиельно быстрого переключения slave в состояние master или восстановления данных на master
- Повышенная доступность, если настроить HA
- master-сервер и несколько slave-серверов;
- Можно автоматизировать быстрое переключение master-slave в случае сбоев
- Более высокая доступность и отказоустойчивость
- активный сервер со специальным механизмом репликации — distributed replicated block device (DRBD);
- В качестве основного хранилища используется один отказоустойчивый RAID-массив для всех серверов
- SAN-кластер.
- Суть - предшественник DRBD, внешнее устройство хранения, что позволяет монтировать его на нескольких серверах единовременно
Разработайте план для выполнения горизонтального и вертикального шаринга базы данных. База данных состоит из трёх таблиц:
- пользователи,
- книги,
- магазины (столбцы произвольно).
Опишите принципы построения системы и их разграничение или разбивку между базами данных.
Более уместно было бы завести еще несколько таблиц, таких как:
- Заказы
- Сопоставление заказов и книг
- Остатки книг по магазинам
и т.д. (прописал самый минимум, который пришел в голову)
Но при описании структуры буду отталкиваться от того, что у нас будут только указанные в задании 3 таблицы, хотя.
Разнесение таблиц на разные сервера.
В данном случае принял решение обойтись двумя серверами с целью экономии ресурсов серверов.
В виду того, что магазинов предполагается не слишком большое количество, а количество клиентов, вероятно, будет меньше, чем ассортимент книг (предполагаю условный книжный магазин широкого профиля), принято решение оставить на одном сервере таблицы с клиентами и магазинами, а таблицу с книгами вынести на отдельный сервер.
Хотя из соображений сохранности персональных данных, было бы уместно вынести таблицу с пользователями на отдельный сервер.
Разбивание содержимого таблиц по разным серверам
В данном случае зелёным подсвечены данные, которые будут храниться на обозначенном сервере, а объединение данных будет производиться уже на стороне клиента.
Для таблицы "пользователи":
- Объединяющим столбцом будет id_user (на основном сервере будет инкрементным, а на вторичном неинкрементным)
- Наиболее восстребованные на этапе авторизации данные (email, login и password) оставляем на основном сервере
- Менее восстребованные (first_name, last_name, profile_photo) выносим на вторичный сервер
Для таблицы "книги":
- Объединяющим столбцом будет id_book (на основном сервере будет инкрементным, а на вторичном неинкрементным)
- Наиболее восстребованные, name и remain (ака Название книги и Остаток) оставляем на основном сервере
- Менее восстребованные (description, author) выносим на вторичный сервер
Магазины решил не разделять, якобы у нас еще не слишком большая сеть магазинов.