Доклад

State machine на стероидах: серверные протоколы MySQL и PostgreSQL на Boost.Asio

В реальных аналитических системах данные редко живут в одном месте и под одним протоколом: разные команды, разные СУБД, разные требования к доступу и производительности.

На практике это приводит к задаче гетерогенной обработки данных, где система не владеет данными, а вынуждена принимать клиентские запросы, разбирать их и маршрутизировать к тем хранилищам, где данные уже находятся. В какой-то момент мы столкнулись с необходимостью реализовать такую логику на уровне серверных протоколов баз данных, а не поверх готовых драйверов или прокси.

Расскажу, как в рамках большого production-проекта была реализована серверная поддержка протоколов MySQL и PostgreSQL с использованием Boost.Asio и корутин. Будет уделено внимание проектированию и эволюции протокольной state machine, которая задает control flow в асинхронном C++ коде: как представлять состояния соединения, управлять переходами между ними и как не превратить код в нечитабельный набор асинхронных хэндлеров и шаблонов.

Спикеры

Доклады