|
| 1 | +## Описание кейса |
| 2 | +Создать бэкенд который принимает 1_000_000 запросов (аналитика) в минуту и должен выдавать отчеты и статистику (аналитика) и давать данные ML-модели. |
| 3 | +## Задача |
| 4 | +1. Запись в БД должна проходить очень быстро (<=10ms) |
| 5 | +2. Данные необязательно должны быть персистентными |
| 6 | +3. Данные можно хранить без индексации |
| 7 | +4. Должны поддерживаться инкрементальные обновления данных на основе статистики |
| 8 | + |
| 9 | +## На что обращаем внимание |
| 10 | +1. Знаком ли с sharding и репликацией БД |
| 11 | +2. Знаком ли с колоночными БД |
| 12 | +3. Знаком ли с Data Lake, OLAP |
| 13 | +4. Знаком ли с решениями по потоковой обработке данных - Apache Spark, Apache Airflow |
| 14 | +5. Знаком ли с брокерами сообщений - Apache Kafka, RabbitMQ |
| 15 | +6. Знаком ли кандидат с паттернами realtime и batched - обработки данных |
| 16 | +7. Знаком ли кандидат с window-функциями (partition by, etc.) |
| 17 | +8. Знаком ли кандидат с подходами построения кластера БД - Multi-Master, Primary-Secondary, writes only on primary - reads only on secondary |
| 18 | + |
| 19 | +## Пояснения |
| 20 | +1. Почти нереально записывать в СУБД <=10ms потому что может быть сетевой latency, кластер может развалиться и т.д. |
| 21 | +2. Можно использовать redis - что нам даст O(1) на insert |
| 22 | +3. СУБД дороже в плане инсертов, чем складирование в файлы или в memcache (redis, memcached) |
| 23 | +4. Горизонтальное масштабирование (для потоковой обработки) требует детального планирования: |
| 24 | + * как именно будем дробить задачу |
| 25 | + * как разбираться с падениями воркеров (идемпотентность) |
| 26 | + * как мониторить работу воркеров |
| 27 | +5. Кандидат должен спросить нужно ли гарантировать уникальность записей в БД? |
| 28 | +6. Для поддержки инкрементальных обновлений чаще всего необходимо поднимать отдельный инстанс БД, в котором будет храниться статистика (которая обновлеяется реже чем аналитические запросы будут приходить). Отдельный инстанс не будет испытывать нагрузки, в отличие от БД в которую записываются аналитические запросы. |
| 29 | + |
| 30 | + |
| 31 | +Есть аналитика, которая шлет 100500 запросов в бек. Бек должен писать в данные в базу, как-то отдавать ML и строить пользовательскую историю. |
| 32 | + |
| 33 | +Проблема в том, что бек принимает запросы и долго пишет в базу. Как можно решить проблему? |
0 commit comments