PostgreSQL Meetup 2023-05-11

We are happy to announce that Adjust is hosting a PostgreSQL Meetup on May 11th, 2023, in the Berlin office. Please head over to the Meetup website for details. The event starts at 19:00, and we have two speakers: Elena Grahovac from FerretDB, will talk about: “Building an open-source MongoDB-compatible database on top of PostgreSQL” (Slides) Divyendu Singh will talk about “PLV8ify - TypeScript to PostgreSQL Functions” (Slides) Please note that the event has a limit of 30 participants, and you must register using the Meetup website....

CephFS and max file size

The task at hand was easy. Platform Engineering (PE) wants to re-create the filesystem for a NVram drive which holds a database. The database itself is around 9TB, but the size is nothing unusual for us. Plus we have procedures to take this database out of production for a prolonged period. All good. Or so I thought. First confirm that the database is no longer in production. Confirmed. Shut it down....

Using Tablespaces in PostgreSQL

Tablespaces are a key component for disk space management in relational database management systems. They serve as containers for storing objects such as tables, indexes, views, sequences and other data structures. Tablespaces allow database administrators to better manage disk space by allowing fine-grained management of the storage space used by the database. In this blog post, we will explore what a tablespace is, how to create it, and how to use it....

The Affordances of Quality - Test Hive Germany Meetup in April 2023

We are happy to announce the next Test Hive Germany Meetup, which will take place on April 24th in our Berlin office. Test Hive is a QA Community with more than 3000 members from different cities around the world. We have been hosting meetups since 2015 in Istanbul, Manchester, Stuttgart and Dubai. Although it is a QA community, everything related to quality is discussed and all software engineering practices are a part of that....

Secrets management improvements with Ansible Vault

Ansible is a powerful automation tool that helps us manage infrastructure, services, and databases. However, managing sensitive data such as passwords, keys, and other secrets can be challenging. Ansible Vault is a feature that provides a way to encrypt and store sensitive information within Ansible playbooks and inventory files. Ansible Vault has two modes: full file encryption: the whole contents of the file is encrypted, the type of content doesn’t matter; value encryption: a string value in a yaml file is encrypted....

11TB WAL in PostgreSQL

On a lovely Saturday afternoon our NetOps team raised an alarm: the disk usage on a specific database server was growing fast, and with the current growth rate we have about 30 hours left until the disk is full. Currently climbing over 80%, which triggered the alarm in the first place. Not good. However nothing serious as of now, but better investigate now and not wait until Monday. Zabbix Graph: Space utilization The System This particular server has about 3....

Creating new PostgreSQL enum data types using pg_type_template

Introduction In Adjust we are creating new data types for PostgreSQL, in order to make handling of data easier for us, but also sometimes to save some space. Many of them are written using the C language. Here are some of the more important extensions for us: istore: it is an integer based hstore. In istore both keys and values are represented and stored as integers. pg-base36: a base36 extension, which implements a base36 binary-to-text encoding algorithm....

Rex to Ansible Migration: Evaluate current automation tool

Blog posts in this series Evaluation of our existing automation tool Evaluation of new automation tools (planned) Inventory migration (planned) Rex Module migration (planned) Rex Wrapper (planned) Testing (planned) Bring it into production (planned) Experiences (planned) Ansible Migration: Evaluation of our existing automation tool In Adjust we are (or maybe have been, by the time you are reading this blog posting) using Rex as an automation tool. It served us well, and we grew the company and the infrastructure based on it....

Introducing a PgBouncer authentication layer into our database architecture

We recently decided to factor out PostgreSQL authentication into dedicated PgBouncers for different teams, and no longer allow direct remote access to the database cluster. Apart from its main use as a connection pooler, we’ve realized that the isolation afforded by a PgBouncer layer simplifies the management of authentication and connection settings of the different client teams, and frees PostgreSQL of these mundane duties. Motivations In the highly distributed and multi-tenant environment that our databases participate in, even seemingly minor issues easily bloat into an unsustainable mess....

How much Ansible is too much?

While undertaking our adventure of migrating Rex to Ansible, we came to realize that some of the functionality in Rex wasn’t configuration management, per se. This spawned a more philosophical line of thinking around our Ansible deployment. Let me give you a couple of examples to explain. As Ansible is a configuration tool for servers, it can install software packages using the Operating Systems package management system. Along with installation, it can also do upgrades of software packages on a server....