"PC Datasheet" <no****@nospam.spam> wrote in
news:ea*****************@newsread2.news.atl.earthl ink.net:
What is indirect replication and where can I get more information
about it?
In answering, I'll assume you already know what Jet replication is
and what it does.
Jet replication via the Access menus is intended for use over a LAN,
because when it synchronizes two replicas, it opens both of them.
If you are remote from the replica you are synchronizing with, you
are likely to have much-reduced bandwidth, which makes pulling the
entire remote replica across the wire not only a performance
bottleneck, but also rather dangerous, because of the possibility of
a droppeed connection, which could corrupt the remote database.
That kind of replication is called "direct replication."
To address the problems of direct replication, Microsoft created two
alternative synchronization methods, indirect and Internet
replication. Both work by using a process running on either end of
the synchronization that opens the replica locally, and all
communication is between the two synchronizers. Indirect replication
uses MSTRAN>>.EXE and Internet replication use MSTRAIXX.EXE (where
XX is the Jet version, 40 for Jet 4, 35 for 3.5).
Indirect replication uses a dropbox on each end that is accessible
to the remote synchronizer. If you've got ReplicaA and ReplicaB,
ReplicaA has DropboxA and ReplicaB has DropBoxB. SynchronizerA
communicates with SynchronizerB and determines what generations need
to be sent (based on each synchronizer reading its local replica's
replication tables). SymchronizerA will then drop message files and
small MDBs into DropBoxB that include all the changes in ReplicaA
that ReplicaB does not have. SynchronizerB then applies the data in
DropBoxB to ReplicaB, then places files in DropBoxA for
SynchronizerA to apply to ReplicaA. This is a reiterative process,
because certain changes have to be successful before certain others
can happen (e.g., a parent record must be successfully inserted
before a child record attached to it can be inserted), and so you
can have a cycle of several round-trips between the two
synchronizers before the replicas reach a state where they have
identical data.
The advantage of indirect replication over direct is that the only
data that goes across the wire is the changes (actually, the data
necessary to apply the changes, which is going to be greater than
the content of the changes themselves, but substantially less than
if you pulled the whole remote replica across the wire). A direct
replication over a slow connection can take hours, assuming it
succeeds. An indirect synch of the same data usually takes less than
10 minutes, and usually substantially less (when replicas are
synching regularly, e.g., daily, it often takes 2 or 3 minutes, but
it depends on the number and type of changes being synched).
Internet replication does basically the same thing, but uses FTP to
communicate, rather than the SMB networking that indirect
replication is based on. The problem from my point of view with
Internet replication is that it has hardwired dependencies on IIS --
you must use the IIS FTP service for it. You can't use some other
FTP service. And it requires that IIS (to support the FTP service)
be running on all PCs that do the synchronizing. That means that if
you want to set up laptops to synch with the mothership via Internet
replication, those laptops have to have IIS installed and running.
To me, that's an unacceptable requirement because:
1. it's an additional administrative requirement that is hard to
manage remotely.
2. IIS is the most unsafe widely-used HTTP server out there. Yes, MS
has addressed a lot of the problems that were there that led to the
worms that propagated so widely a couple of years ago, but I'm not
convinced. Apache is a much safer and more secure HTTP server that
is not intimately hardwired into the OS, but you can't use it, or
any alternative FTP server.
3. because of the dependencies outside of Access and outside of file
system permissions, you now have a dependency on a monolithic
component that really oughtn't be running on workstations at all.
That dependency makes Internet replication particularly fragile,
since not only can file access configuration issues cause problems
(as they also can with indirect replication), but you also add in
the problems of properly configuring the IIS/FTP services, which,
from the history of problems we've seen reported in
microsoft.public.access.replication, is not a triviality at all.
Now, the original problem with indirect replication was that it
required an SMB networking connection. That meant the Internet was
out of the question -- you either needed a WAN that was NETBios
end-to-end, or you needed some form of dialup networking (which was
always fine for indirect replication, even at 28.8). This meant
dialin servers and other administrative headaches and expenses in
order to support many remote users.
However, these days with VPNs being widely in use and so easy to set
up from within Windows, the solution for indirect replication is to
run it across the Internet over a VPN. It's not terribly difficult
once the VPN infrastructure is in place (as it already is in a large
number of offices).
--
David W. Fenton
http://www.bway.net/~dfenton
dfenton at bway dot net
http://www.bway.net/~dfassoc