Skip to content

This is a set of row-reordering algorithms and data compression compression schemes implemented in C++.

Notifications You must be signed in to change notification settings

lemire/rowreorderingcpplibrary

Repository files navigation

The Row reordering C++ library -- External memory version

Ubuntu 20.04 CI (GCC 9)

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

Requirements

A POSIX C/C++ toolchain (linux, macOS)

Warning

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.

References

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

Usage

make tods2011
./tods2011 myfile.csv

About

This is a set of row-reordering algorithms and data compression compression schemes implemented in C++.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages