Domanda

Devo creare un progetto in cui ci sono due database locali e remoti. Il database remoto deve essere sincronizzato quotidianamente con il database locale in base alle modifiche apportate al database locale. Sto usando JAVA. Il database è ORACLE. Ho un codice JAVA / JPA che esegue operazioni CRUD sul database locale. Come sincronizzare le modifiche al database remoto.

È stato utile?

Soluzione

Non lo farei in Java, ma cerco meccanismi / strumenti di sincronizzazione del database Oracle nativo. Questo

  • sii più veloce da implementare
  • sii più robusto
  • hanno replica più veloce eventi
  • sii più 'corretto'

Altri suggerimenti

Guarda alcuni prodotti di sincronizzazione. SQL Anywhere di Sybase, dove lavoro, è uno di questi prodotti. Potresti essere in grado di ottenere una copia di valutazione / sviluppatore che puoi utilizzare per esplorare le tue opzioni. Sono sicuro che anche Oracle ha qualcosa di simile.

L'idea di base è quella di essere in grado di tenere traccia delle modifiche avvenute nel database centrale. Questo viene generalmente eseguito mantenendo un timestamp per ogni riga. Durante la sincronizzazione, il database remoto fornisce l'ora dell'ultima sincronizzazione e il server invia a esso tutte le righe modificate da allora. Si noti che le righe che sono state eliminate nel database centrale necessiteranno di una gestione speciale per garantire che vengano eliminate dal database remoto.

Una vera sincronizzazione bidirezionale è molto più complessa. È inoltre necessario caricare le modifiche dal database remoto al centrale e anche alcune strategie di risoluzione dei conflitti devono essere implementate per i casi in cui la stessa riga è stata modificata nel database remoto e centrale in modo incompatibile tra i due.

Il problema generale è troppo complesso per essere spiegato in una risposta qui, ma spero di essere stato in grado di fornire alcuni suggerimenti utili.

Il problema è che ciò che stai chiedendo può variare da moderatamente difficile (per un sistema semplice, non molto robusto) a un prodotto molto complesso che potrebbe tenere un piccolo team impegnato per un anno a seconda delle esigenze.

Ecco perché le altre risposte hanno detto " Trova un altro modo " (Sostanzialmente)

Se devi farlo per un compito in classe o qualcosa del genere, è possibile ma probabilmente non sarà veloce, robusto o facile.

È necessario un software server su ciascun lato, un modo per tradurre tabelle sconosciute in dati che possono essere trasferiti via cavo (insieme a metadati sufficienti per ricrearlo sull'altro lato) e probabilmente vorrai tenere traccia delle modifiche al database (magari con un flag o un timestamp) in modo da non dover inviare ogni record ogni volta.

È un problema abbastanza difficile che non possiamo davvero aiutare molto. Se dovessi farlo per un cliente, lo citerei almeno un anno di lavoro per renderlo anche moderatamente affidabile.

Buona fortuna

Oracle ha una sofisticata funzionalità di replica per sincronizzare i database. Ulteriori informazioni. .

Dai tuoi commenti sembra che stai usando Oracle Lite: supporta la replica, che è descritta in la documentazione Lite .

Non ci ho mai lavorato, ma http://symmetricds.codehaus.org/ potrebbe essere utile

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top