Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [Firebird-Delphi] Merge database

    Salve a tutti,
    qualcuno conosce qualche componente o utility che mi permetta di sincronizzare due database firebird con struttura identica?

    Ho un software che lavora in rete e mi hanno chiesto la possibilità di poterlo usare in locale a casa di ogni utente per poi sincronizzare tutte le modifiche effettuate una volta che ritorna in ufficio.

    Grazie.

  2. #2
    mmmm hai preso in considerazione alcuni fattori ...
    L'ultimo che fa l'update vince ???

    Definisci "sincronizzare" ???
    Se hai 2 utenti e tutti e 2 cambiano il campo XXX della tabella YY ... chi vince ???
    Il lunedì Mario Rossi, il martedì Givanni Verdi ... e così via, solo perchè il DB di Mario Rossi o Giovanni Verdi viene fatto girare x ultimo ???

    Hai pensato ad una soluzione che ti permette di mettere il DB su web e tutti lavorano 'On Line".
    A meno che ogni utente non abbia la sua "work area" allora....
    A partire dalla versione XE Delphi mette a disposizione un datasnap avanzato che ti permette di colloquiare con DB remoti

  3. #3
    Si hai ragione sul discorso update. Nel mio specifico caso vince l'ultimo che esegue il merge. Ad ogni modo l'utente off-line può solamente inserire record nuovi e non modificarne di già esistenti.
    Il mio problema è che su una tabella l'utente A on-line crea il codice nuovo 100 che è il primo libero e allo stesso tempo l'utente B off-line crea il codice nuovo 100 (il primo libero anche per lui) e quando eseguono il merge vi è un conflitto. Qua non so cosa fare, perchè il record dell'utente B dovrebbe essere inserito con 101.

    Non so proprio come fare questa cosa

  4. #4
    L'ideale sarebbe un web service che interrogato ti restituisce il numerino giusto, ma se sei off-line non lavori, altra idea potrebe essere attribuire agli utenti range predefiniti di codici User_1 range 1-10000, User_2 10001-20000 ect ect ect
    e, nel caso, nel momento in cui fai il merge ricalcolare con i codici giusti, ma alla fine sono tutti accrocchi.... e la probabilità di errore è dietro l'angolo.

  5. #5
    Si hai ragione. Avevo pensato anche io ad una soluzione con range di codici predefiniti, ma oltre allo sbattimento di sviluppare tutto la possibilità di bug non la evito al 100%

  6. #6
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Bhè la soluzione mi sembra abbastanza semplice, devi avere un campo chiave che viene calcolato al momento, e non autoincrementante.
    Puoi sbizzarrirti come vuoi, a cominciare da una funzione tipo md5 (o crc32 se le righe son poche) dove "fondi" pezzi del record che vuoi inserire, magari aggiungendo nome del computer, data e ora, poi "mischi" tutto et voilà.

  7. #7
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Originariamente inviato da Nettuno95
    L'ideale sarebbe un web service che interrogato ti restituisce il numerino giusto
    Assolutamente NO, considerata la latenza di internet se c'è una cosa da NON fare è prendere una chiave in questo modo


    PS non è che sia tutta farina del mio sacco, però mi piace atteggiarmi come se lo fosse

  8. #8
    Assolutamente NO, considerata la latenza di internet se c'è una cosa da NON fare è prendere una chiave in questo modo
    Con DXE2 e il datasnap il giochino lo fai in 2 min puntando direttamente al Generator sul server...
    Nel caso di errore dovuto al "WEB" hai un ritorno nullo/errore e non fai nessun append

  9. #9
    Si però devi avere DEX2 in versione Enterprise come minimo per sviluppare con datasnap...

  10. #10
    Basta anche DXE....
    ma tieni conto che domani a Milano c'e' la presentazine di DXE3 ... quanti soldoni che spillano

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.