Прими к сведению 4

Кэширование
  1. Если нужна гарантия записи — пиши сразу в БД и кэш (write-through). Если можно рискнуть — write-back (кэш сам синхронизируется). И не забудь про TTL.
  2. Писать в кэш как в основное хранилище — путь к потере данных. Если хочется ускорить процесс, то используй write-behind (сначала кэш → потом база) и проверяй TTL.
Частые ошибки студентов
  1. Шардирование ≠ панацея
    1. Не кидайся сразу делить базу на шарды. Сначала оптимизируй запросы, индексы и проверь через EXPLAIN ANALYZE. Часто проблема не в масштабе, а в кривом запросе.
    2. Пример из практики: запрос может тупить из-за того, что база игнорила индексы — оказалось, надо было переписать условие.
  2. Горячие шарды из-за плохого распределения
    1. Избегай шардирования по географическим признакам (например, городам) из-за дисбаланса нагрузки.
    2. Используй виртуальные шарды. Виртуальные шарды случайно распределяются по кольцу хеширования, что снижает риск перекоса при добавлении/удалении нод. Например, 1000 виртуальных шардов на физический.
  3. Кэш без прогрева может выстрелить в проде
    1. Если после деплоя кэш пустой, система будет тормозить. Прогрей его заранее (cache warming) или используй статистику популярных запросов.
    2. Заведи воркера, которые обновляют данные на основе статистики
  4. Базы в кубере — плохая идея
    1. Kubernetes не для stateful-сервисов (баз данных). Они могут «умереть» в любой момент, а восстановление — боль.
  5. Неправильный выбор БД
    1. MongoDB для переписок → антипаттерн: реляционная БД лучше для JOIN и сортировок
    2. Графовая БД для простых связей → избыточность (SQL-таблиц достаточно)
Общие советы
  1. Хранение данных
    1. «Горячие» данные (активные посты) храни в Redis или PostgreSQL
    2. «Холодные» данные (архив) — в S3. И да, поиск по архиву будет медленным — это норма
  2. Тестируй на падения: Что будет, если очередь упадет? А если кэш переполнится? Проверяй edge cases.
  3. Документируй выбор: Почему взял MongoDB, а не PostgreSQL? Зафиксируй решение, чтобы через месяц не гадать.
  4. Не усложняй: Часто простое решение (как реляционная БД) работает лучше «модного» (графовой БД).