Performance

The use of Zim Server Connectivity in an application has an impact on performance. There are several factors to consider:

  1. Client-server configurations introduce additional overhead that is not present when an application is using a local database. The most obvious overhead is that every database request must be translated into a server request, the request must be transferred to the server (which can introduce communications delays), and the returned data must be transferred back to the client. If this overhead was introduced only once per Zim command, it would not be too serious a concern but this is not always the case. For example, the Zim command

change all Customers let Discount = 0.10

results in a single server request being sent and the overhead is very low.

On the other hand, if Customers is an entity set managed by a remote database and Orders is an entity set managed on the client side, the Zim command:

change all Customers Issue Orders let Discount = 0.20

results in each Customer record being retrieved from the server, joined with any Orders at the client, and then an UPDATE request being sent back to the server. Here the server overhead is introduced hundreds or even thousands of times.

  1. Zim commands that are executed in integrated server mode result in a single server request with low overhead. Commands that handle a combination of local and server data or data from different servers cannot be executed in integrated server mode.
  2. The use of Zim Server can also improve performance and throughput. For example, a multi-user application might be running on a small UNIX machine. If this application was moved to client-server where the server was placed on a larger high performance UNIX system, then overall performance is likely enhanced.
  3. The use of the configuration option "server request tracing yes" results in lots of printing and might introduce some delays in the command execution.