Data Engineering8 min read

Why Healthcare Needs Columnar and Transactional Storage Side by Side

Healthcare workloads are simultaneously transactional and analytical. A hybrid storage architecture with query routing and synchronization serves both without compromising either.

THB Engineering
February 8, 2026
storage architectureOLAPOLTPhybrid storage

Healthcare data does not sit still. At 9:00 AM, a front desk agent registers a patient — an insert into a transactional store. At 9:05 AM, a quality director runs a dashboard showing readmission rates across 14 facilities — a columnar aggregation scanning millions of rows. At 9:06 AM, a nurse updates the patient's vitals — another transactional write. At 9:07 AM, the population health team exports a cohort of diabetic patients with overdue HbA1c tests — another analytical scan.

These are not different use cases that can be routed to different systems at deployment time. They happen simultaneously, against the same data, from the same platform. This is the fundamental tension of healthcare data infrastructure: the workloads are simultaneously transactional and analytical, and no single storage engine serves both well.

The Transactional Imperative

Healthcare operations are transactional by nature. Patient registration, appointment booking, medication ordering, lab result acknowledgment, discharge processing — these are individual record operations that demand:

Low-latency writes. When a nurse enters a medication administration record, the system must acknowledge and persist that write in milliseconds. Clinical workflows are real-time. A slow write is not an inconvenience — it disrupts the care delivery sequence.

Strong consistency. When a physician orders a medication and a pharmacist reviews it seconds later, the pharmacist must see the order. Eventual consistency is acceptable for analytics. It is not acceptable for clinical operations where two users act on the same record within seconds.

Row-level access patterns. Transactional queries access one patient, one appointment, one order at a time. "Get the current medications for Patient 12345" is a point lookup. The storage engine must be optimized for retrieving complete individual records by primary key.

Concurrency control. Multiple clinicians may update the same patient's record simultaneously — one updating vitals, another adding a note, a third acknowledging a lab result. The storage engine must handle concurrent writes without data loss or corruption.

The Analytical Imperative

At the same time, healthcare organizations need analytics that scan across their entire patient population:

Column-oriented scans. "What is the average time-to-discharge for cardiac patients across all facilities in the last quarter?" This query touches millions of rows but only a handful of columns. A row-oriented store reads entire records to extract two or three fields. A columnar store reads only the needed columns, reducing I/O by orders of magnitude.

Aggregation performance. Population health metrics — readmission rates, care gap closure percentages, quality measure denominators — require aggregating across millions of patient records. These computations must complete in seconds, not minutes, to support interactive dashboards and real-time cohort exploration.

Historical depth. Analytical queries often span years of data. Trending HbA1c levels across a diabetic population over 36 months, computing seasonal admission patterns, or analyzing referral networks across a five-year window requires efficient access to historical data that is rarely accessed individually but frequently scanned in aggregate.

Compression efficiency. Healthcare datasets are large and growing. A mid-size hospital network generates terabytes of clinical data per year. Columnar storage engines achieve 5-10x better compression than row-oriented stores because column values are typically more homogeneous than row values, enabling more effective encoding schemes.

Two Workloads, Two Storage Paradigms

Healthcare demands both low-latency transactions and high-throughput analytics — simultaneously

Transactional Writes

Millisecond-latency inserts and updates for clinical operations — admissions, orders, vitals, medication administration.

📊

Analytical Scans

Column-oriented aggregations across millions of records for population health, quality metrics, and cohort analysis.

🔒

Strong Consistency

Clinical operations require immediate read-after-write consistency. A pharmacist must see an order seconds after it is placed.

🗜️

Compression Efficiency

Columnar engines achieve 5-10x better compression, critical for storing years of historical clinical data cost-effectively.

👥

Concurrent Access

Multiple clinicians update the same patient record simultaneously. The system must handle contention without data loss.

📈

Historical Depth

Analytical queries span years of data — trending metrics over 36 months requires efficient access to deep history.

Why One Engine Cannot Serve Both

The temptation is to pick one storage engine and make it work for everything. This is the path most healthcare platforms take, and it creates predictable compromises.

Row-oriented stores for everything. The most common pattern. Transactional workloads perform well. Analytical queries are slow because every aggregation reads entire rows to extract a few columns. Organizations compensate with materialized views, summary tables, and overnight batch jobs that pre-compute metrics — a fragile system of workarounds that increases complexity and introduces latency into analytical results.

Columnar stores for everything. Less common, but increasingly attempted by analytics-first platforms. Analytical queries are fast. Transactional writes suffer because columnar stores are optimized for bulk loads, not individual inserts. Point lookups require scanning column segments to reconstruct a single row. Clinical workflows that need fast reads and writes hit latency walls that are architectural, not tunable.

Hybrid engines that claim to do both. Some storage engines advertise HTAP (hybrid transactional/analytical processing) capabilities. In practice, these engines make tradeoffs that surface under production load. They may handle both workloads adequately at small scale but degrade unpredictably as data volumes and concurrency increase. The fundamental tension between row-oriented and column-oriented storage does not disappear because a single engine attempts both — it is managed internally with complexity that is hidden from the user until it manifests as performance anomalies.

The honest answer is that healthcare needs two storage engines, each optimized for its workload, operating side by side with a synchronization layer that keeps them consistent.

The Hybrid Pattern

A hybrid storage architecture places a transactional store and a columnar store behind a unified access layer. The transactional store handles clinical operations. The columnar store handles analytics. A synchronization mechanism keeps both stores consistent.

Hybrid Storage Architecture

Transactional and columnar stores operating in concert behind a unified query layer

Application Layer
Clinical Workflows
Admissions, orders, notes
Dashboards & Reports
Population metrics
AI & Intelligence
Cohort computation, care gaps
APIs
External data consumers
Query Routing
Query Classifier
OLTP vs OLAP detection
Access Policy
Tenant and role enforcement
Cache Layer
Frequently accessed results
Storage Engines
Transactional Store
Row-oriented, ACID compliant
Columnar Store
Compressed, scan-optimized
Sync Engine
Change propagation
Data Lifecycle
Hot Data
Recent records, both stores
Warm Data
Historical, columnar-primary
Archive
Compressed long-term storage

Query Routing

The key to the hybrid pattern is intelligent query routing. The access layer must determine whether an incoming query is transactional or analytical and route it to the appropriate store.

Some queries are obvious. "Get Patient 12345's current medications" is transactional — route to the row store. "Compute the average length of stay across all cardiac admissions in Q3" is analytical — route to the columnar store.

Others are ambiguous. "Get all patients in Dr. Smith's panel who have an open care gap" involves both a point-like filter (a specific provider's patients) and an analytical computation (evaluating care gap status across a population). The query router must decompose these hybrid queries, executing each component against the optimal store and composing the results.

Query classification can be rule-based (explicit annotations on query types), heuristic (analyzing query structure to infer workload type), or adaptive (measuring query performance and adjusting routing based on observed latency). In practice, a combination of all three produces the best results.

Synchronization: The Hard Problem

Keeping two stores consistent is the hardest engineering challenge in a hybrid architecture. Every write to the transactional store must eventually appear in the columnar store. The question is: how fast, and with what guarantees?

Synchronous replication writes to both stores in the same transaction. This provides immediate consistency but doubles write latency and creates a coupling between the stores — if the columnar store is slow or unavailable, transactional writes are blocked.

Asynchronous replication writes to the transactional store first and propagates changes to the columnar store with a delay. This preserves transactional write performance but introduces a consistency window — analytics may lag behind operations by seconds or minutes.

Change data capture (CDC) is the most common production pattern. The transactional store emits a stream of change events. A sync engine consumes these events and applies them to the columnar store. This decouples the two stores while keeping the consistency window small — typically under a minute for well-tuned systems.

The consistency window must be understood and communicated. A dashboard that shows "real-time" patient counts but lags by 30 seconds is acceptable. A care gap status that lags by 30 seconds is acceptable. A medication list that lags by 30 seconds is not. The routing layer must understand these requirements and direct latency-sensitive queries to the transactional store even when the columnar store could handle them more efficiently.

Data Lifecycle

Not all data needs to live in both stores forever. Recent data — the last 30-90 days — is active in both the transactional and columnar stores. Older data migrates to columnar-only storage, where it remains available for analytical queries but is no longer subject to transactional updates. The oldest data moves to compressed archive storage, accessible for compliance and research but not for operational queries.

This tiered approach keeps the transactional store lean and fast while giving the columnar store access to the full historical depth that analytical workloads require.

What This Enables

A hybrid storage architecture unlocks capabilities that neither store can deliver alone:

Real-time clinical operations with instant analytics. A care coordinator registers a patient and immediately sees their population health context — risk scores, care gaps, historical patterns — without waiting for an overnight batch to refresh the analytical layer.

Interactive cohort exploration. A quality director can explore population segments interactively — filtering, grouping, drilling down — against a columnar store that returns results in seconds, while the underlying patient records remain transactionally consistent for clinical use.

AI with full context. AI agents that need a patient's complete longitudinal record retrieve it from the transactional store with millisecond latency. AI workflows that need population-level context — "how do patients like this one typically respond to this treatment?" — query the columnar store for aggregate patterns.

Efficient resource utilization. Analytical workloads do not compete with clinical operations for the same storage engine's resources. Heavy dashboard queries do not degrade the response time of the clinical workflow that a nurse depends on.

The Bottom Line

Healthcare's data infrastructure challenge is not "transactional or analytical." It is the engineering problem of running both simultaneously, keeping them synchronized, and routing queries intelligently. Organizations that solve this give clinical teams real-time tools and leadership instant analytics -- same platform, same data, no compromise.

One storage engine is a tradeoff. Two, well synchronized, are a platform.


THB's DataCloud implements a hybrid storage architecture with automatic query routing, change-data-capture synchronization, and tiered data lifecycle management — giving healthcare organizations transactional performance for clinical operations and columnar performance for analytics in a single platform. See how it works.