Clone wiki

memoria / Home


Memoria is a data engineering framework in C++14 providing general purpose persistent dynamic data structures on top of key-value, object, file or block storage, asynchronous IO subsystem for network and external memory, heterogeneous computations through Cuda and OpenCL and optional Qt integration for data structures visualization. Out of the box the following data structures are provided: map, vector, multimap, table, wide table and some others. Besides basic data structures there are also advanced ones: searchable sequences and wavelet trees. Many others can be designed using building blocks provided by the framework.

The core of the framework is two-level memory allocation scheme, with templatized C++ value semantics on top of it. Framework provides composable building blocks like array-mapped prefix sum trees and searchable sequences to build more sophisticated block-oriented data structures like dynamic vectors and labeled trees. Concurrency is handled via copy-on-write based Git-like branch/merge workflow, data structures are confluently-persistent.

For more details check this introduction. A little-bit outdated Memoria hacker's guide is here.

See also project Mariana to use Memoria from Java.

The project is still in active development and is functionally incomplete may not even compile in your environment.