Topic 2 of 4
Besides blobs, an Azure Storage account offers file shares and key-value tables. They're simple services, but the exam asks about their protocols, how a row is identified in a table, and how an Azure table differs from a relational table.
Contents
On-premises networks commonly share files: they're stored on one computer and access is granted to users and apps on others. That works on a local network, but scales poorly as users grow or sit in different locations.
Azure Files provides fully managed file shares in the cloud, accessible through the industry-standard SMB and NFS protocols.
Hosting file shares in Azure removes hardware costs and maintenance overhead, and adds high availability and scalable storage.
Capacity per account
Up to 256 TiB in SSD accounts on the provisioned v2 billing model, and up to 5 PiB in HDD pay-as-you-go accounts, spread across any number of shares.
Files
The maximum file size is 4 TiB; quotas can limit each share. It supports up to 2,000 concurrent handles per file or directory.
Media tiers
HDD (hard disks) and SSD (solid-state disks). SSD offers more throughput at a higher price.
Uploading and syncing
Upload files from the portal or with AzCopy. Azure File Sync synchronizes locally cached copies with the data in Azure Files.
| Protocol | Clients | Best for |
|---|---|---|
| SMB (Server Message Block) | Windows, Linux, macOS | General-purpose shares, lift and shift, hybrid with Azure File Sync |
| NFS (Network File System) | Linux (not supported on Windows) | Linux workloads, containers, HPC |
| REST API | All platforms | Programmatic access from applications |
NFS requirements
To create an NFS share, you must use the SSD tier and control access through a private endpoint or a service endpoint in a virtual network.
It supports zone-redundant (ZRS) and geo-redundant (GRS) storage.
A NoSQL storage solution with tables of key-value items. Each item is a row with columns for the fields to be stored.
Not a relational table
An Azure table stores semi-structured data. Every row needs a unique key and a timestamp, but beyond that the columns can vary between rows. There are no foreign keys, relationships, stored procedures, or views.
Data is usually denormalized: each row holds all the data for a logical entity. A customer row can store a name, several phone numbers, and several addresses, and another row can have a different number of fields. In a relational database, that information would be split across multiple rows in several tables.
PartitionKey
A value you choose to group related rows in the same partition. Rows with the same partition key are stored together.
RowKey
A value unique to each row within its partition. Together, the two keys uniquely identify the row.
Partitioning improves scalability and performance:
| Concept | Description |
|---|---|
| Table | A collection of entities with no enforced schema |
| Entity | A set of properties, like a row. Up to 1 MB in Azure Storage (2 MB in Cosmos DB) |
| Property | A name-value pair; up to 252 per entity, plus three system properties: partition key, row key, and timestamp |
| Address | http://<account>.table.core.windows.net/<table>, accessible with the OData protocol |
It suits terabytes of structured data that don't need complex joins, foreign keys, or stored procedures, and it's typically cheaper than traditional SQL for similar volumes.
| Azure Table Storage | Azure Cosmos DB for Table | |
|---|---|---|
| Model | Key-value, PartitionKey + RowKey | The same model and programming |
| Performance | Baseline | Higher performance and availability |
| Distribution | Within the storage account | Global distribution |
| Indexes | Clustered index on the keys | Automatic secondary indexes on every property |
Azure Table Storage remains available; Cosmos DB for Table makes sense when the workload needs those extra capabilities (see Cosmos DB in this domain).
| Situation | Answer | Why |
|---|---|---|
| Replace an on-premises file server with cloud file shares | Azure Files | Managed network file shares. |
| Keep a cache of Azure file shares on on-premises servers | Azure File Sync | It syncs local copies with Azure Files. |
| Mount a share from Windows, Linux, and macOS | SMB | A cross-platform protocol. |
| A share for Linux workloads and containers | NFS (SSD tier) | Linux clients only; requires the SSD tier. |
| Store user profiles with variable fields and fast key lookups | Azure Table Storage | Schemaless key-value. |
| Fast queries filtering on the partition key | Table Storage partitioning | It reduces the I/O needed. |
| A key-value table with global distribution and automatic secondary indexes | Azure Cosmos DB for Table | Same model, more performance and availability. |
❓ Do Azure Files NFS shares work on Windows?
No. NFS is for Linux clients; SMB works on Windows, Linux, and macOS.
❓ Which tier does an NFS share require?
The SSD tier, with access through a private or service endpoint.
❓ What uniquely identifies a row in Azure Table Storage?
The combination of partition key and row key.
❓ Does Azure Table Storage support foreign keys and stored procedures?
No. It has no relationships, foreign keys, stored procedures, or views.
❓ Must every row in an Azure table have the same columns?
No. Apart from the keys and timestamp, columns can vary: it's semi-structured data.
❓ What is Azure File Sync for?
Synchronizing locally cached copies of shares with Azure Files.
Did you get this topic?
Test what you just learned
An application stores device data in Azure Table Storage and almost always queries all the devices in the same plant. What should it use as the partition key?
Original questions, each with a full explanation.
Start a mock exam