/nanocube

Primary LanguageC++Eclipse Public License 1.0EPL-1.0

Nanocubes: an in-memory data structure for spatiotemporal data cubes

Nanocubes are a fast datastructure for in-memory data cubes developed at the Information Visualization department at AT&T Labs – Research. Visualizations powered by nanocubes can be used to explore datasets with billions of elements at interactive rates in a web browser, and in some cases nanocubes uses sufficiently little memory that you can run a nanocube in a modern-day laptop.

News

2013-10-22: Overview: how to use nanocubes

Prerequisites

The nanocubes server is written in C++ 11. You'll need a recent version of boost (we use 1.51) and the GNU build system.

Building

$ git clone https://github.com/laurolins/nanocube.git
$ ./bootstrap
$ CXX='g++-4.7' ./configure
$ make

Running

The way nanocube servers currently work is they read a dataset from stdin and then start an HTTP server which answers queries. There's no authentication mechanism! You should solve this at a different level of your stack (we internally use nginx running as an HTTP proxy).

You'll also need a client application that can issue nanocube queries and build visualizations with it. We offer an example Javascript client API here, and are currently working on a complete, self-contained example. We'll be releasing the C++ client as open source in the near future as well.

You'll quickly learn that the nanocube HTTP server is not as, ahem, battle-hardened as you and we would like it to be. We welcome feedback on the form of email, issues, and, especially, pull requests.

Branches

You should probably start with the 1.0 branch. The master branch is currently much more unstable than the 1.0 branch, which is the one that hosts the nanocube server code that's currently running on nanocubes.net.