EDBMS: The SymbianOS Internal Database
An early name of SymbianOS was "EPOC" and vestiges of that name remain in certain places in the operating system--the entry point of program executables in E32Main(), for example. The SymbianOS Data Base Management System component is still referred to as "EDBMS," short for "Epoc Data Base Management System."
The DBMS server runs as a separate server process. Like all non-kernel processes in SymbianOS, the DBMS server does not run with supervisor privilege. Requests made to the DBMS server. Like most requests to servers on SymbianOS, requests are routed through the kernel. Client/server requests to the DBMS server use kernel executive calls. Kernel executive calls do not require a context switch for the passing of the request. Messages are stored in internal kernel message slots allocated for the message. Internally, the DBMS server utilizes SymbianOS's active object approach to multitask, which, rather than having the overhead of additional threads, minimizes thread creation and thus context switches, and is an object-oriented to multitasking as well.
Remembering that SymbianOS is designed with a minimal approach, there are some features a larger footprint DBMS might implement, but are missing in the SymbianOS DBMS. To be clear, this is not a full-featured database that is going to let you, say, perform complex queries. But that is not the goal, and there are other solutions for application developers seeking a fuller DBMS implementation. The goal of Symbian's provided DBMS is to facilitate the storage of small amounts of information in a tiny footprint implementation.
In classic Symbian fashion, and in keeping with an object-oriented approach, the DBMS implementation was designed to be extensible. Technically, the DBMS component really just defines API classes, and a wide variety of DBMS implementations could exist. In this article, I discuss the implementation that comes with the operating system, which physically stores the database as a file in the filesystem. However, it is certainly possible to use these API classes with an in-memory implementation for example. In fact, not only would it be possible to implement an in-memory implementation, but the framework is designed to encourage future implementations. This approach of designing for future extensions is similar to the Symbian approach to sockets; for example, where an extensible communication framework was designed. By creating an extensible architecture, plugins for new communication protocols are easily added to SymbianOS. This was the case with early protocols such as WAP and Bluetooth, and also true more recently for protocols such as 802.11x.