Sincronizzazione con altri DB

10 contenuti / 0 new
Ultimo contenuto
Sincronizzazione con altri DB

Qualcuno sa come si potrebbe sincronizzare Drupal con altri DB e poi gestire i dati sincronizzati.
Vi dico subito a cosa mi serve, un mio amico gestisce una libreria con un software che gira con un DB oracle gli vorrei creare un sito esterno (ovviamente con drupal) che visualizza lo stato della libreria per poter vedere se un libro è disponibile o no prima di recarsi in libreria.

Se ne parlava proprio qualche giorno fa, spè che ti passo il link...
http://www.drupalitalia.org/node/2499
Ovviamente molto dipende da che cosa devi fare di preciso (cioè ti interessa poter effettuare anche ordini on-line o ti basta sapere se un libro è presente o meno?

Ciao
Marco
--
My blog
Working at @agavee

raggix wrote:
Qualcuno sa come si potrebbe sincronizzare Drupal con altri DB e poi gestire i dati sincronizzati.

Cosa intendi per sincronizzati? sincronizzazione "in tempo reale" o ogni tot..... la cosa cambia di moltissimo
Quant'è grande il dump del db di oracle relativo a quei libri?
Il server web è li dal tuo amico o è in remoto da qualche altra parte?
Hai accesso al terminale sul server web?

Ciao

Da quello che ho potuto vedere il sofware si chiama "Decalibro" e ha delle interfacce grafiche penso sviluppate in VB, mentre il db è oracle e risiede in un directory del PC.
Per ora il sito che vuole realizzare il mio amico è di tipo pubblicitario con in più la possibilità di vedere se un certo libro è presente in libreria. In questo modo il cliente va in libreria a colpo sicuro a meno che non è passato qualcuno e lo ha comprato poco prima.
Si potrebbe pensare anche (se il tutto funziona) da web di fare una prenotazione (via e-mail) per quel libro presente in libreria, così appena arriva l'email al mio amico lui blocca il libro.
Io pensavo ad una sincronizzazione all'inizio manuale (lanciare script dal PC) poi automatica (per esempio ogni mezzora) che sincronizzavano parte o tutto il DB oracle del PC in libreria con parte del DB Drupal del sito che risiede fuori (es. Aruba).
Oppure, siccome ho letto che si può configurare Drupal per leggere più DB , dedicare un secondo DB sincronizzato totalmente con quello della libreria.
I comandi per la sincronizzazione devono partire sempre dal PC in libreria perchè non ha un IP pubblico.
Ciao
Grazie per l'interessamento

Io farei così:

  1. Creo un DB remoto (con possibilità di accesso dall'esterno, controlla bene perché non tutti lo consentono).
  2. Configuro Drupal per accedere al DB remoto come nelle installazioni standard
  3. Creo una tabella aggiuntiva, che contiene i libri presenti, autore, .. e numero di libri disponibili.
  4. Popolo inizialmente la tabella sincronizzandola con il DB della libreria (di sera, in modo che non sci sono modifiche sul DB nel contempo).
  5. Creo uno script che ogni X minuti controlli tutte le modifiche fatte sul DB locale e automaticamente le apporti anche alla tabella sul DB remoto.

Just My 2 Cent

Ciao
Marco
--
My blog
Working at @agavee

Soluzione A:
1) fai il dump del db oracle, al cui interno ci sono delle INSERT per ogni singolo record e lo salvi in un file chiamato dump.sql
2) carichi in ftp, il file sul dominio
3) sul dominio lanci una pagina che procede a cancellare la vecchia tabella e a ricrearle e popolarla con i nuovi dati
4) cancelli il file passato in ftp, sul dominio

Il tutto avviene dal client del negozio....
dump di oracle => ftp tramite script messo in operazioni pianificate => lanci la pagina che aggiorna i dati tramite explorer, sempre in operazioni pianificate di windows => cancelli il file in ftp, sempre in operazioni pianificate

Soluzione B
1) leggi i dati da orale e popoli una tabella sqllite
2) con ftp porti la tabella sqllite sul dominio
Sul dominio ci sarà una pagina web interfacciata a quel db sqllite

In entrambi i casi "prenoterei" il libro con un email al negozio, come tu hai detto

.....i miei due cents.... a forza di 2 cents, diventi ricco :-)

Ciao

Mi ci vorrà un pò di tempo per provare tutte queste cose anche perchè devo tornare in libreria anche per vedere meglio come era fatto il DB, sperando che non ci siano password.
Appena so qualcosa vi faccio sapere.
Ciao

@giangiusti:
Sinceramente non farei come hai detto tu, ogni volta ricarichi completamente la tabella del DB (cosa che credo sia inutile), mentre è sufficiente cambiare il numero di libri a disposizione aggiungere/rimuovere i libri in catalogo, con un risparmio di tempo/banda notevole; in ogni caso la scelta sta a raggix

Ciao
Marco
--
My blog
Working at @agavee

Vero.... ma permettere l'accesso al db da remoto, ti espone a rischi. Oltretutto il negozio non ha un IP statico, ma uno dinamico, quindi non puoi neppure limitare l'accesso a quel determinato IP. Significa esporre il database a qualsiasi tentativo di intrusione esterno.
Passare un dump, significa far girare via ftp, un file ascii che puoi comprimere. Un file ascii viene compresso anche del 90%.....
Ricaricare completamente l'archivio, richiede pochi secondi (che sono a carico del server) e garantisce la congruenza dei dati. Unico neo..... il db non è sincronizzato "in tempo reale". Ovviamente tutto IMO

P.S.
Ogni soluzione ha i suoi pro e contro.
Quello del dump è una soluzione che ho già adottato per due sistemi:
1) sincronizzazione dei dati delle elezioni tra quelli locali (pervenuti dalle sezioni) e quelli on line
2) sincronizzazione dei dati di un concessionario auto con le auto sul web
Si tratta di scriver bene gli script, poi tutto avviene in modo automatico e non ci metti più mano

Ciao
Gianni

IMHO la soluzione migliore sarebbe fare una doppia query ogni volta, una sul DB locale e una sul remoto, ma dubito che possa mettere mano al sorgente del programma di gestione della biblioteca, quindi o mette già a disposizione la possibilità di più DB o ciccia...
Ultima alternativa sarebbe di rendere raggiungibile il DB locale, magari con no-ip o dyndns (per quanto affidabili possano essere), all'esterno (o se non direttamente le chiamate al DB ricorrendo a SOAP & c. in modo che i dati dei libri siano presenti sempre e solo sul DB Oracle locale, in questo caso il rischio è che se il PC della biblioteca non è on-line dalla rete non possono usufruire del servizio.

Ciao
Marco
--
My blog
Working at @agavee