  This paper introduces semi-ring dictionaries, a powerful class of
compositional and purely functional collections that subsume other collection
types such as sets, multisets, arrays, vectors, and matrices. We develop SDQL,
a statically typed language centered around semi-ring dictionaries, that can
encode expressions in relational algebra with aggregations, functional
collections, and linear algebra. Furthermore, thanks to the semi-ring algebraic
structures behind these dictionaries, SDQL unifies a wide range of
optimizations commonly used in databases and linear algebra. As a result, SDQL
enables efficient processing of hybrid database and linear algebra workloads,
by putting together optimizations that are otherwise confined to either
database systems or linear algebra frameworks. Through experimental results, we
show that a handful of relational and linear algebra workloads can take
advantage of the SDQL language and optimizations. Overall, we observe that SDQL
achieves competitive performance to Typer and Tectorwise, which are
state-of-the-art in-memory systems for (flat, not nested) relational data, and
achieves an average 2x speedup over SciPy for linear algebra workloads.
Finally, for hybrid workloads involving linear algebra processing over nested
biomedical data, SDQL can give up to one order of magnitude speedup over
Trance, a state-of-the-art nested relational engine.
