Database Management

The Transactional File Server (TFS) specializes in the serving and managing of files on a given medium. The TFS API is a set of functions called by the runtime library to manage the sharing of databases among one or more runtime library instances. In a normal multi-user configuration (see below for more about configurations), the TFS functions are wrapped into a server process called rdm-tfs that listens for runtime connections and serves the connections with remote procedure calls. This listener my be started in applications built with RaimaDB, but this is a more advanced topic. To connect to a particular rdm-tfs process, the runtime library needs to know the domain name of the computer on which rdm-tfs is running, and the port on which it is listening, for example, "tfs.raima.com:21553". Standard TCP/IP can be used to make the connection, whether the runtime library and rdm-tfs are on the same computer or different computers (when on the same computer, optimizations are made, and a shared-memory protocol is available by default).

In the figure below, it shows that one runtime library may have connections to multiple rdm-tfs processes, and one rdm-tfs may be used by multiple runtime libraries. To the applications using the runtime libraries, and the rdm-tfs processes, the locations of the other processes are invisible, so all processes may be on one computer, or all may be on different computers. This provides opportunities for true distributed processing.

An rdm-tfs should be considered a "database controller" in much the same way as a disk is managed by a disk controller. A TFS is initialized with a root directory (elsewhere called the "document root") in which are stored all files managed by the TFS. If one computer has multiple disk controllers, it is recommended that one rdm-tfs is assigned to each controller. This facilitates parallelism on one computer, especially when multiple CPU cores are also present.

A complete system may have multiple rdm-tfs running on one computer, and multiple computers networked together. Each rdm-tfs will be able to run in parallel with the others, allowing the performance to scale accordingly.

The TFS can manage multiple database instances. However, any database instance can be managed by ONLY one TFS.