Skip to content

exxeleron/qErlang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This project is in maintenance mode. We may fix bugs, but no new features will be added in foreseeable future.

qErlang

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

Usage

To use qErlang from rebar, add:

{deps, [{qErlang, ".*", {git, "https://github.com/exxeleron/qErlang"}}]}.

to your rebar.config.

Documentation

EDoc generated documentation of the API is available here.

Examples

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.

Limitations

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.