BASE Properties

intermediate base eventual-consistency nosql distributed-systems

If ACID is the strict, rule-following accountant, BASE is the laid-back startup founder who says “it’ll all work out eventually.” And honestly? For many systems, that’s perfectly fine.

BASE is the consistency model used by most NoSQL and distributed databases. It prioritizes availability and partition tolerance over strict consistency.

The acronym stands for:

  • Basically Available
  • Soft state
  • Eventually consistent

Basically Available

The system guarantees a response to every request — even if the data might be slightly stale. It won’t just refuse to answer because one node is down.

In simple language: “We’ll always give you something, even if it’s not the absolute latest version.”

Compare this to ACID where a transaction might block or fail if it can’t guarantee perfect consistency.

Real-world example: When we scroll Instagram and the like count shows 1,042 instead of 1,043 (because the latest like hasn’t propagated yet), that’s basic availability in action. The app didn’t crash or show a loading spinner — it gave us a slightly stale number.

Soft State

The state of the system can change over time, even without new input. Background processes (replication, anti-entropy repairs) are constantly syncing data between nodes.

This is the opposite of ACID where the state only changes when we explicitly run a transaction.

Think of it like this: we write data to Node A, and for a brief moment, Node B has stale data. But behind the scenes, the system is syncing. The state is “soft” — it’s in flux until everything converges.

Eventually Consistent

Given enough time with no new updates, all replicas will converge to the same value. We just can’t guarantee it happens immediately.

This is the key trade-off. ACID says “after my transaction commits, everyone sees the new data instantly.” BASE says “everyone will see it… eventually.”

How long is “eventually”? In most modern systems, we’re talking milliseconds to a few seconds. It’s not like we wait days.

ACID vs BASE Comparison

ACID
BASE
Strong consistency
Eventual consistency
Pessimistic (lock first, ask later)
Optimistic (resolve conflicts later)
Availability can suffer under load
Prioritizes availability
Vertical scaling typical
Horizontal scaling native
PostgreSQL, MySQL, Oracle
Cassandra, DynamoDB, CouchDB

When BASE Makes Sense

Not everything needs bank-level consistency. Here are some cases where eventual consistency is totally fine:

  • Social media feeds — if a new post shows up 2 seconds late, nobody notices
  • Like/view counters — exact real-time accuracy doesn’t matter
  • Product catalog browsing — a price update can take a moment to propagate
  • DNS — the entire internet runs on eventual consistency (TTL-based caching)
  • Shopping cart — items might be slightly out of sync across devices for a moment

When BASE Does NOT Make Sense

  • Financial transactions — we absolutely need ACID here
  • Inventory/booking systems — double-selling a concert ticket is unacceptable
  • User authentication — a password change must be immediately consistent
  • Anything where “slightly wrong” causes real harm

How Eventual Consistency Works in Practice

-- Imagine a 3-node Cassandra cluster
-- We write: INSERT INTO posts (id, content) VALUES (1, 'Hello World');

-- Step 1: Write hits Node A (coordinator), saved locally
-- Step 2: Node A sends the write to Node B and Node C (async replication)
-- Step 3: Node A confirms success to the client

-- For a brief moment:
-- Node A: has the data ✓
-- Node B: syncing... (stale)
-- Node C: syncing... (stale)

-- After a few milliseconds, all three nodes have the data
-- That gap is "eventual consistency"

Tunable Consistency

Many NoSQL databases let us tune the consistency level per query. In Cassandra, for example:

  • ONE — read/write to one node (fastest, least consistent)
  • QUORUM — majority of nodes must agree (balanced)
  • ALL — every node must respond (slowest, most consistent)

So BASE isn’t always “fully eventually consistent.” We can dial it up when we need stronger guarantees for specific operations.

Interview Tip

When talking about BASE, always contrast it with ACID. Show that we understand it’s not “worse” — it’s a deliberate trade-off for distributed systems. The key insight: we sacrifice strict consistency to gain availability and partition tolerance, and for many use cases that’s the right call.