  In recent years, the Log Structured Merge (LSM) tree has been widely adopted
by NoSQL and NewSQL systems for its superior write performance. Despite its
popularity, however, most existing work has focused on LSM-based key-value
stores with only a primary LSM-tree index; auxiliary structures, which are
critical for supporting ad-hoc queries, have received much less attention. In
this paper, we focus on efficient data ingestion and query processing for
general-purpose LSM-based storage systems. We first propose and evaluate a
series of optimizations for efficient batched point lookups, significantly
improving the range of applicability of LSM-based secondary indexes. We then
present several new and efficient maintenance strategies for LSM-based storage
systems. Finally, we have implemented and experimentally evaluated the proposed
techniques in the context of the Apache AsterixDB system, and we present the
results here.
