Group 6: Relational Data

Relational managed offerings: Azure SQL Database, Azure SQL Managed Instance, SQL Server on VM, PostgreSQL, MySQL, MariaDB, plus Database Migration Service (transition helper). Differences revolve around control surface, feature coverage, scaling model, and migration friction.

Rule of Thumb: Prefer managed PaaS (Azure SQL DB / SQL MI / OSS managed) unless you have feature gaps or OS-level dependencies requiring SQL on VM.

Services & Core Identity

Azure SQL DB

Fully managed single DB / elastic pools. Automatic patching, built-in HA. Limited surface vs full instance.
  • Use: new cloud-native workloads.
  • Scaling: DTU or vCore, serverless tier.
  • Features: Hyperscale for large sizes.

SQL Managed Instance

Near full SQL Server surface (Agent, cross-db) with PaaS ops. Instance-level features restored.
  • Use: lift from on-prem w/ minimal change.
  • Managed backups, patching.
  • VNet integration.

SQL on VM

IaaS-hosted SQL. Full OS + instance control; manual patching/HA unless configured.
  • Use: unsupported features, custom agents.
  • Higher ops overhead.
  • Can use Azure Backup.

PostgreSQL

Managed OSS relational (Flexible Server). Extensions support; versioned upgrades.
  • Use: open-source stack preference.
  • High concurrency, rich types.
  • Can scale compute/storage independently.

MySQL

Managed MySQL (Flexible). Popular LAMP stack DB; read replicas, zone redundant HA.
  • Use: web apps relying on MySQL dialect.
  • Per-second billing on flexible.
  • Performance tiers (Burst / Gen Purpose / Memory).

MariaDB

Managed MariaDB (legacy workloads). Similar to MySQL; may have different engine optimizations.
  • Use: existing MariaDB apps.
  • Consider MySQL/PostgreSQL for new builds.
  • Migration path via DMS.

DMS

Database Migration Service orchestrates minimal downtime migrations and assessments.
  • Use: shift SQL/OSS DB to managed.
  • Helps with schema + data movement.
  • Not a runtime target.

Key Differences

DimensionSQL DBSQL MISQL VMPostgreSQLMySQLMariaDB
Control SurfaceDatabase onlyInstance-levelFull OS/InstanceInstance-levelInstance-levelInstance-level
HA Built-inYesYesManual configYesYesYes
Scaling GranularityPer DB/poolPer instanceVM sizeCompute/StorageCompute/StorageCompute/Storage
Serverless OptionYes (auto-pause)NoNoNoNoNo
Feature Parity w/ Full SQLSubsetNear-fullFullN/AN/AN/A
ExtensionsLimitedLimitedFull (OS install)Rich (Postgres ext)PluginsPlugins
Ops OverheadLowestLowHighLowLowLow
Ideal UseCloud-native appLift & shift SQLLegacy / full controlOSS structured dataLAMP style appsExisting MariaDB

Mathematical Selection Model (Runtime)

Models relative fit. Criteria [0..10]. SQL VM and DMS included but DMS always flagged as helper only.

{{c.desc}}
Score_SQLDB = 0.30*C_cloud + 0.20*C_lowops + 0.15*C_autoScale + 0.15*(10 - C_fullSurface) + 0.10*(10 - C_ext) + 0.10*C_serverless Score_SQLMI = 0.30*C_instance + 0.20*C_feature + 0.15*C_network + 0.15*C_lowops + 0.10*(10 - C_serverless) + 0.10*(10 - C_ext) Score_SQLVM = 0.30*C_fullSurface + 0.20*C_ext + 0.15*C_osControl + 0.15*C_feature + 0.10*(10 - C_lowops) + 0.10*C_license Score_PG = 0.35*C_ext + 0.20*C_cloud + 0.15*C_open + 0.10*C_lowops + 0.10*C_scalability + 0.10*C_json Score_MySQL = 0.30*C_lamp + 0.20*C_cloud + 0.15*C_lowops + 0.10*C_scalability + 0.10*(10 - C_fullSurface) + 0.15*C_replica Score_Maria = 0.30*C_existing + 0.20*C_lowops + 0.15*C_cloud + 0.10*C_scalability + 0.10*C_ext + 0.15*(10 - C_migrate)
SQL DB {{vm.scores.sqldb | number:2}}
SQL MI {{vm.scores.sqlmi | number:2}}
SQL VM {{vm.scores.sqlvm | number:2}}
PostgreSQL {{vm.scores.pg | number:2}}
MySQL {{vm.scores.mysql | number:2}}
MariaDB {{vm.scores.maria | number:2}}
Recommended: {{vm.recommended.name}} ({{vm.recommended.score | number:2}})

Interpretation Rules

  • If C_fullSurface ≥ 7 OR C_osControl ≥ 6 ⇒ SQL VM (verify TCO).
  • If C_instance ≥ 6 AND C_feature ≥ 6 ⇒ SQL MI.
  • If C_serverless ≥ 6 OR unpredictable load ⇒ SQL DB (serverless tier).
  • If C_open ≥ 6 AND C_ext ≥ 6 ⇒ PostgreSQL.
  • If C_lamp ≥ 6 ⇒ MySQL (or Maria if existing base).

When NOT to Use Relational

  • Massive scale, low latency key-value ⇒ Cosmos DB / Redis.
  • Semi-structured analytics at scale ⇒ Data Lake / Synapse.
  • Write path > vertical scaling limit ⇒ consider sharding or alt model.

Summary

SQL DB for most new SQL workloads; SQL MI for near full SQL features with less admin; SQL on VM only for OS/feature gaps; PostgreSQL for extensibility & rich types; MySQL/MariaDB for existing ecosystems. Start with ops burden & feature parity, refine via scaling + ecosystem needs.