**Компания:** Тинькофф
**Контекст:** Таблица событий содержит 2 млрд строк и растёт на 50 млн в месяц. Запросы аналитиков почти всегда фильтруют по дате. Нужно партиционировать таблицу.
**Задание:**
1. Напишите DDL для создания партиционированной таблицы по месяцам (PostgreSQL)
2. Создайте партиции на 2024 год
3. Напишите запрос, который покажет размер каждой партиции
4. Объясните, как добавлять новые партиции автоматически
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE events (
event_id BIGINT,
user_id BIGINT,
event_type VARCHAR(50),
event_data JSONB,
event_ts TIMESTAMP NOT NULL
) PARTITION BY RANGE (event_ts);
-- Индекс создаётся на родительской таблице, наследуется партициями
CREATE INDEX idx_events_user_ts ON events (user_id, event_ts);
CREATE INDEX idx_events_type_ts ON events (event_type, event_ts);
partitioning DDL оптимизация производительность
Это задание для уровня medium. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «data_engineering» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: partitioning, DDL, оптимизация, производительность.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть другие задания в категории «data_engineering», продуктовые кейсы, справочник метрик, AI мок-собеседование с разбором ваших ответов.
← Все задания