Not many developers know about savepoints in relational databases. Even less of them know when to use them. It's not their fault: I can't remember seeing a good explanation of this feature. Let's try to clarify this lesser-known functionality. In this article I'm...
Federico Razzoli
Vettabase and HammerDB Partner to de-Risk Database Migrations
Vettabase and HammerDB are announcing a partnership to de-risk and assist database migrations. As vendor-independent companies that offer services for multiple database technologies, Vettabase and HammerDB intend to help organisations in the delicate move of changing...
Distributed, Multi-Database Transactions Involving MariaDB and PostgreSQL
In some situations, an application needs to run a single logical transaction that involves multiple database technologies: in our example, they'll be MariaDB and PostgreSQL. This is not an optimal scenario and I'm not recommending to design systems in this way. But...
MariaDB Underrated Features: Zero Dates and Partial Dates
How do you represent information like this in a database? This event happened in 2015/06, but we don't know in which day. This job is scheduled to happen on the first day of the month at 00:00:00, every month and every year. This never happened. There are many ways to...
Navigating Tree and Graph Data with Recursive SQL
Hierarchical and networked data appears everywhere in modern databases: organisational charts, product category trees, dependency graphs, and even transport networks. Applications need to retrieve this data to draw a chart, find out whom a certain employee reports to,...
Benefits of Importing Data with MariaDB CONNECT and PostgreSQL Data Wrappers
There are many ways to import data from external sources into a database. MariaDB and PostgreSQL offer native solutions: the MariaDB CONNECT storage engine and PostgreSQL Foreign Data Wrappers. Unfortunately, these options are often overlooked, in favour of more...
Why Your Database Deserves Consistent Names and Types
I see a lot of problems with database schemas: missing indexes, wrong types, tables used like an spreadsheet... but all these problems are widely known. An often overlooked problem is inconsistency. Let me explain how you should guarantee database consistency, and how...
To BLOB or not to BLOB? The image storage dilemma
Years ago, it was extremely common to store user-uploaded images and other multimedia contents in a database. This practice became less common over time, but I still hear questions like: would it be a bad idea to store images in our database? Or, more specifically:...
MariaDB 11.8 LTS: Parallel Dumps, PARSEC authentication, new SQL syntaxes, and more
MariaDB released a new Long Term Support version as Generally Available: 11.8. I always review MariaDB LTS versions once they're GA, so it's time to write a new review. Support and timeline MariaDB 11.8 is the latest Long Term Support version (LTS). The...
Query Optimisation: Using indexes for WHERE with multiple conditions
You have a beautiful application, but a page is slow. After some investigation, you find out that a query is unexpectedly slow, ruining user experience and causing frustration for you. It is a simple query with a WHERE clause and nothing else. You tried to build an...










