whitepaper
SQLDataPipe
![]()
ã Infotech Business Systems Inc.
All
Rights Reserved
What is
SQLDataPipe?
SQLDataPipe is a program module that runs on the
Internet Information Server used to speed up data delivery, response time, and
simplify Internet programming.
Web
enabled applications have been gaining popularity as a platform for deploying
systems across multiple organizations or via a wide area network. A web-enabled application does not require
any distribution of software to the client.
The browser is used to view data and perform data entry. These types of applications require no
special data communication platform because they use the standard Internet http
protocol.
Building a
web-enabled solution is quite challenging because the relationship between functionality,
performance and manageability is different from that of traditional
client/server application design.
Furthermore, the response time is a function of the server side program
architecture.
Application
developers need to appreciate the subtle difference between server side
performance and page delivery speed.
Most architectural deployment is designed to optimize the number of
pages delivered by the application and pay very little attention to the speed
of building and delivering pages.
Response time depends on how quickly a page can be dispatched from the
server.
Early
database-backed websites were designed where the user interface is written in
Microsoft Active Server Pages™ (ASP) format or Microsoft ISAPI™ and the IIS
would provide the pooling and the connection to the Microsoft SQL Server™. The IIS took care of ensuring efficiency to
the SQL Server and the programmer did not need to be concerned with that. This architecture demanded that all business
rules and connectivity to the SQL database be implemented in the ASP and ISAPI
programs, which is more suitable for programming the presentation of a
page. Program manageability became very
awkward.

Figure 1. Two Tiered Architecture. IIS provides the pooling, ADO connection and
multithreading to the SQL Server.
Microsoft
then introduced the 3-tiered web application model, where the presentation of
pages uses the help of business modules and a data module, implemented as
Dynamic Link Library (DLL) programs. Most sites nowadays use Visual Basic™ (VB)
to implement these DLLs. Now with this architecture, IIS’ automatic
configuration cannot be used. Having a
DLL as the layer between the web pages and the database, the user lost IIS’
help in managing the connectivity to the database, and has to concern
him/herself with such issues. The
result is commonly a considerable increase in waiting time for data to arrive
from the SQL Server. Because of this
wait, the IIS running this configuration attempts to generate more pages, as
the current page is still awaiting data from the database (the CPU of the IIS
machine is idle). This increases the
number of pages returned, although the wait for each of these pages is
increased, having the illusion of increased performance. With this configuration, the SQL Server is
working at maximum capacity because of the lack of tuning and efficient
connection, which takes a toll on data delivery. Because the SQL Server uses more CPU cycles per unit of data with
this configuration, this reduces the number of IIS machines that could share
this database server, making the setup less scalable.

Figure 2. Three Tiered Architecture.
Pooling, ADO connection and multithreading must be programmed by the web
developer in the Data Connectivity module.
Some
programmers realized this deterioration in speed and attempted to reprogram the
data modules in a faster programming language such as C++, but there are many
modules, and to convert all these DLLs and retest them is not worth the effort,
and is virtually impossible for a production system. So the attempts were very limited and people have settled to
accept the slow response time.
At
Doxess, we realized that the minute you left the two-tiered architecture, you
couldn’t use the IIS capabilities, and had to create your own. At the same time, we realized that a lot of
companies would not have the skill required to program and fine-tune an
efficient connection to the SQL Server. So we created SQLDataPipe. This is a DLL programmed to optimize the
connectivity to the SQL Server. This
DLL can be called directly from an IIS or ISAPI program, or alternatively by a
business module if necessary. It wraps
the SQL connection. Using this will
free the programmer from dealing with creating an efficient connection to SQL
Server without IIS. In addition, we
have reduced the need for the business module because we implemented much of
that in the database itself. This helps
in reducing the overhead at the IIS machine, which has to connect to two
modules at the same time. We have
established that if performance and speed are top priority, business rules
should be implemented at the database level.
Because the IIS machine now does not wait very long for data coming from
the SQL Server, pages are delivered much faster to the end user, resulting in a
dramatic improvement in response time.
Because the connectivity to the SQL Server is very efficient, this
machine uses fewer CPU cycles per unit of data compared to the previously
discussed architecture (three tiered with DLLs). And as a result, one SQL
Server could support a higher number of IIS machines on the system.

Figure 3. Three Tiered Architecture with Doxess SQLDataPipe. Pooling, multiple ADO connection and
multithreading are provided by SQLDataPipe.
Currently
much of the web-enabled applications are built around the browser. The common
problem is that the browser cannot read data available on the client’s machine
or the Local Area Network (LAN). Adopting a web system raises the need to get
into your own existing application and retype data into the web
application. We envision that future
web-based applications will require one Windows application running on a LAN
that allows a client to connect to a remote SQL database through a web
service. A web service running on the
IIS machine will talk to a Windows application via software that extends the
SQLDataPipe across the Internet to the client.
The protocol of the connection will be exactly the same as that used by
the browser (http or https).
SQLDataPipe
contributes the following when used in a web application:
§
Dramatic
improvement in response time
§
Reduced
number of CPU cycles per unit of data on SQL Server
§
Simplified
programming of ASP or ISAPI user interface and increase in programming
standards
§
Supports
scalable architecture
Because
SQLDataPipe is available all the time, there is no down time in development. No
need for shutdown of services on development machines that may have been
necessary when compiling DLLs. Clients
have the capability of testing programs on the same machine while developers
are working on it.
SQLDataPipe
is configured to be fail-safe. It is
designed to load on start and rebuild the connection dynamically. For instance,
if an IIS machine went down and came back up again, SQLDataPipe will reload
itself dynamically and reestablish connectivity to multiple SQL databases as
configured earlier. Moreover, it will
also reconnect itself to SQL Server if that shuts down and restarts. So in an environment with multiple IIS
machines and multiple databases, SQLDataPipe provides maximum availability
automatically with no manual interference to support it. SQLDataPipe can work with Microsoft SQL
Server, Oracle and DB2.
SQLDataPipe
is not limited to the web applications running on the IIS. It can run on any server to provide
efficient 3-tiered architecture for Win32 client/server applications. Win32 programs running on client machines
may connect to SQLDataPipe as a Distributed Component Object Model (DCOM) on a
LAN, or as an http service over the Internet or Intranet to achieve an
efficient three-tiered client/server system.
SQLDataPipe
requires one license per server running it.
One license on the server can support an unlimited number of connections
to SQL Servers.