Shared Network Data Access

Introduction to File Server Mode

Applications using Apollo Embedded can access data on shared network drives (e.g. F:\MyDatabase.DBF) in single-user mode and concurrently while other users access the same database. This type of data access is often referred to as "file server mode".Table and row locking is managed automatically by Apollo for SQL statements and developers using Apollo's DDA technology can manage table and row locks manually. Either way, data can be shared simultaneously among multiple users.

In such a shared network scenario, each Windows workstation requires a lot of extra resources to manage the sharing of the database file, or any file for that matter. In this case, a Apollo embedded application is not in complete control of the .DBF database. In fact, each application running on each Windows workstation opens the entire .DBF database over the LAN, potentially causing lots of network traffic.

Exclusive and Shared Access

The key point to understand is as follows: The first user that accesses the .DBF database on the shared drive will experience very good performance relative to local desktop access. His Windows workstation recognizes that he is the only user of this file and so Windows is able to open the .DBF database in a type of exclusive mode (The Apollo open mode settings have no affect on this Windows setting. This is internal to how Windows works.) . However, the moment a second user accesses the same .DBF database, Windows drops its exclusive mode file access down to a shared mode file access which is magnitudes slower.


The crux of the problem is that even after the 2nd user closes his connection to the database, and the first user is back to being the only user working on the database, this first users's Windows workstation does not resume exclusive mode file access until the file (i.e. database) is closed and re-opened. This is the reason why all desktop applications running in this type of "file server" mode suffer from poor multi-user performance and why database applications especially experience data corruption and various other locking problems. Any long time Jet/Access developer will recognize this scenario.


The solution is simple. For multi-user applications where more than one user needs access to a database concurrently when others are accessing the same database, an embedded configuration will generally not be the best choice. Apollo Server bypasses Windows shared network file problems by allowing Apollo applications to connect to databases using high-speed TCP/IP. The Apollo Server is an application that runs on the computer hosting the data and listens on a port for Apollo applications to send or request data via SQL commands. This is a true client/server configuration and it is the best solution for multi-user database access. Furthermore, the Apollo DBF database files are never passed to each workstation for processing, since the Windows workstation is no longer in control of opening and closing the database files.

Apollo Server delivers superior performance that is often magnitudes faster than similar embedded configurations and it eliminates excess network traffic, ensures a high-degree of data integrity and keeps the data secure.