Обязанности:
Чем предстоит заниматься: Глубокое изучение существующей кодовой базы (хранение данных, движок выполнения запросов, слой обработки запросов); Анализ архитектурных решений (reverse engineering) и ключевых компонентов системы; Выявление узких мест и архитектурных ограничений, подготовка предложений по улучшению; Документирование устройства системы и ключевых компонентов; Проектирование и развитие функциональности системы обработки данных; Работа со слоем хранения данных на базе RocksDB: оптимизация compaction, кэширования и транзакций; Проектирование layout’ов данных в памяти и на диске; Интеграция и развитие движка выполнения запросов (Velox); Оптимизация планирования и выполнения запросов; Развитие совместимости с PostgreSQL (wire protocol, SQL-диалект); Профилирование CPU, памяти и диска, оптимизация критических участков кода; Проведение бенчмарков и сравнительное тестирование; Разработка модульных, интеграционных и нагрузочных тестов, участие в код-ревью.Что мы ожидаем от будущего члена команды: Уверенное владение современным C++; Опыт системного программирования от 3-х лет; Сильные алгоритмические навыки и понимание структур данных; Опыт работы с многопоточностью и конкурентностью; Опыт работы с высоконагруженными системами; Умение разбираться в сложном чужом коде и эффективно с ним работать; Знание принципов работы операционных систем (память, диск, сеть); Английский язык на уровне чтения технической документации;Будет плюсом: Опыт работы с RocksDB, Velox или PostgreSQL; Опыт разработки баз данных, поисковых систем или query engines; Понимание LSM-деревьев, индексов, query planning; Опыт оптимизации работы с памятью, диском или сетью; Участие в open-source проектах;Условия работы: Конкурентный уровень дохода; Гибкий подход к началу рабочего дня; Возможность гибридного или удалённого формата работы; Работа в сильной инженерной команде над сложным техническим продуктом; ДМС (после испытательного срока);Похожие вакансии