4.1.3. Azure Table Storage: Simple Key-Value Store
💡 First Principle: Azure Table Storage provides a simple, scalable key-value store for structured data that doesn't require complex queries or relationships. It's the NoSQL equivalent of a lookup table—fast access by key, but don't expect JOINs or complex WHERE clauses.
What Is Azure Table Storage?
- NoSQL key-value store within Azure Storage Accounts.
- Stores structured data (entities with properties); schema-less.
- Access by Partition Key and Row Key.
- Ideal for simple key-based lookups where cost is the primary factor.
PartitionKey and RowKey
Every entity carries two keys that together form its primary key:
- PartitionKey groups related entities and decides how data is distributed across servers. Entities sharing a PartitionKey are stored and served together.
- RowKey uniquely identifies an entity within its partition.
Supplying both is a point query — the fastest operation Table Storage offers, and the pattern it is designed for. This pair is also the only index. A filter on any other property means scanning every entity in scope, which is why Table Storage suits lookups by a known key and suits almost nothing else.
What It Deliberately Cannot Do
No joins, no foreign keys, no server-side aggregation, no stored procedures, and no schema — two entities in the same table may carry entirely different properties. These are not gaps to work around; they are what makes it cheap.
Table Storage vs Cosmos DB for Table
Both present the same table model and a near-identical API, so the exam separates them on requirements rather than shape:
| Azure Table Storage | Cosmos DB for Table | |
|---|---|---|
| Cost | Lowest of any Azure store | Considerably higher |
| Distribution | Single region (plus a read replica with RA-GRS) | Turnkey global replication |
| Latency | Best-effort, no SLA | Guaranteed single-digit milliseconds |
| Indexing | PartitionKey + RowKey only | Automatic on every property |
⚠️ Exam Trap: when a scenario says "simple key-value data at the lowest possible cost" and explicitly rules out global distribution or latency guarantees, it is steering you to Table Storage. Cosmos DB for Table is the right answer only when the scenario asks for the things you are paying extra for.