Curriculum
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 kx.com/academy and study materials at code.kx.com/q/learn.
Context
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 kx.com/academy, Data Intellect and TimeStored.
If you are interested in writing or contributing to them, please contact Stephen Taylor.
Sections
- Review
-
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.
- Explore
-
We explore the implications of the formal definitions and consider some coding patterns that exploit them.
- Apply
-
Fully-worked examples. Many are toy problems or games to illustrate a technique; others you might actually find useful.
- Develop
-
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.
Disclaimer
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.