Хранение: SQL, NoSQL, индексы, шардирование
В этом уроке мы учимся выбирать, где приложение хранит свои данные. База данных (упорядоченное место, где программа хранит информацию, как гигантский картотечный шкаф) — это сердце системы. Мы выбираем её на основе паттернов доступа (как данные на самом деле читаются и записываются), на основе согла
System Design (планирование того, как построить крупное ПО, обслуживающее множество людей) похож на планирование города: дороги, склады, светофоры и ремонтные бригады, чтобы город продолжал хорошо работать даже в самый плотный час пик.
- Моделирование хранения
- Ключевой навык этого урока: выбор того, где хранить данные (база данных), исходя из того, как они на самом деле читаются и записываются (паттерны доступа), из согласованности, из индексов («оглавление», ускоряющее поиск) и из шардирования (разделение данных на несколько частей, когда они становятся слишком большими).
- Компромисс
- Осознанный выбор, у которого есть и выигрыш, и цена — как выбор маршрута: быстрая дорога стоит платы за проезд, а бесплатная занимает больше времени. На собеседовании вы объясняете интервьюеру выигрыш и цену каждого выбора.
- Эксплуатационная метрика
- Число, которое показывает, действительно ли решение работает, когда система запущена и обслуживает реальных пользователей (продакшен). Например: задержка (сколько времени занимает ответ), доля ошибок (доля запросов, которые завершаются неудачей), отставание очереди (сколько задач стоит в очереди) и доля попаданий в кэш (как часто мы нашли готовый ответ). Как приборы на панели автомобиля — они говорят вам, всё ли в порядке.