Wednesday, September 19, 2007

Sr. PostgreSQL DBA at Etsy Inc.

Location: United States

Description:

Etsy is seeking a bright and seasoned PostgreSQL DBA to be in charge of our databases. We are looking for someone who is highly motivated to work in a fast paced small team environment. You will be involved in creating, maintaining and managing high availability PostgreSQL databases in a Linux environment.

Interested candidates should send their solutions to the problems at the bottom of this page, along with their resume, to work@etsy.com.

Primary responsibilities:
  • Managing 24/7/365 high availability PostgreSQL databases
  • Responsible for database data integrity
  • Work closely with the development team to design optimal database schemas and stored procedures
  • Work closely with System Operations to research and plan optimal hardware for growth
  • Proactively research and avert database related issues
Qualifications:
  • Bachelor's Degree or equivalent
  • 5-7 years PostgreSQL or related DB administration experience
  • 2+ years in a 24/7/365 environment
  • Experience tuning linux to get the best performance possible for PostgreSQL
  • PostgreSQL configuration and performance tuning experience
  • Experience in terabyte-sized OLTP environment
  • Experience with database layouts on high performance disk subsystems
  • Experience working with PostgreSQL backups
  • Experience performing a full restore to a PostgreSQL database using dumps and transaction logs. Disaster Recovery Experience
  • Experience with DB replication, clustering, and table partitioning
  • Excellent SQL and PLpgSQL skills
  • Knowledge of Stored Procedures, Triggers, Views, and Types
  • Understand use of Normalization and Denormalization, benefits of each
  • Networking Experience - TCP/IP Database Connectivity (JDBC, ODBC, etc.)
  • Excellent communication skills, both written and verbal
  • Strong interpersonal and relationship building skills conducive to team development
  • Perl/Python/Shell scripting
Technical Problems:

General
  • 1. Foriegn Keys. What are they, what are the benefits, what are the downsides?
  • 2. Tablespaces. What are they and how are they usefull?
  • 3. How do I figure out how large my database is, and what tables/indexes are the biggest?
  • 4. Normalization. What are the benefits, and what are the drawbacks? Be sure to discuss join complexity.
A bit more specific
  • You have two identical machines with no shared storage between them. Your application currently uses one of them as a primary master database and leaves the second one is untouched. How would you set up the secondary machine to be a warm standby of the primary using Postgresql 8.1? How about Postgresql 8.2?
  • Someone comes to you and says, "My PG database is slow!" How would you start the process of figuring out what was wrong? What tools would you use?
  • You're looking through the pg log files and you come across this little gem: "Deadlock detected, Process 4893 waits for ShareLock on transaction 3372155030; blocked by process 10835. Process 10835 waits for ShareLock on transaction 3372152381; blocked by process 4893." What does it mean, and how would you go about resolving the issue?
Link

No comments: