Introduction: Persistent data storage enables users to access
enterprise data without being connected to the network but it is prone to becoming
stale. Bidirectional refresh of data with master data is required and one way
to achieving it is to do periodic synchronization which is a technique to
propagate updates on the data on both local and remote. In this article, we review
the nuances of such synchronization.
Description: The benefits of synchronization over an always-online
solution is quite clear – reduced data transfer over the network, reduced loads on the enterprise server, faster
data access, increased control over data availability. But it is less
understood that there are different types of synchronization depending on the
type of data. For example, the synchronization
may be initiated for personal information management (PIM) such as email,
calendar entries, etc as opposed to application files. The latter can be
considered artifacts that artifact-independent synchronization services can
refresh. Several such products are available and they do not require user involvement
for a refresh. This means one or more files and applications can be set up for
synchronization on remote devices although
they are usually one-way transfers.
Data synchronization, on the other hand, performs a bidirectional
exchange and sometimes transformation between two data stores. This is our
focus area in this article. The server data store is usually larger because it
holds data for more than one user and the local data store is usually limited
by the size of the mobile device. The data transfer occurs over a
synchronization middleware or layer. The middleware is set up on the server
while the layer hosted on the client. This is the most common way for smart
applications to access corporate data.
Synchronization might be treated as a web service with the
usual three tiers comprising of the client, the middle-tier, and enterprise
data. When the data is synchronized between an enterprise server and a
persistent data store on the client, a modular layer on the client can provide
a simple easy to use client API to control the process with little or no
interaction from the client application. This layer may just need to be written
or rewritten native to the host depending on whether the client is a mobile
phone, laptop, or some other such device. With a simple invocation of the
synchronization layer, a client application can expect the data in the local
store to be refreshed.
The synchronization middleware resides on the server and this
is where the bulk of the synchronization logic is written. There can be more
than one data store behind the middleware on the server-side and there can be more
than one client from the client-side. Some of the typical features of this server-side
implementation includes data scoping, conflict detection and resolution, data
transformation data compression, and security. These features are maintained
with server performance and scalability. Two common forms of synchronization
middleware are a standalone server application and a servlet running in a
servlet engine. The standalone server is
more tightly coupled to the operating system and provides better performance
for large data. The J2EE application servers rely on an outside servlet engine
and are better suited for high volume low payload data changes.
The last part of this synchronization solution is the data
backend. While it is typically internal
to the synchronization server, it is called out because it might have more than
one data stores, technologies, and access mechanisms such as object-relational
mapping.
No comments:
Post a Comment