Как только мою колду закроют по требованиям Activision я начну делать аналитической движок.
У меня есть такая идея - рассматривать выполнение запроса не как заранее выбранный логический -> физ план, а как непрерывную задачу управления ресурсами. Цель - выполнить работу достаточно быстро, но использовать настолько мало CPU, памяти и машин, насколько позволяет текущая ситуация.
Ответственность поделить на три уровня, названия условные:
- Conductor управляет задачей целиком: где её считать и как распределить ресурсы кластера.
- Supervisor управляет отдельной частью: например, есть ли смысл перезапустить, добавить воркеров или разбить данные.
- Run принимает решения опираясь на то, сколько данных, памяти и времени реально потребовалось и он единственный кто даёт реальный фидбэк наверх по цепочке. Зачем нужен фидбэк?
Каждое решение на Т1 Т2 Т3 уровне строится из суммы policy + hint + observations: жёстких ограничений, текущего предположения и фактов исполнения.
> Отчётик нужен на завтра а внезапно пришло много данных? Приостановить существующие процессы и выполнить нужное.
> Процесс был запущен на огромных ресурсах ради джойна 12 МБ? Выполнить на одной тачке и сделать себе пометку на будущие запуски.
Обычно такие решения принимаются обычными policy и эвристиками. Но если система попадает в ситуацию, которую трудно было предусмотреть заранее - тот же интерфейс позволяет передать контекст внешней модели вроде Jev!!
И получается на самом деле AI - FIRST ANALYTICAL DATABASE. Нужно ли оно кому-то? Нет, никто эвристическую модель близко к финансам не пустит. Остановит ли меня это? Хз. Звучит очень интересно
Post #911
221

- 🔥 3