Back to blog

Synchronizing a large amount of data

2 min read

Assume you have 1 000 000 records to synchronize. If you want to do this one time, with one user - easy.

Let’s make our case more complicated. In our scenario, we will have 100 users, we will trace changes and send only differences, and split data to make sure, that only data that the user is able to see will be synchronized to the device.

In the simplest scenario, you can synchronize the whole table to a device and limit visible records on a device. It sounds easy but it’s not. For example, if you have a document table with 1million records and another table where you will store relations between users and documents it will give you at least 2 million records to synchronize.

In our sample case, I will be using MySQL 8 as a master database and .NET C# client.

MySQL 8 master database schema:

Used resources:
MySQL 8: phpMyAdmin (https://one-million-demo.ampliapps.com/phpmyadmin/, user: demo, password: zPWvb7aSFyZJWgeF).
Synchronization URL: https://one-million-demo.ampliapps.com/sync/API3
Demo client: .NET C# sample application and source
Remember, this is a public demo and other users can work on it simultaneously.

Test scenario users:

[subscriber id] - [documents attached]
u90 - 100
u89 - 10 000
u88 - 100 000
u87 - 1 000 000

Subscriber (u87) with 1 million documents attached (without any filters):

  • Frist (full) synchronization time, 1 million records downloaded to a client: 3 minutes and 5,88 seconds,
  • Second and next synchronizations (differential, only changes): more or less 30 seconds.

Subscriber (u89) with 10 000 documents attached (without any filters):

  • Frist (full) synchronization time, 10 000 records downloaded to a client: 0 minutes and 27,02 seconds,
  • Second and next synchronizations (differential, only changes): more or less 4 seconds.

Subscriber (u88) with 100 000 documents attached (without any filters):

  • Frist (full) synchronization time, 100 000 records downloaded to a client: 0 minutes and 16,88 seconds,
  • Second and next synchronizations (differential, only changes): more or less 2 seconds.

Subscriber (u90) with 100 documents attached (without any filters):

  • Frist (full) synchronization time, 100 records downloaded to a client: 0 minutes and 16,54 seconds,
  • Second and next synchronizations (differential, only changes): more or less 2 seconds.

As you can see the amount of records has a huge impact on synchronization times. From my experience, there are not too many situations when you need all the records on a device. When you planing your solution it is very important to design the synchronization filter to limit the amount of data synchronizing between devices. Imagin your system is running for 10 years. The amount of data will be huge. With synchronization filters, you can limit data that is flying over (based on date or any other criteria).

Filters are also useful when you want to limit data available for each device. You can design filters in a way where each device will get data that only belongs to a user who uses a device.

Documentation how you can create filters you can find here: https://projects.ampliapps.com/projects/ampli-sync/wiki#Data-filtering

In this demo I used two filters to limit data that is sent to devices:

Use the credentials provided above to log in.

Keep reading

·7 min read

How to choose an offline SFA system for preselling and van selling - criteria and a field test

How to choose an SFA app for FMCG sales reps: offline work, customer prices, promotions, documents, ERP integration and a one-day field test scenario.

Read more
·8 min read

Live Assisted Sales - why we built an AI salesperson that doesn't sell

For twenty years we've been writing software for people who sell face to face. Live Assisted Sales is the same idea moved into the online store - with one difference we argued about for a long time.

·5 min read

TechServ HVAC Success Story - How AMPER Flow Eliminated Information Chaos in Field Service

TechServ HVAC, a 45-person service company, implemented AMPER Flow and put an end to technicians calling the office multiple times per job. See what changed in their day-to-day operations.

Collaboration

Got a project? Let’s talk.