This project is in maintenance mode. We may fix bugs, but no new features will be added in foreseeable future.
qErlang is an Erlang module implementing kdb+ interprocess communication protocol. qErlang provides:
- Support for synchronous and asynchronous queries
- Support for Kdb+ protocol type 3.0
- Full coverage of KDB+ types
- Partial decoding of messages for fast query routing
- Compatibility with Erlang/OTP 17.x
To use qErlang from rebar, add:
{deps, [{qErlang, ".*", {git, "https://github.com/exxeleron/qErlang"}}]}.
to your rebar.config.
EDoc generated documentation of the API is available here.
The examples
directory contains:
- An OTP application with a gen_server subscribing to a KDB+ tick instance for updates
- Demonstration of how to use the
peek
API function for message routing based on partial decoding of messages
In qErlang, q types deserialize to Erlang tuples of the form {<q type>, <data>}
. The qErlang_test.erl
file in the test
directory is a useful reference with examples of deserialized q objects of various types.
qErlang does not support compressed messages. In practice it means that in most use cases the KDB+ server has to be on the same host as the process using the qErlang module. KDB+ IPC documentation provides information on when a KDB+ server wil compress an outgoing message.