Software with local and remote BD recording

Asked

Viewed 97 times

1

I have a question about the possibility of doing a type of program and what means to use. Just for the record, I’m not asking for "how to do the programming," but an opinion from more experienced people about the possibility and feasibility of the project!!

Desired functioning: I want to make a window program for windows that is installable and work offline. In this program I will register my clients and the services I will provide to them. When I finish the registration the program writes to a local BD and also writes to an online BD on some server, in this case in a BD in Mysql. If any changes are made to the registration on the site, the program also checks and registers on the online; the same for deletion.

Motive: use several notebooks in often remote locations and often with unstable connection, but I need to register on time the services provided and need an online copy for customer consultation.

Here is an example of how the software works on the network:

inserir a descrição da imagem aqui

Registration, editing, deletion and synchronization also follow the reverse path. In case could have much more than 2 Pcs with the installed program, which could do these 4 processes simultaneously.

inserir a descrição da imagem aqui

The program would work so that BD Local 1 would always be in sync with BD Local 2 and BD Remote.

I need to know if it is possible and feasible (ease and etc.), if someone indicates some kind of programming (I intend to study it to create the software), how the local BD X integration works online and any other observations will be welcome.

Thank you very much.

  • I have removed parts of the text that do not live up to the question. If you have any complaints about community behavior you can use [meta]

2 answers

3


If you are developing only for Windows, you can use C# to build the Software, or java if you want to build a cross-platform application, there is also Python that is currently on the rise but I can not give much opinion about it because I do not know it well, I’ll leave here an IEEE link where you can check the ranking of languages: https://spectrum.ieee.org/at-work/innovation/the-2018-top-programming-languages

Regardless of the language you will use, I advise you to use a Web Service to synchronize the data between client and server, so that your database is not 'open doors to the world', Since with the web service you can define which specific points you want to change, making it impossible to fully access your database, you can create authentication methods for your web service as well by making it even more secure. With your application plugging directly into a remote bank, this can leave vulnerability points for hackers to gain access to your base. With respect to Mysql, be careful not to infringe your licenses, it is free only for development, if you are installing it on a server and distribute your software commercially, you will have to purchase your distribution license: https://www.mysql.com/products/

I advise you to hire a hosting like Locaweb, Godaddy... among others, as these already have Mysql installed with the proper licenses, if you will actually use Mysql.

Remembering that you can do a windows service in background to sync the data, because once the user closes the system after the change, it will only sync the data when opening it again.

  • For then, the question of language really has its particularities and preferences. The question of Webservice I do not know (I will search more)...do you indicate any service related to this? For a local BD which service or program could I use? could be direct in Access or is there another alternative? The remote BD is using Hostinger’s Mysql, so I have no problem. The distribution is client-specific, with multiple users. The synchronization I want to be done as soon as the user click the 'OK! ' button is possible? which means "windows service in background"?

  • Something else...Is this feasible? Is there any request that works like this, to serve as an example? If you have a link to this, I thank you.

  • 1

    Unfortunately I don’t have a concrete example for you, the software I built in this style is all from private companies. But research more about these technologies I mentioned, you will surely find a lot of information that will help you.

  • This problem of synchronizing data offline and online can be complicated. See for example this discussion on Reddit. Search for something like offline database Synchronization can help.

2

About the possibility, yes, and it is not a rare need. Software that has resources to continue working offline implement similar resource.

About what means to use, there are several and, despite the details provided, they still allow several possibilities. To illustrate follow an option not commented in the previous answers. You can use the Command standard see https://en.wikipedia.org/wiki/Command_pattern which, in a simplified form, gathers the details (data) of a change (change) that has been applied in the local DB. The object corresponding to the Command is signaled through an event for a service such as Amazon Eventbridge (there is similar solution for Azure, Google, ...). When receiving such event (command that gathers the change in your local BD), the recipient would have the task of applying the change in another BD (your remote BD). In this option all changes can be recorded in a strategy known as Event Sourcing), which may be relevant to your problem (despite the details it is not possible to evaluate).

Browser other questions tagged

You are not signed in. Login or sign up in order to post.