Data & Storage
Atomicity, Consistency, Isolation, Durability — the four properties that traditional database transactions guarantee.
ACID is the contract that traditional relational databases offer for transactions. Atomicity means a transaction either fully succeeds or has no effect — no partial updates. Consistency means every transaction takes the database from one valid state to another, respecting all constraints. Isolation means concurrent transactions appear to execute one at a time, hiding intermediate state from each other. Durability means once a transaction commits, its changes survive crashes and power loss.
Isolation has multiple levels — read uncommitted, read committed, repeatable read, snapshot isolation, serializable — each weaker level allowing more concurrency at the cost of more anomalies. The default in most databases is read committed or snapshot, which is good enough for most workloads but allows specific anomalies a careful designer must understand.
ACID makes application code dramatically simpler: business logic can assume the database is a strong, sequential thing. Without ACID, even simple operations like "transfer $100 from A to B" require careful coordination to avoid races and partial failures.
Use ACID transactions whenever multiple writes must succeed or fail together — payments, inventory updates, account creation, anything financial or invariant-bearing.
ACID is hard to scale across multiple nodes. Distributed ACID transactions (two-phase commit, Spanner-style) add latency and complexity. Many systems trade ACID for BASE to scale horizontally.
A choice between relational databases with strict schemas and ACID guarantees and non-relational databases optimized for scale, flexibility, or specialized workloads.
A property of operations such that performing them multiple times has the same effect as performing them once — essential for safe retries.
A data structure (typically a B-tree or hash table) that lets a database find rows matching a query without scanning the entire table.
Intentionally duplicating data across tables to avoid expensive joins and improve read performance, at the cost of write complexity.
A storage architecture that manages data as objects (file + metadata + ID) in a flat namespace, optimized for huge amounts of unstructured data.
A database optimized for storing and querying timestamped data points — ideal for metrics, sensor data, financial ticks, and events.