In this paper we present recovery techniques for distributed main-memo
ry databases, specifically for client-server and shared-disk architect
ures. We present a recovery scheme for client-server architectures whi
ch is based on shipping log records to the server, and two recovery sc
hemes for shared-disk architectures-one based on page shipping, and th
e other based on broadcasting of the log of updates. The schemes offer
different tradeoffs, based on factors such as update rates. Our techn
iques are extensions to a distributed-memory setting of a centralized
recovery scheme for main-memory databases, which has been implemented
in the Dali main-memory database system. Our centralized as well as di
stributed-memory recovery schemes have several attractive features-the
y support an explicit multi-level recovery abstraction for high concur
rency, reduce disk I/O by writing only redo log records to disk during
normal processing, and use per-transaction redo and undo logs to redu
ce contention on the system log. Further, the techniques use a fuzzy c
heckpointing scheme that writes only dirty pages to disk, yet minimall
y interferes with normal processing-all but one of our recovery scheme
s do not require updaters to even acquire a latch before updating a pa
ge. Our log shipping/broadcasting schemes also support concurrent upda
tes to the same page at different sites.