Dilip Kumar



Reading time: 7 minutes

Tags:   postgresql (208)   enterprisedb (11)   parallel-query (2)   slru-optimization (1)   logical-replication (11)  
Category:   interviews   
Interview conducted by: Andreas Scherbaum

PostgreSQL is the World’s most advanced Open Source Relational Database. The interview series “PostgreSQL Person of the Week” presents the people who make the project what it is today. Read all interviews here.

Please tell us about yourself, and where you are from.

My name is Dilip Kumar, and I reside in Bangalore, India. I am recognized as a PostgreSQL contributor, having made significant contributions to the core features of the PostgreSQL open-source project, mainly in areas of Parallel Query, Logical replication, Performance improvements, and SLRU.

Dilip Kumar
Dilip Kumar

How do you spend your free time? What are your hobbies?

During my leisure time, I enjoy exploring various places with my family, engaging in playing badminton, or dedicating time to exercise and staying active.

Any exercises you do regularly?

Certainly, I frequently visit the gym for workouts and also engage in running and playing sports such as tennis and badminton.

Any Social Media channels of yours we should be aware of?

Last book you read? Or a book you want to recommend to readers?

“Designing Data-Intensive Applications” by Martin Kleppmann is an exceptional resource for delving into the intricacies of designing distributed systems.

Favorite movie, or show?

“Prison Break” holds a special place in my heart as my all-time favorite series. Its gripping storyline, intense suspense, and well-crafted characters have captivated audiences worldwide.

What does your ideal weekend look like?

I enjoy spending weekends with my wife and daughter, often taking short trips and exploring new places through driving. These moments create lasting memories and strengthen our family bonds.

Additionally, I prioritize staying active by playing badminton and exercising regularly. These activities not only keep me physically fit but also provide a fun way to unwind and destress.

Socializing with friends is another important aspect of my weekends. It’s a time to connect, laugh, and create meaningful memories together, adding joy and fulfillment to my life.

When did you start using PostgreSQL, and why?

That’s a fascinating journey with PostgreSQL! In 2008, I began using PostgreSQL and embarked on a project to integrate PostgreSQL’s executor engine with our in-memory database storage system. As part of this endeavor, we transformed PostgreSQL’s executor into a thread-based architecture. This experience provided invaluable insights into PostgreSQL’s internal code base and deepened my understanding of database systems.

Do you remember which version of PostgreSQL you started with?

Started working on PG 8.4.

I graduated from the esteemed “National Institute of Technology Jaipur” with a degree in Computer Science, which laid a robust foundation in computer science principles. During my time there, I honed my skills in the C programming language, a proficiency that has greatly benefited my work with PostgreSQL code.

I recently completed a project aimed at enhancing the performance of SLRU for PostgreSQL 17. I’m excited to share some informative blogs that delve into this work and also my talk to describe this problem in detail and the solution. Currently, I am working on implementing “Global Indexes for PostgreSQL”.

How do you contribute to PostgreSQL?

I contribute to PostgreSQL by developing new features, addressing performance issues, and conducting code reviews.

What is the most annoying PostgreSQL thing you can think of? And any chance to fix it?

Bloat is one of the most annoying issues. A couple of years ago we worked to solve this issue by designing a new undo-based storage engine called zheap. Unfortunately, it could not get committed to PostgreSQL because of its code size, complexity, and some of the open design issues. However, with such a storage engine, we can completely remove the bloat problem and tackle the root problem.

What is the feature you like most in the latest PostgreSQL version?

I find the incremental backup feature in PostgreSQL to be particularly beneficial, as it allows for efficient and incremental backups of data, reducing the time and resources required for backup processes. Additionally, I also like the performance optimizations implemented for the SLRU, especially since this addresses the long-standing performance issue related to subtransaction cache overflow.

Adding to that, what feature/mechanism would you like to see in PostgreSQL? And why?

I would love to see the introduction of undo-based storage in PostgreSQL. I believe that addressing bloat is crucial for PostgreSQL, and implementing undo-based storage could be a solution to this issue.

Should PostgreSQL have a built-in connection pooler?

While external connection poolers such as pgpool and pgbouncer are available, integrating a connection pooler directly into PostgreSQL could streamline the setup and configuration process for users, particularly for applications that rely on connection pooling.

Which skills are a must have for a PostgreSQL developer/user?

I think the key technical skills for developers include comfort with the Unix command line, debugging with GDB, a strong knowledge of C programming, proficiency in basic Git commands, and strong code review skills. These skills are crucial for navigating complex codebases, collaborating effectively with teams, managing code repositories, and optimizing performance-critical code. Additionally, developers should possess problem-solving abilities, critical thinking skills, attention to detail, and effective communication skills to excel in their roles and contribute meaningfully to software development projects.

Do you use any git best practices, which makes working with PostgreSQL easier?

Here are some git commands that I regularly use and find particularly helpful for PostgreSQL development: git rebase, git rebase -i, git commit –amend, and git push.

Which PostgreSQL conferences do you visit? Do you submit talks?

I attend conferences such as PGCon (previously held in Ottawa and now in Vancouver) and PGConf India. I also submit talks, and this year, I will be presenting on SLRU optimization at PGConf.dev Vancouver and participating in a Leadership meeting at PGCon.

Do you think PostgreSQL has a high entry barrier?

With a strong understanding of C programming and proficient code writing/reviewing skills, getting started with the PostgreSQL codebase is quite feasible. While contributing major features may require additional time and practice, one can begin by reviewing code and making small bug fixes. This approach allows for gradual familiarization with the codebase and provides valuable contributions to the PostgreSQL project.

What is your advice for people who want to start PostgreSQL developing - as in, contributing to the project. Where and how should they start?

Begin by immersing yourself in the PostgreSQL source code, followed by reading emails on the -hackers list, and reviewing small patches. As you gain familiarity, progress to fixing bugs and contributing small features. This incremental approach allows for a structured learning curve and gradual involvement in the PostgreSQL development process.

What is the best way to learn PostgreSQL?

I find that the PostgreSQL README files are excellently elucidated and also include references to the design principles they adhere to. This allows us to trace back to the papers that influenced the design, read the README file, and then attempt to correlate it with the source code. In my opinion, this approach represents the optimal method for understanding PostgreSQL’s codebase.

Do you think PostgreSQL will be here for many years in the future?

I strongly think so. With a strong foundation, active community, feature-rich capabilities, and a widespread adoption of PostgreSQL, this suggests that it is well-positioned to remain a prominent player in the database landscape for many years to come.

Would you recommend PostgreSQL for business, or for side projects?

I would recommend PostgreSQL for both business applications and side projects, depending on your specific needs, project requirements, and level of familiarity with SQL and database management systems. Its versatility, reliability, and strong community support make it a valuable choice for a wide range of use cases.

Are you reading the -hackers mailinglist? Any other list?

I keep up with the latest developments in PostgreSQL by reading the hackers’ list, where ongoing work is discussed. I actively contribute by posting my patches and reviewing others’ patches on the list. Additionally, I stay informed about committed features and reported bugs by following the committers’ list and bug list, respectively. This helps me stay updated and informed about the progress and issues within the PostgreSQL community.

SQL versus NoSQL databases?

The choice between SQL and NoSQL databases depends on the specific requirements of your application, including data structure, scalability needs, data relationships, query complexity, and consistency requirements. Both types of databases have their advantages and are designed to address different use cases in the realm of data management.

Anything else you like to add?

I want to thank Andreas for creating this platform, which not only allows us to share our views but also provides an opportunity to learn from others about their perspectives on PostgreSQL. It’s a fantastic way to engage and gain insights within the PostgreSQL community.


Share: