Domain 1 of the official DP-900 skills outline includes the item "Identify Azure datastores for common use cases." Because so many exam questions take the form "Which service best fits this situation?", this skill keeps coming up in questions from the other domains too. Rather than memorizing service names on their own, learn the order in which you narrow down the choice, and you will be able to handle scenarios you have never seen before.
This post serves as the map for our DP-900 study series. The details of each service live in the relational, non-relational, and analytics posts; here we bring together the three questions that guide your choice, a map of the services, and the pairs the exam most often uses to confuse you.
---
Three Questions for Choosing a Data Store
Picture yourself packing for a move. Paperwork goes in the filing box, clothes in the wardrobe, photos and videos on an external drive, and the family calendar goes on the living-room wall. What it is, who uses it, and how it is used decide where each thing goes. You choose a data store in the same order.
| Question | Options | What it points to | |------|------|------| | 1. What shape is the data? | Structured / semi-structured / unstructured | Relational database / NoSQL / file and object storage | | 2. What kind of workload? | Transactional / analytical | Operational database / data warehouse or lake | | 3. Management responsibility and compatibility? | IaaS / PaaS / SaaS, keep an existing engine or not | VM / managed service / Fabric, compatible API |
Structured data is a table with a fixed schema of rows and columns. Semi-structured data has structure but stays flexible, like JSON documents, key-value pairs, and graphs. Unstructured data is files with no inherent structure, such as images, videos, and documents. Even for structured data, lots of small reads and writes such as order processing call for a transactional store, while aggregating years of data calls for an analytical store.
Exam tip: Look for clue words in the question first. "JSON documents, users around the world" → Cosmos DB. "Keep existing SQL Server features as they are" → SQL Managed Instance. "Operating system access" → SQL Server on Azure VM. "Images and videos" → Blob Storage. "A shared drive for several servers" → Azure Files.
---
Azure Data Stores at a Glance
The map below groups Azure data stores into four bundles based on data shape. Most answer options on the exam come from inside these bundles.
!Which Azure data store should you choose?
| Service | Data shape | Typical use case | Service model | |------|------|------|------| | Azure SQL Database | Structured | New cloud applications | PaaS | | Azure SQL Managed Instance | Structured | Migrating existing SQL Server instances | PaaS | | SQL Server on Azure VM | Structured | Migrations that need control of the OS | IaaS | | Azure Database for PostgreSQL and MySQL | Structured | Migrating open-source database apps | PaaS | | Azure Cosmos DB | Semi-structured | Global, low-latency NoSQL apps | PaaS | | Azure Table Storage | Semi-structured (key-value) | Low-cost, high-volume key-value data | PaaS | | Azure Blob Storage | Unstructured | Images, videos, backups | PaaS | | Azure Data Lake Storage Gen2 | Any format | Data lakes for analytics | PaaS | | Azure Files | Files | SMB and NFS shared drives | PaaS | | Fabric Warehouse and Lakehouse | Analytical | Warehouse and lakehouse analytics | SaaS | | Eventhouse and Azure Data Explorer | Logs and telemetry | Analyzing high volumes of timestamped events | SaaS and PaaS |
---
Relational Stores: Azure SQL and Open-Source Engines
How to Choose Within the Azure SQL Family
Azure SQL is a family of three services built on the SQL Server engine. They differ in management responsibility and in how compatible they are with existing SQL Server.
| Aspect | Azure SQL Database | Azure SQL Managed Instance | SQL Server on Azure VM | |------|------|------|------| | Service model | PaaS | PaaS | IaaS | | SQL Server compatibility | Core database-level capabilities | Near-100% with SQL Server Enterprise | Fully compatible | | Management | Updates and backups automated | Updates and backups automated | You manage the OS and SQL Server | | Choose it when | Building a new cloud app | Migrating with minimal app changes | You need OS access and full control |
Azure SQL Database comes in several deployment options: a single database; an elastic pool, where several databases with usage that peaks at different times share resources; a serverless compute tier that scales compute automatically with demand; and the Hyperscale service tier, which supports databases of up to 128 TB. Putting a payroll database that is busy only at month-end and a reporting database that is busy only mid-month into one pool lowers the cost.
Open-Source Engines
Apps that use MySQL or PostgreSQL can move to Azure Database for MySQL and Azure Database for PostgreSQL without major code changes. MySQL is widely used in LAMP-stack web apps, and PostgreSQL is an object-relational database that can handle custom data types and geometric data such as shapes. Both services provide automatic backups and point-in-time restore for up to 35 days (seven days by default).
Azure Database for MariaDB, which appears in older material, is on a retirement path and Microsoft recommends migrating to MySQL, and Azure SQL Edge for IoT edge devices was retired on September 30, 2025. Neither appears in the current learning modules.
Exam tip: "Move an on-premises SQL Server instance with minimal changes, but without managing a VM" → SQL Managed Instance. "A LAMP-stack app" → Azure Database for MySQL. "Lower the cost of several databases with unpredictable usage" → elastic pool.
---
Non-Relational Stores: Azure Storage and Cosmos DB
Non-relational databases are commonly grouped into four types. Seeing which Azure service or API matches each type helps you cut down the answer options quickly.
| Data model | Characteristics | Azure options | |------|------|------| | Key-value | One value per unique key | Azure Table Storage, Cosmos DB for Table | | Document | Key-value where the value is a JSON document | Cosmos DB for NoSQL, Cosmos DB for MongoDB | | Column family | Tables whose columns are grouped logically | Cosmos DB for Apache Cassandra | | Graph | Nodes and relationships (edges) | Cosmos DB for Apache Gremlin | | Files and objects | Files in any format | Blob Storage, Azure Files, Data Lake Storage Gen2 |
Table Storage and Cosmos DB for Table share the same programming model, so you can move between them with almost no code changes. Choosing Cosmos DB for Table gives you global distribution, automatic indexing on every property, and higher performance and availability. For simple, low-cost key-value storage, Table Storage is enough.
Exam tip: "Query by following connections, like friend relationships in a social network" → graph (Gremlin). "Move an existing Cassandra workload to a managed service" → Cosmos DB for Apache Cassandra.
---
Analytical Stores
An analytical store is where data from transactional systems is brought in and aggregated at scale. The platforms named in the current skills outline are Microsoft Fabric and Azure Databricks.
| Store | Choose it when | |------|------| | Fabric Warehouse | Analyzing structured data with T-SQL, reporting for many concurrent users | | Fabric Lakehouse | Semi-structured or mixed data, Spark and notebooks, machine learning | | Azure Databricks | Code-first Spark work, the same platform across multiple clouds | | Eventhouse and Azure Data Explorer | Querying timestamped logs and telemetry quickly with KQL |
How data is organized into facts and dimensions inside an analytical store continues in Star Schema and Analytical Data Models.
---
Pairs the Exam Often Uses to Confuse You
When two answer options both look plausible, use these clues to tell them apart.
| Comparison | Clues for the first | Clues for the second | |------|------|------| | Blob Storage vs Data Lake Storage Gen2 | Storing objects such as images and backups | An analytics lake that needs folder hierarchy and file-level permissions | | Blob Storage vs Azure Files | Objects that apps read and write over HTTP | An SMB or NFS share that several servers mount as a drive | | Table Storage vs Cosmos DB for Table | Simple, low-cost key-value | Global distribution, automatic indexing, higher performance | | SQL Database vs SQL Managed Instance | A new cloud app | Keeping existing SQL Server instance features nearly as they are | | SQL Managed Instance vs SQL Server on VM | High compatibility without managing the OS | OS access and full control | | Cosmos DB for NoSQL vs for MongoDB | The default API for new apps | Reusing existing MongoDB drivers and code | | Fabric Lakehouse vs Fabric Warehouse | Semi-structured data, Spark, notebooks | Structured data, T-SQL, many concurrent users | | Azure SQL Database vs Azure Data Explorer | Transactional records such as orders and payments | High-volume time-series analysis of logs and telemetry |
---
Practice with Scenarios
Decide on your answer first, then check the columns on the right.
| Situation | Answer | Why | |------|------|------| | Store millions of product images and videos at low cost | Azure Blob Storage | Unstructured objects | | Read and write player profiles (JSON) for gamers worldwide within a few milliseconds | Azure Cosmos DB | Globally distributed document database | | Move an on-premises instance that relies on SQL Server Agent jobs almost unchanged | Azure SQL Managed Instance | Instance-level compatibility | | A custom OS agent installed alongside the database must be kept | SQL Server on Azure VM | OS access required | | Move an office file server to the cloud and let several PCs connect to it as a drive | Azure Files | SMB file share | | Store simple, high-volume data keyed by sensor ID a