Skip to content

Row-Based vs. Columnar Storage

Understand how columnar storage enables compression

Tiger Data 101 → TimescaleDB | Section: Hypercore | ⏱ Time: ~2 min

By the end of this module, you will be able to:

  • Explain what hypercore is and how it differs from row-based storage (Understand)
  • Describe compression methods used in hypercore and their benefits (Understand)
  • Apply hypercore to optimize storage and query performance for analytical workloads (Apply)
  • Compare hypercore capabilities with traditional columnar storage approaches (Analyze)

In traditional row-based storage, data is organized by row:

Row 1: time=2025-01-01, device_id=sensor_1, temp=22.5, humidity=45
Row 2: time=2025-01-01, device_id=sensor_2, temp=23.1, humidity=48
Row 3: time=2025-01-01, device_id=sensor_1, temp=22.6, humidity=44
Row 4: time=2025-01-01, device_id=sensor_2, temp=23.2, humidity=47

Good for: Random access, frequent updates, mixed queries Bad for: Analytical queries on specific columns, compression


In columnar storage, data is organized by column:

time: [2025-01-01, 2025-01-01, 2025-01-01, 2025-01-01]
device: [sensor_1, sensor_2, sensor_1, sensor_2]
temp: [22.5, 23.1, 22.6, 23.2]
humidity: [45, 48, 44, 47]

Good for: Analytical queries, compression (similar values clustered) Bad for: Random access, frequent updates


When data is stored column-by-column, identical or similar values are adjacent, enabling extreme compression:

temperature column: [22.5, 23.1, 22.6, 23.2, 22.4, 23.0, ...]
↓ Similar values cluster together
Can compress to: "avg_23, range ±1, deltas"
Result: 10–40x compression