System Design
The components of the RaimaDB system can be arranged in multiple configurations to satisfy the user's application system design. This section will describe a few of those application design possibilities using some simple diagrams.
Quick Definitions
The following definitions use some terminology and concepts that may be foreign to most readers. The following basic definitions will hopefully provide enough understanding to grasp the system design concepts without delving too deep into details not necessary for this quick overview.
DOCROOT
In the following application design configurations, the following diagram represents the document root or docroot. The docroot represents the physical location of the database images which can be memory resident or located on a file system. The docroot can contain one or more database images and can be accessed by one and only one TFS. It does not matter if the TFS is a thread or a process, the TFS has exclusive access to the docroot location. The docroot is set by the application developer. For more detail information about the docroot, refer to the Document Root (docroot) section.
TFS
The Transactional File Server Interface (TFS) module provides the basic I/O access to the database images in the docroot. This module also provides the transaction management (locking and snapshots). The TFS is capable of executing within the user application or it can run as a standalone process to be accessed remotely by the user's client application.
In the following application design configurations, TFS API refers to a TFS module operating in the user application and TFS Process refers to the rdm-tfs
utility.
The API calls used for an embedded TFS versus a remote TFS are identical except for some configuration options.
Some basic rules for a TFS are:
- One and only one TFS module can access a given docroot location. If a TFS module is active in docroot (TFS API or TFS Process), another TFS module will not be able to access the databases in that docroot.
- If two or more user application processes need to access the same database image simultaneously, at least one of the user applications will need to use remote access to communicate with the TFS Process outside the user application process.
- A TFS API can be configured by the user application to act as a TFS Process to other user applications.