Due to the possibility of direct interaction with the client database, many programming options far simpler and more powerful than conventional client-server databases may be used.
Conventionally, application interface to a database server is almost exclusively through use of SQL. It is true that there are operations which may be executed very effectively through this mechanism - for example, selecting a set of results from one or more tables qualified by a set of filter comparisons and specific joins. Where this is appropriate, SQL may be used as an interface to a Lava Server as with any other server.
In many cases, however, SQL is very clumsy. For example, retrieving a single row of data, updating the content of a single row or adding a row of data to a table cannot be achieved elegantly through SQL. The construction of the required SQL command may be semi-automated to eliminate the most onerous aspects of the mechanism, but even this cannot eliminate the terrible inefficiency of the overall operation.
When interfacing to a Lava Server, the programmer has the option to use the most comprehensive row-level interface available today. Specific interfaces are presented to retrieve a single row, add a row, update a specified row in a data table. In addition, flexible facilities are provided to seek a row or set of rows meeting one or more equality or inequality criteria, which also allows high-speed sequential processing of sets of rows for a specific purpose such as compiling a balance sheet or a stock summary.
In addition, due to the architecture of the Lava database, it is often possible for the programmer to access data tables through an array interface, pointers and types for which are provided and maintained by the Lava database kernel. This allows extremely high-speed and very flexible access to table data under direct program control - very much more usable and vastly faster than retrieving a result set from a server and then laboriously retrieving result for result into a local structure.
Where software is being written in the native Lava programming language - LavaStream - the interface to the entire database is via array access, while seek mechanisms are extensively supported. SQL is, of course, also provided - most programmers find that this is used as a last resort if at all.