On March 5th, 2024, we had the PostgreSQL March Meetup in Berlin. Zalando hosted the Meetup in their Berlin Headquarter near the Mercedes-Benz Arena, close to the River Spree, and the Oberbaum Bridge.

It’s been a while since the PostgreSQL Meetups in Berlin have been at the Zalando office, 2019 to be exact. The new office at Valeska-Gert-Straße has more space and a better audio and video system, compared to the previous location in Mollstraße.

As usual, the Meetup had two speakers: Ilya Kosmodemiansky from Data Egret, and Polina Bungina from Zalando.
Matthias Adler, the Team Lead Databases, gave a quick introduction and explained what Zalando is doing with databases. They have around 3000 database clusters on Kubernetes, and are the main developer for Spilo. Patroni was born in Zalando, and Zalando is still one of its major maintainers.

Ilya “hydrobiont” Kosmodemiansky: PostgreSQL Worst Practices

Ilya breaks PostgreSQL since the v7.x days, and has a collection of around 140 PostgreSQL Worst Practices. To top this off, he also until recently built the slides with LaTeX and Perl. The collection includes goodies like:
Try to create as many indexes as you can
Because why not, indexes consume no disk space, and don’t need shared_buffers.
Long running Transactions are liked by DBAs: they know you exist
That is one way to receive appreciation!
Another one:
Never use Foreign Keys!
Reminds me of MySQL …
You can have very Diverse data inconsistencies when data is checked in the app.
Why use fancy relational database technologies like Foreign Keys, Primary Keys or Constraints when one can just pull all the data from tables and do checks in the application. Guaranteed to be slower!
Replication is Backup
Enhanced by me:
“Who needs data anyway”
And of course the GDPR is the perfect excuse to never delete data:
Big Data, because nobody likes small data!
Ilya also mentioned
100 GB of data in a TB size database
Which references heavily bloated tables. The size of the database can easily be several times the size of the actual data, and that’s easy to achieve if one turns off Autovacuum. But 100 GB - these are rookie numbers these days.
And I’m a bit disappointed that he not once mentioned ORMs.
All in all a very good talk, and every version he presents is different
You can find the slides here.
The slides are published under the “WPL” licence, aka: “Worst Practice License”. That means:
- Take it!
- Use it in production!
- #blamemagnus
Pizza
The favorite food for Meetups seems to be pizza, this Meetup is no exception. Unfortunately I forgot to take a picture of the tables, but it was nevertheless delicious!
Food and drinks were both provided by Zalando.
Polina Bungina: Peculiarities of logical decoding in PostgreSQL

Polina first explains what CDC is, and how it can work in PostgreSQL.
Logical Decoding can be used to capture all the DML changes in a database, and export them for other consumers.
She then lists a number of potential problems with this approach, like:
- Replication slots (primary needs to keep WAL)
- Big transactions (produce a lot of WAL in a very short time, needs to be stored and replicated)
And if that is not enough, she moves on to explain “specific hazards”:
- What if the replication slot is still there, and the consumer is not fetching WAL
This can lead to situations where the consumer is no longer able to fetch the outstanding WAL in time, while the primary is producing more WAL.
Problems with keep-alive messages in PgJDBC
Using pg_repack, which on it’s own can generate a lot of WAL - sometimes too much for the consumers
You can find the presentation here.
Discussion
After the Meetup, a larger crowd of people stayed and discussed all kind of topics. Walking around, it was mostly database related, but also where the next Meetups will be, questions about pgconf.de in Munich and such. Around 10pm, everyone went back home.
Speaking at a future Berlin PostgreSQL Meetup
The PostgreSQL Meetup group in Berlin exists since 2015, and currently has around 2100 members.
The Meetup group is always looking for speakers, and venues to host a Meetup.
If you are interested in either speaking about a PostgreSQL-related topic, or if your company is interested in hosting a Meetup, please contact the organizers.
A Meetup is an opportunity to test a talk in front of a smaller audience, before presenting it at a conference. There is no time limit at the Meetup, there is enough time for questions, and the feedback is more direct.
If you are unsure if your topic fits, let’s discuss. Here to help. We are also accepting Lightning Talks.
Zalando
Zalando is a multinational e-commerce company, based in German, and specializing in fashion and lifestyle products. It was founded back in 2008. Zalando operates as an online platform that connects customers with a wide range of clothing, footwear, accessories, and beauty products from various brands.
Zalando has expanded its presence across Europe and has become one of the largest online fashion retailers in the region. Zalando’s success is attributed to its focus on innovation, customer satisfaction, and strategic partnerships within the fashion industry. The company continues to evolve and adapt to changing market trends, solidifying its position as a prominent player in the online fashion retail sector.
Comments
With an account on the Fediverse or Mastodon, you can respond to this post. Known replies are displayed below:
Note: This will load data from mastodon.social.
Learn how this is implemented here.
Share: