E possível trabalhar com banco de dados na nuvem e local na mesma aplicação? dados

Delphi

23/11/2023

Pessoal estou criando uma aplicação para trabalhar de forma online e offline, tanto online quanto offline elas fazem a mesma função,porém uma faz de forma automática (Online) e a outra manual(offline),porque tem alguns lugares que a internet é muito ruim , então será necessário trabalhar de forma manualmente(offline) para não correr risco.A pergunta é,tem como trabalhar com o mesmo banco hospedado na nuvem e na máquina local?
Detalhe, é o mesmo banco,mais nesse banco tem as tabelas que própria da nuvem para trabalhar online e as próprias tabelas para trabalhar local (offline)nenhuma online vai ter relação com a offline.
Mas caso precise,seria possível eu transferir registros de uma tabela que está na nuvem para uma que está local na máquina ?
Alan

Alan

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

23/11/2023

Vou te dar um exemplo, só para você saber que é possível.

O banco de dados Oracle, assim como muitos bancos, permite que você crie replicações de seus dados.

Uma das replicações que o Oracle oferece é chamada de Muiti-Master Replication.

Você cria 2 ou mais bancos de dados e cria as mesmas tabelas em cada um deles. Através de um mecanismo de log interno, sempre que uma alteração é feita na base, o banco replica estas modificações para todos os demais bancos.

Esta replicação não é online. Ela ocorre em intervalos de tempo programados e, como você pode ter imaginado, podem ocorrer conflitos que precisam de solução.

Por exemplo, temos um registro de ID=1 com status="A". Imagine que um usuário na base 1, altere o status para "B", mas ao mesmo tempo, um usuário na base 2 altere o status para "C". Ao replicar os dados, o banco tenta trocar o status de "A" para "B" no servidor 2, mas encontra um registro com status "C", e vice-versa.

Gerenciar este tipo de conflito é bastante complexo. Você pode criar sequências independentes, onde um nó só insere chaves ímpares e o outro só chaves pares, ou coisa do tipo.

Durante alguns momento de indisponibilidade, a replicação pode ficar interrompida e as modificações locais ficam represadas. Quando a conectividade volta, o banco sincroniza.

Sua aplicação pode conectar em qualquer das bases e trabalhar como se os dados fossem os mesmos. Mas com as limitações e desafios que uma arquitetura como essa oferece.

Não é para amadores...
GOSTEI 0
Alan

Alan

23/11/2023

Sim Arthur ,foi exatamente isso que voce disse que eu estava pensando,na possibilidade de ter o conflito,por isso fiz a pergunta. Na minha cabeça como vou ter a opção de trabalhar com o banco local ,nessa parte tenho certeza q não irei ter conflitos,por conta de ser um banco locado no próprio Desktop,minha dúvida era na nuvem,por isso a pergunta,a ideia e que nessas tabelas onde faça alterações de status ,que praticamente e só só para mostrar qual controladoras estão conectadas e não vai ter relação nenhuma com inner Join e etc, com outras tabelas tanto local quanto na nuvem ,para não ter esse ricos de alteração de status,aí como vai ficar no local ,a alteração só aparecia para o Desktop,exemplo tenho controladoras com os IPS 192.168.40.1 até 192.168.40.99 cadastrada no banco,na página inicial, assim quando abre já faz um update dos IPS conectados do status de desativado para ativado ,e só aparece na página inicial as que estão ativadas,se deixar na nuvem ,outra pessoa quando abrir em outro desktop,irá aparecer não só a que está conectadas pra ele mas também as que estão conectadas para mim aparecerá para ele também,isso já não pode,então creio eu q deixando essa tabela local não terá conflitos certo?
GOSTEI 0
Rod

Rod

23/11/2023

Sim é possível, em um app que estou trabalhando temos um banco local em sqlite e fazemos também comunicação e sincronismo com o banco em nuvem através de uma api.
GOSTEI 0
Rod

Rod

23/11/2023

Sim é possível, em um app que estou trabalhando temos um banco local em sqlite e fazemos também comunicação e sincronismo com o banco em nuvem através de uma api.
GOSTEI 0
POSTAR