  Analytical database systems are typically designed to use a column-first data
layout to access only the desired fields. On the other hand, storing data
row-first works great for accessing, inserting, or updating entire rows.
Transforming rows to columns at runtime is expensive, hence, many analytical
systems ingest data in row-first form and transform it in the background to
columns to facilitate future analytical queries. How will this design change if
we can always efficiently access only the desired set of columns? To address
this question, we present a radically new approach to data transformation from
rows to columns. We build upon recent advancements in embedded platforms with
re-programmable logic to design native in-memory access on rows and columns.
Our approach, termed Relational Memory, relies on an FPGA- based accelerator
that sits between the CPU and main memory and transparently transforms base
data to any group of columns with minimal overhead at runtime. This design
allows accessing any group of columns as if it already exists in memory. We
implement and deploy Relational Memory in real hardware, and we show that we
can access the desired columns up to 1.63x faster than accessing them from
their row-wise counterpart, while matching the performance of a pure columnar
access for low projectivity, and outperforming it by up to 1.87x as
projectivity (and tuple re-construction cost) increases. Moreover, our approach
can be easily extended to support offloading of a number of operations to
hardware, e.g., selection, group by, aggregation, and joins, having the
potential to vastly simplify the software logic and accelerate the query
execution.
