Derk van Veen



Reading time: 9 minutes

Tags:   postgresql (208)   postgres (15)   partitioning (5)   adyen (2)   chess (2)  
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.

I was born in Zoeterwoude (Netherlands), a small village close to Leiden, where Floor Drees was born. Leiden is where I went to secondary school.

The first 15 years of my life I spent building Lego, playing outside and practicing sports. When I started my study of Applied Physics in Delft, I was the only student who didn’t know how to program and didn’t like computers. One of the practices in the first year was to assemble a desktop computer and I was the only student who had absolutely no clue how to do this and it took me two days instead of half an afternoon.

But somewhere during the first or second year at the university my dad was working on some project for his work and that was, at the age of ~20, how I got my introduction into VBA and I was amazed by the possibilities, the elegance and the power of programming in general. From this moment on I started my path to being a geek 😀. By the time I graduated I could program in Java, C, C++ and Fortran (yes, really) but still didn’t know what a database was. The best definition I could come up with at that time would have been “something like Microsoft Access???”.

Derk van Veen
Derk van Veen

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

Playing chess is one of my biggest hobbies. At conferences my chess board is my permanent traveling companion. It is also a good way to get to know new people. I am not a member of a chess club, but try to join a community event every Sunday in my neighborhood. It is a nice way to meet people outside my bubble and have some nice games of chess as well.

Boriss Mejías took the initiative last year in Prague to start the official PostgreSQL Chess Club. We are working on getting more chess activity between the community members. If you are a chess player as well, you can contact Boriss to join this beautiful club. And there is a rumor going around that there might be a small chess tournament in Athens.

Besides playing chess I play squash. Playing a game of squash is a pleasant and efficient way to make me tired, have fun and drink some beers with other people.

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

LinkedIn is the only platform where I am an active member and I don’t post that much. When I spend too much time on socials I get anxious about it and want to check every five minutes whether something has happened.

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

The book which made the most impact on me is “the 7 habits of highly effective people”. It showed me the way to take control over my life instead of being the passenger of it.

What does your ideal weekend look like?

On my ideal weekend I spent time camping with my family. I love being out in nature and doing it with my wife and daughters makes it the best. We have a very small campsite close to home where we love to go. Just relax a bit, cook on open fire and enjoy the time together.

What’s still on your bucket list?

I try to keep it short. Don’t delay what you can cross off. You get a free new day every day again, until you don’t.

What is the best advice you ever got?

You have two ears and only one mouth. Use them in that ratio. Talking about yourself and your experiences makes you feel good, but listening is the start of a relationship. Listening to others gives you new perspectives and helps you grow in the end.

When did you start using PostgreSQL, and why?

I have been working with PostgreSQL now for (only) 3,5 years and I started because I was bored. At the time I was a database consultant for Oracle and Db2 and my contract was coming to an end, but the company was about to introduce PostgreSQL to their stack. In my meeting with the manager, I expressed the feeling my assignment was coming to an end, but I would stay if I could work on PostgreSQL. And that is where my journey started.

Do you remember which version of PostgreSQL you started with?

Probably version 11 or 12 (Sorry community for joining so late).

I have a master degree in Applied Physics. University teached me to create working, totally unmanageable code and nothing about databases. More importantly, they teached me how to look at problems. How to take a problem apart to its essence and try to work on a solution from there on. My current job is exactly that: make a clear problem description and solve it without any imaginary limitations that usually exist in your head and in the heads around you.

At the moment I am working on partitioning (again). At Adyen we invested heavily on partitioning and created our own framework for managing partitions. The existing frameworks didn’t work out with the workload we have and we optimized for minimal locking while maintaining partitions.

At the moment we can maintain our partitions with ease, but performance is not optimal. I am currently investigating the optimal partitioning strategy with respect to performance. How big should a partition be? How many should we have? How to optimize joins? As soon as I have the answers I will share the results, hopefully at conference(s) and definitely in our series of articles about the topic.

How do you contribute to PostgreSQL?

At Adyen we don’t have a contributor or committer (yet, please contact me), but we do have a lot of knowledge. We find and fix interesting problems, investigate possibilities and experiment with a variety of different tools. Our contribution to the community is to share our findings.

What is your favorite PostgreSQL extension?

It must be pg_stat_statements. I can’t imagine myself running a database without it.

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

I am really missing a way to get EXPLAIN plans for currently running queries. There is a chance of fixing it, but my skills are not matching this problem.

Should PostgreSQL have a built-in connection pooler?

To me a database and a connection pooler are two different systems, each solving a different kind of problem. I rather have two separate components doing best what they are designed for than one product to master the entire universe.

Should PostgreSQL have built-in multi-master replication?

I would disagree. Multi-master is a complicated setup, and I think it is hard to manage correctly out of the box. Setting it up might seem easy, but the consequences of architectural decisions are hard to oversee. In my personal opinion, a lot of companies already struggle to understand and implement high availability correctly, and multi-master is even harder to understand. Preventing troublesome implementations should prevalate out of the box cool features.

Could you describe your PostgreSQL development toolbox?

Your development toolbox should match your personal preferences, skills and limitations. Every tool has its unique selling points and disadvantages. In the end you have to find a tool which enables you to do your job with ease.

I like to use the most basic tools like vi and the good old command line.

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

Curiosity. PostgreSQL, like any other database, is a complex product. Nobody fully understands all the details and can achieve optimal performance in any application with the wave of the wand.

Every big project you do requires research and will bring you new knowledge. Without curiosity I wouldn’t have developed the knowledge and skills I have today.

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

Visiting conferences is something I recommend to everybody. When you meet people in person it is so much easier to build connections. After talks you can meet the presenters who are always willing to share more knowledge with you. Visiting conferences comes with a price tag, but I think it is definitely worth it.

When it comes to conferences I feel very privileged, I try to present at one conference a month.

Do you think PostgreSQL has a high entry barrier?

It depends on your aim. If you want to create a database quickly and start using it, PostgreSQL has a very low entry barrier. When your aim is to make contributions to the open source project, the entry barrier is much harder to overcome.

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

I am still trying to figure this one out myself. Please read this as an open invitation to reach out to me.

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

YES. The practical reasoning is that databases are very hard to get rid of once you start using them. Even if you are running a terrible database flavor, migrating away is always hard and painful. And there is always one user in the world who is very happy with a system and willing to stick with it. But that is the pessimistic answer. In my humble opinion PostgreSQL is a great database which will be around for a long time just for that reason.

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

Yes :)

For both, of course. And if you think you can’t use PostgreSQL for business you need to redo your research.

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

I am not actively reading the mailinglist. It is just too much to keep up with. But when I face problems it is one of my favorite sources to find real deep knowledge about a topic.

What is your opinion on ORMs?

Even after seeing them for over 10 years, I am still trying to work this question out. They are great in a way that they can save developers lots of time writing trivial queries and make data access easy.

My problem with ORMs is that they usually find a way to screw up without developers noticing it, which in turn slows the entire database down. The other downside is that they prevent people from learning SQL, which is a very powerful (sub)language if used correctly.

For me an ORM is like going on holiday to a foreign country with just a dictionary. It helps you to survive and order bread in a bakery, but you will never be able to have a conversation with the locals. And just to make the analogy clear; the locals are not the DBAs, it’s the data.

SQL versus NoSQL databases?

They both have a good reason for existence. The one might shine where the other sometimes struggles and neither is perfect. When you have to decide on what database you are going to use you’d better understand why you are picking one or the other.


Share: