Lava Distributed Client

A conventional database client application contains no database functionality whatsoever. It is, in database terms, "dumb" - similar to the "dumb" terminals of the obsolete mainframe era.

A Lava Database Client is anything but "dumb". Rather, the client is constructed on a special version of the Lava Database, a Distributed Client. This version of the database contains all the functionality you would expect to find in any database, including comprehensive SQL capability.

When a Distributed Client is connected to the Server, the connection process is actually a protocol negotiation between client and server. On successful completion of this negotiation, the Server transmits the required data tables to the client, which mounts these tables as part of its local database.

Once distribution has completed, the client application is mounted on its own, single user database. The Distributed Client ensures that the local database is kept up to date (courtesy of update packets received from the Primary Server) and ensures that the Primary Server database is kept abreast of any changes to the local database.

The result is a simple, elegant and responsive client application, designed and written as if for a single user.

 

Local Data Storage

Most client applications need local (temporary) storage facilities. Despite the fact that there is a data server able to store vast amounts of data, using this is firstly inconvenient due to the clumsy interface, and secondly can very easily cause problems if multiple client applications are all attempting to store similar temporary processing data in the same data table.

When the client application is built on a Distributed Client, however, both problems disappear. Firstly, the interface to the Distributed Client database is flexible, easy to use and fast. Secondly, each client has its own database - contention with other clients simply cannot occur. Suddenly the database becomes useful, an aid to good programming instead of a handicap.

Conventional Program Temporary Data

One of the most inconvenient problems a programmer has to deal with is the aspect of complex local data structures, used for temporary data storage and manipulation during execution.

The "best" current solution is the class and object mechanism provided by Object Oriented Programming, where objects are used outside of their primary intended role (for encapsulation of methods with modest numbers of attributes) as an inappropriate and clumsy method for storing and manipulating data for algorithmic purposes.

This solution causes a number of associated problems. Not the least of these is the issue of visibility. During debugging, the visibility of objects used for storage in this way can be severely compromised, presenting a restricted slice of local data only, with at best pointers to other objects, instead of ready visibility of all data.

Secondly, designers tend not to be consciously aware of the fact that they are designing relational databases into their classes, and as a result the design of the class structure tends to be significantly compromised and inappropriate.

Temporary Data in a Distributed Client

When programming for a Distributed Client, the local database becomes the most powerful and useful ally of the designer and programmer. The Client database is capable of storing and manipulating vast amounts of data extremely rapidly, as all client data is kept entirely in memory. All data tables are accessible directly and fully as arrays of structures from anywhere in the program, while random and sequential access (read, write, delete) is also fully supported through dedicated row-level functions. In addition, standard facilities to search or sort the data are available, including full availability of SQL where this is most appropriate.

Further, when designing in this mode, the designer is not only aware that he is designing a relational database but actually has appropriate tools with which to accomplish this - a fully fledged Entity Relationship Diagrammer is included in the Blueprint environment for this very purpose.