Code

Some of the prototypes developed by members of the DaST group and released in the public domain can be found below.

LMFAO: Layered Multiple Functional Aggregate Optimisation


LMFAO is an in-memory optimisation and execution engine for batches of aggregates over the input database. It consists of several layers of logical and code optimisations that systematically exploit sharing of computation, parallelism, and code specialisation.

LMFAO is based on the SIGMOD 2019 paper: A Layered Aggregate Engine for Analytics Workloads.

LMFAO 1.0 Repository https://github.com/fdbresearch/LMFAO

F-IVM: Factorised Incremental View Maintenance


F-IVM leverages higher-order IVM to reduce the maintenance of the input view to the maintenance of a tree of increasingly simpler views. F-IVM takes a SQL query and a variable order (tree decomposition) for that query as input and produces C++ code optimised for processing batch or single-tuple updates to input relations.

The frontend of F-IVM produces high-level update trigger specifications for the input query. The backend of F-IVM relies on DBToaster , which is extended to support custom ring types, to transform these trigger specifications into native code.

F-IVM is based on the SIGMOD 2018 paper: Incremental View Maintenance with Triple Lock Factorization Benefits.

FIVM 1.0 Repository https://github.com/fdbresearch/FIVM

FBENCH: A Benchmark for the FDB Factorised Query Engine


FBENCH hosts an early implementation of factorised join computation whose goal is to quickly assess the compression factor of join results.

More information on factorised computation can be found in the early ACM TODS 2015 article Size Bounds for Factorised Representations of Query Results.

FBENCH 1.0 Repository https://github.com/fdbresearch/FBENCH

MayBMS: A Probabilistic Database Management System


The MayBMS system is a complete probabilistic database management system that leverages robust relational database technology.

MayBMS stands alone as a complete probabilistic database management system that supports a powerful, compositional query language with worst-case efficiency and result quality guarantees. Its backend is accessible through several APIs, with efficient internal operators for computing and managing probabilistic data.

MayBMS 2.1beta Repository http://maybms.sourceforge.net/

SPEX: XPath Evaluation against XML Streams


SPEX stands for Streamed and Progressive Evaluation of XPath queries. Streamed means the XML input is processed via a SAX-based interface and with a low memory footprint. Progressive means the query answer is delivered as soon as possible.

SPEX 1.0 Repository http://spex.sourceforge.net/

G-Store: A Storage Manager for Graph Data


G-Store is a storage manager for large vertex-labeled graphs. It exploits the structure of the graph to derive a data placement on disk that is optimised for access patterns found in graph queries. The placement strategy is based on a multilevel algorithm that partitions the graph into pages and arranges these pages on disk to minimise the distance on disk between adjacent vertices. G-Store has a built-in query engine that supports depth-first traversal, reachability testing, shortest path search, and shortest path tree search.

G-Store Repository http://g-store.sourceforge.net/