Latest entries

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.

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?

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?

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.

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