СОВЕТ ДЛЯ УСПЕШНОГО ПРОХОЖДЕНИЯ СЕКЦИИ SYSTEM DESIGN НА СОБЕСЕДОВАНИИ
Одна из моих любимых секций в собеседовании разработчиков - System Design. Что мне в ней нравится? Тут нет правильного ответа, который можно заучить. Тут важно именно рассуждения кандидата, его опыт, знания технологий, то как он подходит к задаче.
Ошибка большинства разработчиков при выборе технологий/СУБД: взять что-то универсальное или только то, с чем работал на работе.
Пример: проектируется социальная сеть aka VK/Facebook. Нужно выбрать БД для сообщений, пользователей, друзей. Большинство разработчиков выбирают для этой задачи Postgres/MySQL объясняя это тем, что данные хорошо ложатся в реляционную модель. Действительно, фишка Postgres/MySQL в том, что это СУБД универсальные, позволяющие решать многие задачи (но не всегда эффективно).
В 2024 году важно не то, как данные можно представить, а то как вы их используете! Т.е. необходимо отталкиваться от кейсов использования данных, от нагрузок и т д. Пример: какой смысл использовать реляционную БД для хранения чатов и сообщений, если 99% процентов запросов будут по первичному ключу чата? Для этого больше подойдут NoSQL решения (KV/WideColumn/Column).
К тому же очень важно понимать как та или иная технология может масштабироваться. Это очень важно при проектировании системы. Лучше выбрать 1 раз хорошую технологию и горизонтально ее масштабировать, чем каждый раз внедрять костыли и переходить с одной технологии на другую.
Оставил шпаргалку с СУБД и их классификацией:)
Всем хороших выходных!
Post #54
724

- 👍 9
- ❤ 4
- 🔥 2
- ❤🔥 1
- 🙏 1