  Considering the current price gap between disk and flash memory drives, for
applications dealing with large scale data, it will be economically more
sensible to use flash memory drives to supplement disk drives rather than to
replace them. This paper presents FaCE, which is a new low-overhead caching
strategy that uses flash memory as an extension to the DRAM buffer. FaCE aims
at improving the transaction throughput as well as shortening the recovery time
from a system failure. To achieve the goals, we propose two novel algorithms
for flash cache management, namely, Multi-Version FIFO replacement and Group
Second Chance. One striking result from FaCE is that using a small flash memory
drive as a caching device could deliver even higher throughput than using a
large flash memory drive to store the entire database tables. This was possible
due to flash write optimization as well as disk access reduction obtained by
the FaCE caching methods. In addition, FaCE takes advantage of the
non-volatility of flash memory to fully support database recovery by extending
the scope of a persistent database to include the data pages stored in the
flash cache. We have implemented FaCE in the PostgreSQL open source database
server and demonstrated its effectiveness for TPC-C benchmarks.
