-
DB transactions are Basically Available, Soft state and Eventually consistent (BASE)

- Basically Available = R/W operations available “as much as possible”, without consistency guarantees
- Data availability increased by spreading and replicating data across all of the different NW nodes
- The DB does its best to be consistent, but no guarantee (not the main focus)
- 💡 Reads and Writes are “kinda, maybe”
- Soft state = Consistency is not enforced in DB, instead offloaded onto consumers
- Developers must care for consistency and state in the apps that use BASE DBs
- By default, returned data might not be the latest data, so…:
- EITHER apps need to tolerate this fact…
- OR apps must specify use of consistent operations, if the DB allows them
- Eventually consistent = Immediate consistency is not enforced
- Consistency might happen… eventually! 😅
- A read will match the latest write as long as we wait long enough
- 💡 How long must we wait? Unspecified! We only know that eventually the read will be consistent with the latest write!
- Additional reference: https://en.wikipedia.org/wiki/Eventual_consistency
- 💡 All BASE characteristics are related (soft state implies eventual consistency, etc)
-
‼️ Many BASE DBs allow immediately consistent operations with guaranteed latest state!
- Default = Eventually consistent operations with no guarantee for latest state
- To guarantee latest state, app must have awareness and explicitly/specifically ask the DB for immediately consistent reads
-
👍 BASE-modeled DBs are highly scalable and can deliver really high performance
- No need to worry about pesky consistency in the DB, apps can handle that
- 💡 BASE transactions might initially sound pretty horrible due to all the inconsistency, but they actually bring lots of benefits with scalability and performance
-
BASE-modeled DBs are NoSQL DBs