Performance needs of many database applications dictate that the entir
e database be stored in main memory. The Dali system is a main memory
storage manager designed to provide the persistence, availability and
safety guarantees one typically expects from a disk-resident database,
while at the same time providing very high performance by virtue of b
eing tuned to support in-memory data. User processes map the entire da
tabase into their address space and access data directly, thus avoidin
g expensive remote procedure calls and buffer manager interactions typ
ical of accesses in disk-resident commercial systems available today.
Dali recovers the database to a consistent state in the case of system
as well as process failures. It also provides unique concurrency cont
rol and memory protection features, as well as ordered and unordered i
ndex structures. Both object-oriented and relational database manageme
nt systems have been implemented on top of Dali. Dali provides access
to multiple layers of application programming interface, including its
low-level recovery, concurrency control and indexing components as we
ll as its high-level relational component. Finally, various features o
f Dali can be tailored to the needs of an application to achieve high
performance-for example, concurrency control and logging can be turned
off if not desired, enabling Dali to efficiently support applications
that require non-persistent memory-resident data to be shared by mult
iple processes.