View on GitHub

# Quelea

## Welcome to Quelea’s home!

Quelea is a Haskell library that helps programmers develop highly scalable applications on the top of eventually consistent NoSQL stores, such as Cassandra. You can think of Quelea as a mediator between the application programmer and the underlying NoSQL store. It understands both the application requirements and the store semantics, and helps programmers use NoSQL stores in such a way so as to maximize performance and ensure correct application behaviour, both at the same time!

Among other things, Quelea library implements:

• A Domain-Specific Language (DSL) that lets NoSQL application programmers declare the consistency requirements of their applications as contracts (also called specifications),
• A static contract classification procedure that maps high-level application contracts to appropriate low-level consistency guarantees provided by the underlying NoSQL store, and
• A run-time that runs application operations after tuning the store consistency to appropriate levels as determined by the contract classification procedure.

While the implementations of DSL and the static contract classification components are largely independent of the actual NoSQL store used, the current implementation of run-time component is tailor-made to work with the Cassandra data store.

If you’d like to understand the theory and engineering that powers Quelea, then please read our PLDI’15 paper, or go through the slides from our PLDI’15 presentation at Portland. On a lighter note, below is a tongue-in-cheek video about how Quelea helps Cassandra be more approachable to users :-)

## Install Quelea

Via an installer: If you are running Ubuntu (14.04 64-bit), then installing quelea is very easy - download the tar.gz, untar it, and run the install script. You should be good to go.

Via cabal: Quelea Haskell package is also available via Cabal, the Haskell package manager. If you have ghc and cabal installed on your machine, then you can install Quelea by running:

cabal install quelea --disable-library-profiling


Please note that Quelea requires Microsoft’s z3 theorem prover and Datastax’s Cassandra data store, which cannot be installed via cabal. On Mac OS X, you can install z3 using homebrew: brew install z3. Installing cassandra is also easy: please follow the instructions here.

Use a VM:On the other hand, if you want to quickly see Quelea in action, download the VM, and follow the instructions here to run the benchmark suite.

## Getting started

Quelea is a programming framework that encourages scalability oriented development. So, the best way to get started with Quelea is to develop small, but highly scalable NoSQL applications. We wrote a couple of tutorials to help you in this process:

Happy programming!