Skip to content


Introduction to q

There are many introductions to q and kdb+. This is not one of them.

If you are looking to get started with q you can find courses at and study materials at


General competence as a kdb+ developer entails mastery of its four aspects:

course title content
q201 Language The q language and finding vector solutions to problems.
q202 Joins The primitive joins. This is such a large part of the language, and so important to performance, that it merits separate treatment from the rest of the language.
q203 Database Kdb+ databases are q tables persisted into the filesystem. The primitives for doing this are easy enough to use, but using them wisely is a deep topic.
q204 Architecture Kdb+ applications commonly have a microservices architecture. The interprocess communication (IPC) baked into q primitives makes such architectures astonishingly easy to implement. Designing them wisely is another deep topic.

Completing q201 is essential for q202, and useful for q203 and q204.

q202, q203 and q204 do not currently exist.

You can look for similar material at, Data Intellect and TimeStored.

If you are interested in writing or contributing to them, please contact Stephen Taylor.



We review formal definitions to articulate and extend what you have already learned informally. The definitions are precise, accurate and concise; but the implications are left largely unstated.

If you are a computer scientist or already fluent with Iversonian array languages this might be all you need.


We explore the implications of the formal definitions and consider some coding patterns that exploit them.


Fully-worked examples. Many are toy problems or games to illustrate a technique; others you might actually find useful.


Some simple games. Each starts with a game engine to execute the moves, adds a simple terminal UI, game score, and finally implementing as an HTTP server with an HTML user interface.


The kdb+ world is a world of huge datasets, but q201 ignores them and focuses on the core of the language.

The problems and examples here will not look much like the q code you write in real life. They are not intended for you to modify for production use. They are chosen to be small, self-contained and to yield insight.

Here you will find techniques you may never use in production code; but understanding them can keep you out of all kinds of trouble.

So dig into the puzzles and the toy applications. They reward study.