  In the last decade, document store database systems have gained more traction
for storing and querying large volumes of semi-structured data. However, the
flexibility of the document stores' data models has limited their ability to
store data in a columnar-major layout - making them less performant for
analytical workloads than column store relational databases. In this paper, we
propose several techniques based on piggy-backing on Log-Structured Merge (LSM)
tree events and tailored to document stores to store document data in a
columnar layout. We first extend the Dremel format, a popular on-disk columnar
format for semi-structured data, to comply with document stores' flexible data
model. We then introduce two columnar layouts for organizing and storing data
in LSM-based storage. We also highlight the potential of using query
compilation techniques for document stores, where values' types are known only
at runtime. We have implemented and evaluated our techniques to measure their
impact on storage, data ingestion, and query performance in Apache AsterixDB.
Our experiments show significant performance gains, improving the query
execution time by orders of magnitude while minimally impacting ingestion
performance.
