R
R
Roman Kraev2022-04-20 17:41:47
Data synchronization
Roman Kraev, 2022-04-20 17:41:47

Database with the ability to synchronize within the local network if the Internet is lost?

There are 2+N devices in the local network, each of them sends a request via the Internet to the database. If the Internet disappears, the devices wait until it appears in order to synchronize their data with the main database through it.
There is a DB for such purposes? Or data transfer tools within the local network, if there is no Internet, so that they can control duplicates and report them?
The devices actually work in parallel with the incoming data, but the query and response time via the Internet to the database is less than a second. But this scheme is unfortunately not scalable.

Answer the question

In order to leave comments, you need to log in

3 answer(s)
V
Vladimir Korotenko, 2022-04-20
@firedragon

master master, kiosk mode mssql, oracle .
Well, the option to save only dictionaries from the database in the application and build records for further synchronization

D
Drno, 2022-04-20
@Drno

The database has replication ...
put the database on the local network and replicate with the main one via the Internet

R
rPman, 2022-04-20
@rPman

Your main problem arises when several users work with the database at the same time.
This is the problem that needs to be solved, and in general this is not an easy task if there is no server.
Keeping a copy of the database on the client itself will not be a problem, the databases have both regular tools (replication) and the means of the application itself.
As a solution, I can suggest the following - install a fully functional copy of the server on the local network (not only the database, but also the backend), all clients from the local network work either with the main server or with the local one, in this scheme, at the time of the connection, there will be no conflicts within the users of the local network (but conflicts between remote users and local ones are possible)
ps one of the solutions to the problem is to allow conflicts in the program itself, i. here you have a form for editing an object, if conflicts appeared after the previous database synchronization session, then the interface should show this, make it possible to work with all conflicts and the ability to resolve them (combining data if there was editing with a choice of which fields to leave and which not, it is more difficult with a link on the object being deleted, in such cases it is necessary to either cancel the deletion or remove the connection with it)
In general, the concept of 'conflict or inaccurate state' is normal, in different systems it is presented differently, for example, the concept of 'draft', or status - is accepted / under consideration when there are special people who bring the database into a consistent state, and this process is continuous. Full support for all possible conflicts is a dream, one way or another it is implemented on top and the methods are kept in the minds of the users themselves, well, for example, in the database there is no way to indicate that the record is a duplicate, while this dupe is resolved and its connections are corrected and transferred to one object, the future deleted is marked as being deleted through the mark in the name ... i.e. the base has no status for this, but the operators agree with each other that such objects should not be used

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question