Алексей Миловидов
Компания: ClickHouse Inc.
ClickHouse — column-oriented DBMS. Конвейер обработки данных в ClickHouse оперирует кусочками столбцов — массивами однородных данных среднего размера. Для управления ресурсами для этих объектов было бы логично использовать std::shared_ptr либо интрузивный указатель со счётчиком ссылок. А возможность разделить владение очень удобно подходит для реализации common subexpression elimination в запросах.
Но на практике оказалось, что shared_ptr недостаточно безопасен. Нам пришлось реализовать новый вид указателей, с помощью которого можно точно контролировать модификации объекта. В докладе будет описана механика реализации этих указателей, детали их использования для сложных структур данных, примеры современных возможностей C++, необходимых для реализации. Также будет рассказано про несколько возможностей, которых не хватает в стандарте C++, чтобы сделать реализацию более простой.
Компания: ClickHouse Inc.