For Embedded or Client/Server

eXtremeDB can be deployed as either an embedded database system, or as a client/server database system.

An embedded database system is one that is linked directly to the application and executes in the same address space as the application. In other words, it is embedded within the application such that end-users of the application are unaware of the database system’s existence. An embedded database system is inherently zero- or low-administration because the ‘care-and-feeding’ of the DBMS is carried out by the application itself. An embedded database system can also exhibit better performance because there is no inter process communication or remote procedure call (IPC/RPC) needed to send requests to and receive responses from a database server.

An in-memory embedded database system architecture (a persistent database would look exactly the same; the shared memory segment would represent the shared database cache):

 

A client/server database system is one for which a dedicated process, the database server, processes requests for database operations on behalf of multiple client applications. The client applications might all reside on the same physical system as the database server, or might all reside on different systems, or be a mixture of local and remote clients.  Client/server database systems have the potential to scale better than embedded database systems, but need to have some number of concurrent clients operating in order to overcome the inherent latency associated with the IPC/RPC.  Client/server architecture enables the possibility of using “big iron” for the server and “thin clients”, and exploiting that architecture by offloading heavy data processing to the server in the form of stored procedures. Stored procedures also facilitate centralizing business logic, which eases maintenance in that business logic changes can be implemented in one place, and all clients automatically use it. Client/server database systems have more administrative requirements. The server needs to be instantiated before client applications. Typically, client’s need to be credentialed (which need to be set up, removed, etc). The database needs to be backed up. And miscellaneous other tasks that vary from one database system to another.

A client/server database system architecture: