The SQL Anywhere database server has an internal structure that allows many requests to be handled efficiently.
A communications layer handles the exchange of data with client applications. This layer receives requests from client applications, and returns results. The timing of these actions is governed by a negotiation between the client and the server to make sure that the network traffic is kept to a minimum, but that the data is made available as soon as possible on the client side.
The parser checks each SQL statement sent to the database server, and transforms it into an internal form for processing.
If the request is a query, an update, or delete statement, there can be many different ways of accessing the data, which may take significantly different times. The optimizer selects the best method of getting the required data quickly.
The lowest level of the database server is concerned with reading and writing data from the disk, caching data in memory to avoid unnecessary disk access, and balancing the demands of different users.
There are two versions of the SQL Anywhere database server: the personal server and the network server.
The request-processing engine is identical in both versions, and they support exactly the same SQL language, and exactly the same database features. However, the personal server does not support communications across a network, more than ten concurrent connections, or the use of more than one computer. Applications developed against a personal server work unchanged against a network server. Other differences are as follows:
The personal server can only accept connections from applications or users running on the same computer. It is intended for single-user, same-computer use: for example, as an embedded database server. It is also useful for development work.
The name of the personal server executable is as follows:
On Windows it is dbeng10.exe. (It is not provided on Windows CE.)
On Unix operating systems, it is dbeng10.
By contrast, the network server supports client/server communication over a network and is intended for multi-user operation.
The name of the network server executable is as follows:
On Windows, including Windows CE, it is dbsrv10.exe. The network server is supplied for Windows CE so that the desktop applications can connect to databases in the mobile device.
On Unix operating systems, it is dbsrv10.
On Novell NetWare, the network server is a NetWare Loadable Module (NLM) called dbsrv10.nlm.
If you have received SQL Anywhere as part of another product, you may not have both versions of the database server. Similarly, not all components are available on all operating systems. For example, there is no personal server for NetWare, only a network server.
For more information about running the personal and network database servers, see Running the Database Server.
If you want to provide a database application for a small device such as a handheld organizer, you may want to use UltraLite. In UltraLite, the functions performed by the server are typically placed in a runtime library. The runtime library is combined with the application to become part of the same process. Consequently, there is a one-to-one relationship between the database and the application.
For deployments that require multiple applications to connect concurrently to one database on the same device, the library must exist as a separate process. In these cases, the UltraLite database engine is used.