High performance data transfer on latent networks
With a combination of Batch request and data reduction techniques RemoteSQL significantly reduces the impact of latency.
Compared with the default Delphi database access components, achieved acceleration on some database management systems can climb up to 80X in a high latency environment.
For a detailed comparison of results on different DBMS systems with different bandwidths and latencies, see Remote SQL 2.0 Benchmark test results.
RemoteSQL - How it works?
RemoteSQL provides high speed data acces over latent and limited bandwidth for Delphi database applications. It provides connectivity to different database systems such as MSSQL, ORACLE, PostgreSQL, Firebird and Interbase .
RemoteSQL architecture consists of two main parts – the RemoteSQL Client (a Delphi component), and the RemoteSQL Server (a Windows service). This architecture and its underlying transport layer allows it to have a high speed performance on networks with high latency
The client component does not require any drivers to connect to the database as it communicates only with server component, thus adding an additional tier to the architecture. All data manipulation goes through the RemoteSQL server.
This increases security, reduces the need for client libraries to access various database servers which allows your application to be easy portable.
Which DBMS systems are supported?
With RemoteSQL components, you can access data on different DBMS systems. On the client side, you don’t need any library or data providers/drivers. This make the RemoteSQL component perfect for mobile application development, where built in components do not support connection to remote DBMS systems.
Currently we provide support for:
- Microsoft SQL
Support for Firedac, Anydac, ClientDataset and JSON
You can use built in Delphi datasets, combine them with RemoteSQL Client components and do your dataset-work same way as it is directly connected to DBMS, or it is in offline mode. With RemoteSQL there is the possibility to load multiple datasets in only one request.
When changing data in Firedac/Anydac or ClientDataset, and applying updates to the database, the RemoteSQL Client SQL generator component will automatically generate SQL commands for update/insert/delete from the dataset based on your changed data.
Based on the information about started transactions, RemoteSQL will either execute SQL commands one by one, or it will delay execution until the moment of committing the transaction, and then transfer all of the SQL commands in only one request.
SQL batch execution – collect SQL commands in a batch and execute at once
Batch execution allows you to group SQL statements into a batch and submit them to the RemoteSQL server at once. When executed inside a transaction, either all sql commands are executed, or none of them are. In case one of the commands fails, the entire transaction will be rolled back.
When you send several SQL statements to the server at once, you reduce the amount of communication overhead (less network traffic involved - only 1 round trip), thereby improving performance. The speed compared to executing the SQL statements one by one, can be several dozen times faster.