Back then in the 2000s, the research that eventually lead to dynamoDB popularised the idea of non-relational databases as being real SQL database killers.
Transactions were seen as the antithesis of scalability, and only abandoning the concept of transactions completely would allow for good performance and high availability in large scale systems.
Even though the SQL database have not been extinct by non-relational databases, their rise added a lot of variety to the database landscape.
While the first non-relational database was a key-value store today they support a range of different data structures and functional features off all kinds. This makes it sometimes hard to believe, they all those databases belong to the same class.
But they all have one property in common, they diametrically opposed ACID guarantees. Where ACID is pessimistic and forces consistency at the end of every transaction, non-relational databases are more optimistic and accepts that the database consistency will be in a state of flux.
What other acronym would be better suitable to describes these guarantees than BASE?
BASE stands for
Let's talk about each of them, one by one to understand this fundamental paradigm shift.
The Basically Available property guarantees it's always possible to read and write data, even though it but might not be consistent.
That means you might read data that does not reflect the latest changes. It also means that your writes might not get persisted after conflicts are reconciled. A drastic change, compared relational databases that try to stay true to their ACID guarantees, by any means.
Without consistency guarantees, the state of the data can still change even without any current interactions with the application.
This is part of the mechanism to create consistency over time. Which is the last BASE guarantee.
The system relies on a loose consistency model. Data will eventually become consistent once it stops receiving input.