The Row reordering C++ library -- External memory version
This is a set of row-reordering algorithms and data compression compression schemes implemented in C++. The goal of these algorithms is to maximize the compression ratio of database tables through row reordering.
This library is strictly for researchers with a working knowledge of C++ that are interested in studying our implementation. This code is meant to help you implementing the algorithms from our papers (see references below).
You must read the papers: this is not standalone code. It is meant to complement the papers!
For a simple demo (in Java) of the Vortex order described in the paper, please see https://github.com/lemire/SimpleVortex
A POSIX C/C++ toolchain (linux, macOS)
This is "proof of principle" code. If you ever use this code in production... well, don't. It is not good C++ code: it is only prototypical.
Daniel Lemire and Owen Kaser, Reordering Columns for Smaller Indexes, Information Sciences 181 (12), 2011. http://arxiv.org/abs/0909.1346
Daniel Lemire, Owen Kaser, Eduardo Gutarra, Reordering Rows for Better Compression: Beyond the Lexicographic Order, ACM Transactions on Database Systems 37 (3), 2012. http://arxiv.org/abs/1207.2189
make tods2011 ./tods2011 myfile.csv