RODAIN: a highly available real-time main-memory database system

The RODAIN database system has been designed to be used in telecommunications. It is a highly available real time object-oriented database system. The main challenge is that typical transactions are heterogeneous: short simple queries, simple updates, and long massive updates. A RODAIN node consists of a primary node and of a mirror node that are symmetrical and have the same subsystems but their functionality depends on the role. The User Request Interpreter Subsystem (URIS) accepts client requests and forwards them to the TRansaction Process (TRP). Each TRP executes one transaction at time but can handle sequential execution of multiple transactions. The Run-time Transaction Controller (RTC) allocates a TRP for an arriving transaction. TRPs execute the transactions and access the database through Object Request Dispatcher (ORD). ORD sends transaction logs to Fault-Tolerance and Recovery Subsystem (FTRS) for storing. The FTRS on Primary Node communicates with the FTRS on Mirror Node to store the logs permanently in the Secondary Storage Subsystem (SSS). Watchdog monitors the other processes and initiates node recovery actions when needed.