Описание вакансии
Коротко о ролиBuild the execution engine: Design, implement, test, and support query operators, expression evaluation, execution scheduling, runtime planning, and resource management. Improve runtime performance: Optimize vectorized processing, concurrency, parallelism, memory usage, data exchange, and disk spilling.
Задачи:
— Разрабатывать движок выполнения запросов: проектировать, реализовывать, тестировать и поддерживать операторы запросов, вычисление выражений, планирование выполнения, управление ресурсами.
— Улучшать производительность выполнения: оптимизировать векторную обработку, параллелизм, использование памяти, обмен данными и сброс на диск.
— Диагностировать сложные проблемы: исследовать корректность и производительность запросов с помощью профилей, инструментов профилирования, телеметрии, бенчмарков, логов и данных из продакшена.
— Оптимизировать Java и JVM: улучшать использование CPU, поведение сборщика мусора, потоков и другие характеристики выполнения.
— Сотрудничать с командами Query Planner, Datalake, Product, Support и field engineering для улучшения запросов.
— Использовать инструменты разработки с поддержкой ИИ для понимания кода, отладки, генерации тестов, документации и анализа инцидентов.
— Применять инженерное суждение: проверять код и рекомендации, сгенерированные ИИ, через ревью, тестирование и бенчмарки.
— Повышать инженерный уровень: участвовать в дизайне и код-ревью, вносить вклад в техническое направление, наставлять других инженеров.
Требования:
— Опыт разработки ПО не менее 5 лет, предпочтительно в системах баз данных, выполнении запросов, распределённых системах или смежных областях.
— Сильные навыки программирования на Java; опыт с C++ будет плюсом.
— Хорошее знание основ компьютерных наук: структуры данных, алгоритмы, конкурентное и многопоточное программирование, асинхронное программирование.
— Понимание внутреннего устройства баз данных, обработки запросов, распределённого выполнения и оптимизации производительности.
— Опыт профилирования и оптимизации CPU, памяти, сборщика мусора, поведения потоков и других характеристик выполнения.
— Умение решать неоднозначные технические задачи и эффективно работать в межкомандной среде.
— Инженерное суждение для оценки компромиссов, проверки решений и принятия обоснованных решений при работе с новыми или ИИ-поддерживаемыми реализациями.
— Сильные коммуникативные навыки, чувство ответственности и стремление к качественной разработке.
Будет плюсом:
— Опыт с распределёнными движками запросов, движками баз данных или системами обработки больших данных.
— Знания в области векторного выполнения, операторов запросов, вычисления выражений, генерации кода или оптимизации выполнения.
— Опыт с JVM-профилированием, управлением памятью, кэшированием, сетевыми взаимодействиями, обменом данными, планированием выполнения или сбросом на диск.
— Знакомство с платформами Apache Arrow, Apache Iceberg, Parquet, Avro, Spark, Hadoop или облачными хранилищами.
— Участие в open-source проектах.
Условия:
— Удалённая работа.
— Полная занятость.
Компания Dremio — платформа lakehouse для аналитики и ИИ, использующая открытые технологии, включая Apache Iceberg и Apache Arrow, с клиентами по всему миру.
Контакты работодателя доступны по кнопке «Откликнуться» после входа.