Алексей Миловидов—Не слишком глупые указатели в ClickHouse
C++ Russia — Конференция по разработке на Cpp
0:00 / 0:00
Алексей Миловидов—Не слишком глупые указатели в ClickHouse
3 556 просмотров · 7 лет назад
C++ Russia — Конференция по разработке на Cpp
16,8 тыс. подписчиков
3 556 просмотров · 7 лет назад
Подробнее о конференции C++ Russia: https://jrg.su/9Sszhd
— —
. . . ClickHouse — column-oriented DBMS. Конвейер обработки данных в ClickHouse оперирует кусочками столбцов — массивами однородных данных среднего размера. Для управления ресурсами для этих объектов было бы логично использовать std::shared_ptr либо интрузивный указатель со счётчиком ссылок. А возможность разделить владение очень удобно подходит для реализации common subexpression elimination в запросах.
Но на практике оказалось, что shared_ptr недостаточно безопасен. Нам пришлось реализовать новый вид указателей, с помощью которого можно точно контролировать модификации объекта. В докладе будет описана механика реализации этих указателей, детали их использования для сложных структур данных, примеры современных возможностей C++, необходимых для реализации. Также будет рассказано про несколько возможностей, которых не хватает в стандарте C++, чтобы сделать реализацию более простой.