
The storage backend behind a FHIR server shapes its operational characteristics more than most buyers realize. Three storage patterns dominate 2026 deployments.
Pattern 1: JPA-backed relational (Postgres, MySQL). HAPI FHIR and Firely Server use JPA/ORM against relational. Best for teams comfortable with SQL operations. Requires careful index tuning per HAPI's guide.
Pattern 2: JSONB-native Postgres. Aidbox stores FHIR resources as JSONB columns with indexed search parameters. Postgres remains the source of truth; queries use Postgres query planner efficiently.
Pattern 3: Document-store native. Microsoft FHIR Server on Cosmos DB, Medplum with Postgres logical replication for events. Best for cloud-native deployments with document semantics.
Operational profile comparison
| Backend | Write throughput | Read throughput | Backup | Query flexibility |
|---|---|---|---|---|
| JPA/relational (HAPI) | 1500-1800/s | Depends on indexes | pg_dump | Full SQL |
| JSONB (Aidbox) | 2500-3000/s | Fast with indexes | pg_dump | JSONB queries |
| Document (Cosmos) | 1000-1500/s | Fast | Azure-managed | Cosmos SQL |
| Document (Medplum PG) | 3000-3200/s | Fast | pg_dump | Postgres SQL |
Backup and recovery
All Postgres-backed servers back up via pg_dump for logical or WAL archiving for point-in-time. Cosmos-backed uses Azure's managed backup. Restore semantics vary; verify RTO/RPO against your requirements.
Cost profile
| Backend | Storage cost | Compute cost |
|---|---|---|
| Postgres (self-hosted) | Low | Medium |
| Postgres (RDS/Cloud SQL) | Medium | Medium |
| Cosmos DB | High | Managed |
| Amazon Aurora | Medium-high | High |
Storage backend is a five-year decision. Match to your ops team's expertise, your cloud strategy, and your query patterns.