Quasardb

quasardb is a distributed transactional key-value store with distributed secondary indexes and native time series support, written in C++14.

quasardb was designed to support various use cases like:

  • Trading market data store (tick database)
  • Apache Spark back-end (resilient distributed dataset (RDD) back-end to accelerate data loading)
  • Distributed computing common data store (data grid)
  • Relational database cache

History

quasardb was originally a one-off to satisfy the requirements of a large French investment bank. The company has been incorporated in 2014, in Paris France.

In November 2015, ActiveViam (formerly Quartet FS) decided to make quasardb its OEM and resell it under the name of Active Storage.

quasardb is available in both a free community EDition and a commercial edition.

Supported languages

There are several bindings for quasardb, including: C, C++, C#, Java, JavaScript (Node.js), PHP, Python and Visual Basic. Additionally, it has a RESTful API.

Data types

Being a key-value store, quasardb maps keys (or aliases) to typed values. quasardb supports a few different data types:

  • Blobs (binary data)
  • Integers (64-bit, signed)
  • Time series of blobs or of double-precision floating point numbers
  • Double-ended queues of blobs
  • Hashed sets of blobs

Secondary indexing

quasardb also provides secondary indexes, called tags, which are visible to the API user as normal data entries. Tags allow the user to perform forward and reverse lookup as well as basic queries involving multiple tags. Such queries can involve negation and intersection over a collection of tags, as well as the specification of the entry type. A query is a string with a formally defined grammar, for instance:

tag="stocks" and tag="euro" and tag="industry" and not tag="germany" and type=ts

Performance and scalability

Written in C++14, quasardb leverages RocksDB for persistence and uses a derivative of the Chord algorithm for distribution.

Benchmarks done by Cisco have demonstrated that the database can deliver sustained 100 Gbit/s throughput.

On Mellanox hardware, a single node has been able to deliver more than 800,000 requests per second.