Latest entries

multiple ducks in a row

Database Replication Strategies

Database replication exists to keep many copies of a database on different (maybe even geographically different) machines. This is beneficial for example to achieve high availability via redundancy, improved performance by offsetting read/write load from a single server to multiple.

Read More
metal chain`

Database Durability

Durability guarantees that once a transaction is committed, its changes are permanently stored in the database, even in the event of a crash. But crashes DO happen - What should happen in the event of a crash when a transaction is being committed? How does a database ensure durability in such a case?

Read More
overlapping circles, unfocused

Database Isolation Levels

In databases, a transaction is a collection of operations which are treated as a single unit of work. Ensuring the integrity and consistency of data during concurrent transactions is where the 'I' (Isolation) property of ACID comes into play. Given multiple ongoing transcations, how can we prevent interference between each transaction? If transaction A is running some SELECT query, while transaction B simultanously performs an UPDATE which would affect A's results, what should happen?

Read More
cross section of an onion

Onion Architecture and the like

Adding new functionality to an ever evolving piece of a software is challenging. Different approaches to design and architecture have evolved to try and tackle this complexity; n-tier, ports and adapters/hexagonal, onion and others. These methods aim to reduce the need to change large portions of the application when introducing changes which affect only a portion of the system. Ultimately, the idea is isolating business logic in order to make it independent of technology choices. as a consequence, this makes the system more maintainable, scalable and testable by default.

Read More
a conductor conducting an orchrestra

Sagas

One of the difficulties of working on distributed systems is losing the ability to easily execute a "unit of work" - a set of atomic operations which either all happen or none happen at all. Such an operation can be abstracted from the developer by relying on a database. however in a distributed system, each service can have its own database, losing the luxury of a single database for atomicity

Read More