Ответ 1
Простой пример горизонтального масштабирования VS. вертикальное масштабирование только с помощью
Учитывая пример приложения, например: Приложение имеет много клиентов, каждый клиент имеет несколько пользователей.
обновление: Ни один клиент не должен знать о другом клиенте, каждый пользователь принадлежит исключительно одному клиенту.
Вертикальное масштабирование:
Данные клиента хранятся в нормализованной базе данных на базе SQL. учетные данные пользователя для всех пользователей хранятся в таблице client_users.
Преимущества
- Самый короткий путь сопротивления для развития
- относительно легко поддерживать целостность с помощью
- Простота резервного копирования
Проблема:
Поскольку все учетные данные клиента хранятся в этой таблице вместе со связанными данными, для поддержания или увеличения производительности потребуется увеличить уровень вашей базы данных с большим количеством ресурсов или инвестировать в большее количество подчиненных устройств этому одному хозяину.
Горизонтальное масштабирование:
Каждый клиент существует в схеме с префиксом таблицы. client_users становится client01_users
Преимущества
Кто-то, обладающий навыками промежуточного уровня в администрировании БД, мог написать простой script для копирования клиентских # _ * таблиц на новый сервер БД примерно через 5 минут (затем еще один час для проверки работоспособности/проверки/проверки). Таким образом, вы можете перенаправлять своих клиентов с низким трафиком на сервер с резервированием и получать выгоду от экономии инфраструктуры при зарядке ваших более высоких клиентов трафика, требующих специального оборудования.
Проблемы
- Время техобслуживания/разработки может полностью развиться в забвение и парализовать, если общие методы не включают системы управления изменениями и системами изменения схемы.
- Простая задача, например добавление/удаление столбца, займет гораздо больше времени, поскольку вам придется делать это на нескольких таблицах/машинах в режиме блокировки до изменений программного обеспечения.
- Резервное копирование становится довольно интересным иногда
Резюме
Если в начале я вижу возможность совместного использования, я буду бороться с зубами и гвоздями, чтобы добиться этого. Для нового клиента с проблемами масштабирования после заключения контракта мое первоначальное предложение будет включать рефакторинг, чтобы включить очертание или не поделиться принципами. На мой взгляд, дополнительную сложность можно контролировать, если подходить/обрабатываться правильно.