Why we built Azure HorizonDB for PostgreSQL | POSETTE: An Event for Postgres 2026
Dingding Lu explains why Microsoft built Azure HorizonDB for PostgreSQL and how its shared-storage design targets predictable performance, fast failover, and scalable reads for modern Postgres workloads running on Azure.
Overview
The talk covers the motivation and core architecture behind Azure HorizonDB for PostgreSQL, focusing on how it addresses common operational and performance challenges in managed Postgres environments on Azure.
Problems HorizonDB is designed to address
- Keeping performance consistent when traffic spikes
- Maintaining predictable latency
- Scaling read throughput without over-provisioning replicas
- Achieving fast failover with minimal downtime
Core architecture and design decisions
- Shared storage architecture aimed at decoupling database compute from storage
- Separating compute and storage layers to enable independent scaling and operational flexibility
- A “database as logs” framing, centered around the write-ahead log (WAL)
WAL-centric write path and latency considerations
- Shared WAL storage and how it impacts commit latency
- The write lifecycle and how writes flow through the system
- WAL filtering concepts discussed as part of the design
Availability and failover model
- Stateless nodes to enable faster failover
- Design choices intended to reduce the time and complexity of recovery during node failures
Read performance and scaling techniques
- Improving read performance using SSD caching
- Scale-out approach for reads (and the architectural implications of shared storage)
Storage layout, resilience, and recovery features
- Data storage sharding for scalability and resilience
- Auto-scaling storage
- Point-in-time restore (PITR) as part of the recovery story
Implementation notes
- Mentions the use of Rust in the HorizonDB implementation
Video chapters
- 00:00 – Music & introduction
- 00:57 – Opportunity for Postgres to run better on Azure
- 02:04 – HorizonDB architecture and core design
- 03:20 – Separating compute and storage layers
- 05:08 – Rust and Azure HorizonDB
- 06:10 – Shared WAL storage and commit latency
- 09:31 – Write lifecycle and WAL filtering explained
- 11:22 – Faster failover with stateless nodes
- 13:44 – Read performance with SSD caching
- 15:05 – Data storage sharding and resilience
- 16:18 – Auto-scaling storage and point-in-time restore
- 18:04 – Key takeaways
Links
- POSETTE conference: https://posetteconf.com
- POSETTE talks playlist: https://aka.ms/posette-playlist