Senior Software Developer, Database Engine
Местоположение и тип занятости
At Querify Labs, we help technology companies create new data management products that reshape how businesses operate on data worldwide. We are looking for a motivated team member who will design and implement the core components of database engines, such as query optimizers, query engines, storage engines, and distributed protocols.
About the Company
At Querify Labs, we help technology companies build innovative data management products. We create query optimizers, query engines, storage engines, and distributed protocols.
Our customers are startups from the USA, Europe, and Israel, building new databases and platforms to address emerging and unique niches in the data management market.
Before joining Querify Labs, we worked on Apache Ignite, Hazelcast, Yandex Clickhouse, and Yandex Database (YDB, YQL) projects. Now we scale our expertise worldwide.
We are frequent speakers at Russian and international conferences (Highload++, Percona Live, ApacheCon), maintain a technical blog about databases, and actively contribute to open-source projects, such as Apache Calcite.
Our mission is to build a strong community of database experts in Russia who will drive innovation in the data management domain.
About the Role
The Database Engine Team at Querify Labs designs and implements the core database components. The team researches the existing and novel data processing approaches, prepares the design documents, creates proofs-of-concept, and writes the production code.
We write new databases in C++ and Java. Our stack includes:
- Apache Calcite for query optimization.
- Apache Arrow for vectorized and columnar data processing.
- RocksDB for storage-related tasks.
- LLVM for compiled query engines.
In this role, you will work closely with a technical project lead and other teammates on the design and implementation of various database components.
You will work on challenging technical problems that often do not have straightforward solutions, including but not limited to:
- Query engines: relational operators, vectorized and compiled execution, resource scheduling.
- Cost-based query optimizers: relational optimization rules, statistics gathering, join graph enumeration.
- Storage layers: recovery, concurrent access, indexes, data spilling.
- Distributed algorithms: transaction protocol, data replication fault-tolerance.
- Analyze open-source products and academic papers in the area of data management.
- Write design documents and prove the validity of your suggestions through cross-reviews and prototypes.
- Write production code in Java or C++ using Apache Calcite, Apache Arrow, RocksDB, LLVM, and other tools.
- Share your knowledge with the community through blog posts and conference talks.
- The successful candidate has a solid knowledge of foundational algorithms and data structures, and high motivation to learn theory and practice in the database and distributed systems domains.
- Strong analytical skills. Ability to grasp complex technical concepts and tie the impact of trade-offs to product goals.
- The thoughtful and empathetic mindset. A desire to partner with your teammates on challenging problems.
- Strong knowledge of C++ or Java. Readiness to learn new languages and tooling.
- Ability to communicate in English (both written and spoken).
- Experience with big data stacks is a big plus (Apache Spark, Apache Flink, etc).
- Experience with databases or distributed systems is a big plus.
- Experience with parallel algorithms and concurrency is a plus.
- Research publications are a big plus.
- Working in a team of experts in the areas of data management and distributed systems.
- Extraordinary complex and interesting tasks.
- High salary, definitively above the market average.
- Fully remote work with flexible working hours.
- Paid sick leave and day-offs.
- Ability to speak at international conferences.