Software Engineer - Metadata

See more jobs from Snowflake Inc.

almost 2 years old

This job is no longer active

Build the future of data. Join the Snowflake team.

Snowflake Metadata team builds a scalable metadata system that allows Snowflake to query across petabyte-scale data efficiently. The team develops distributed and multi-layered caches, transactions, cloning, time travel and other core Snowflake services. It is also responsible for providing the foundation of global features like cross-region replication, data sharing, and data marketplace.  

 

AS A SOFTWARE ENGINEER - METADATA, YOU WILL:

  • Solve real business needs at large scale by applying your software engineering and analytical problem solving skills.
  • Build the next-generation transaction system, storage engine and multi-tenant database system.
  • Design, develop, and support a highly-parallel and fault-tolerant database system including a decentralized caching system of terabytes of metadata.
  • Design and implement critical high-performance systems to handle the ever growing request rate of our database.
  • Design and implement core foundational features including transactions, DDL/DML logs, global messaging mesh as well as advanced features built on top of the metadata, such as cloning, time travel, backup/restore and replication.
  • Analyze and understand performance and scalability bottlenecks in the system and solve them.
  • Have the opportunity to work on various background services that power Snowflake's proprietary multi-level metadata system to support fast compilation and query optimization.
  • Ensure operational readiness of the services and meet the commitments to our customers regarding availability and performance.

We are looking for strong system engineers who are interested in solving some of the most challenging problems in distributed systems, performance and scalability, and passionate about building system software with high quality.

 

OUR IDEAL SOFTWARE ENGINEER WILL HAVE:

  • 2+ years industry experience designing, building and supporting large scale systems in production.
  • Strong computer science fundamentals including data structures, algorithms, and optimally distributed systems.
  • Systems programming skills including multi-threading, concurrency, caching, etc. Fluency in C++ or Java (or other similar procedural object-oriented language) is preferred.
  • Broad experience with identifying and implementing creative solutions to real customer problems.
  • Knowledge of database internals is a big plus.
  • BS in Computer Science; Masters or PhD Preferred.