План исполнения как отдельная сущность | Мой цифровой сад

План исполнения как отдельная сущность

план строится отдельно от файла и его можно показать пользователю до запуска — как terraform plan; исполнитель оценивает объём и предлагает оптимизации

План исполнения как отдельная сущность

Сначала строится дерево намерений, а потом — план исполнения. План — отдельная сущность, не скрытая в файле.

UX по образцу terraform plan

План можно показать пользователю до запуска, практически как terraform plan:

✓ GET /organizations
→ 23 organizations
→ foreach organization
    → GET /organizations/1/users
    → GET /organizations/2/users
→ foreach user
    → GET /users/15/repositories

Это совершенно другой UX: пользователь видит, что именно будет выполнено, ещё до запуска.

Оптимизация плана

Исполнитель оценивает объём и предлагает варианты:

Появляется настоящий query planner, а не линейный исполнитель.

Архитектура

httplan file → Parser → Execution Graph → Planner → Executor

Planner определяет зависимости, параллельность, циклы, пагинацию и повторные попытки. Пользователь может посмотреть получившийся план перед запуском — как план в make или SQL-оптимизаторе.

Источники

Связанные заметки

Evolution