  This paper presents the design and implementation of Obladi, the first system
to provide ACID transactions while also hiding access patterns. Obladi uses as
its building block oblivious RAM, but turns the demands of supporting
transactions into a performance opportunity. By executing transactions within
epochs and delaying commit decisions until an epoch ends, Obladi reduces the
amortized bandwidth costs of oblivious storage and increases overall system
throughput. These performance gains, combined with new oblivious mechanisms for
concurrency control and recovery, allow Obladi to execute OLTP workloads with
reasonable throughput: it comes within 5x to 12x of a non-oblivious baseline on
the TPC-C, SmallBank, and FreeHealth applications. Latency overheads, however,
are higher (70x on TPC-C).
