This article fits in the PostgreSQL Concurrency series,
where we installed a tweeter like application schema and had all the
characters from Shakespeare’s A Midsummer Night’s Dream tweet their own
lines in our database in PostgreSQL Concurrency: Data Modification
Language.
A previous article in the series covered how to manage concurrent retweets
in an efficient way: Computing and
Caching, where we learn how to
maintain a cache right in your PostgreSQL database, thanks for materialized
views. We even went as far as maintaining an external cache in another
application layer using PostgreSQL
LISTEN and
NOTIFY
features and a Golang application.
Today’s article is going to address concurrency in the context of updating
data in a batch. This activity is quite common, as soon as your system is
connected to other systems either internally or with external providers.
While it’s pretty easy to ingest new data, and easy enough to update data
from an external source when nothing happens in your database, doing the
operation safely with concurrent activity is more complex. Once more though,
PostgreSQL comes with all the tooling you need to handle that situation.