# kdb+

> Columnar time-series database queried with the q language

kdb+ is KX's commercial columnar time-series database, long the standard for financial tick data, queried through the vector language q rather than standard SQL.

Website: https://kx.com

## Use it when

- The workload is financial tick data and the latency bar sits where kdb+ has lived for decades.
- As-of joins, whole-column vector operations, and sub-millisecond in-memory reads define the queries.
- The team is committing to q; its expressiveness over time-series is the payoff for the learning curve.
- A tickerplant, real-time database, and historical database pipeline matches how your market data actually flows.

## Think twice when

- The team will not learn q; qSQL and an ANSI subset exist, but the native language is where the performance assumptions and the hiring pool live.
- Budgets favor open source; licensing is commercial, with free editions capped (Community for bounded commercial use, Personal strictly non-commercial).
- The data is not time-series; general OLAP engines cover mixed analytics more cheaply.

## How it runs

Self-hosted q processes composed into a pipeline: a tickerplant publishes to an in-memory real-time database, history lives in an on-disk HDB of splayed, date-partitioned columnar files (S3-tierable), and gateways fan queries across processes. One q process serves one query at a time; scaling means more processes.

## Details

### General

| Attribute | Value |
| --- | --- |
| License | Commercial |
| Deployment | Self-hosted, Hybrid |
| Workload | Interactive, Streaming |
| Operational complexity | Low |
| Pricing | Free, Subscription |
| Documentation | https://code.kx.com/q/ |

### OLAP Engines

| Attribute | Value |
| --- | --- |
| Specialization | Financial tick data and real-time market analytics |
| SQL dialect | q, a vector language; qSQL and an ANSI SQL subset |
| Joins | Native join primitives, including as-of joins |
| Updates and deletes | In-memory tables mutable; on-disk append-only |
| Ingest to queryable | Sub-millisecond: the tickerplant publishes to an in-memory RDB |
| Storage format | Own columnar files, splayed and partitioned |
| Compute and storage | Tickerplant, in-memory RDB, on-disk HDB; S3 with local cache |
| Indexes | Column attributes: sorted, parted, unique, grouped; date partitions |
| Pre-aggregation | None built in: aggregate tables are written and scheduled in q |
| Concurrent users | Multiple processes behind a gateway; one q process, one query |

## Capabilities

- [OLAP Engines](https://matca.io/capabilities/olap-engine)

---

Source: https://matca.io/kdb
Last updated: 2026-08-31T11:40:47.010Z
