Software con doppio database: uno offline ed uno online

di il
14 risposte

Software con doppio database: uno offline ed uno online

Ho una domanda molto semplice quanto molto complessa da porvi e ci provo con un esempio. Se io avessi bisogno di realizzare un software che per funzionare necessitasse di un database locale (presente sulla macchina su cui risiede il software) ed uno online (su un server in internet). Pensate ad un programma che debba calcolare la media di una serie di numeri su un pc A offline. Supponete che ad un certo istante t arrivi internet sul pc A ed altri 3 computer desiderino accedere al database presente su A od uno clonato presente su un server ed aggiornato in tempo reale con un secondo software presente sui loro pc e manipolare quindi i dati inseriti dall'utente del pc A (ad esempio calcolare la somma dei numeri introdotti sul pc A). In uno scenario di questo tipo, a vostro avviso, quale sarebbe la soluzione più corretta da adottare? A vostro avviso è fattibile creare una normale applicazione JAVA da desktop che salvi i dati in 2 database, uno locale e l'altro online se disponibile?

14 Risposte

  • Re: Software con doppio database: uno offline ed uno online

    Ni, piu' no che si.
    Per fare, si puo' fare, ma per implementare in modo corretto tutto l'ambaradam e' necessario implementare un protocollo per la sincronizzazione dei vari sistemi.
    Entrano in gioco concetti come A)tomicita', C)onsistenza, I)solamento, D)urabilita', tempo assoluto, e altri concetti relativi al funzionamento dei sistemi distribuiti, architetture fault tollerant, ...

    Decisamente complicato.

    Soluzione semplice: un'unico database accessibile da tutti.
    Ogni altra soluzione deve, alla fine, ridursi alla soluzione semplice.
  • Re: Software con doppio database: uno offline ed uno online

    La soluzione sarebbe un sito dinamico però se non c'è internet sono fregato. Perdona la domanda ma perché è così complicato andare a scrivere su di un database presente su di un server con un applicazione per il desktop?
  • Re: Software con doppio database: uno offline ed uno online

    Per quest'ultima domanda ... non puoi scrivere sul db nel server se il DBMS non è esposto e sarebbe un problema di sicurezza enorme per il DBMS...
  • Re: Software con doppio database: uno offline ed uno online

    oregon ha scritto:


    Per quest'ultima domanda ... non puoi scrivere sul db nel server se il DBMS non è esposto e sarebbe un problema di sicurezza enorme per il DBMS...
    cosa intendi per esposto, non riesco a seguirti...
  • Re: Software con doppio database: uno offline ed uno online

    Significa che il servizio (IP/porta) sia raggiungibile da qualsiasi client su internet

    Ad esempio, il sito web "iprogrammatori.it" è esposto su Internet all'indirizzo 46.28.3.77 porta 80
  • Re: Software con doppio database: uno offline ed uno online

    giannino1995 ha scritto:


    La soluzione sarebbe un sito dinamico però se non c'è internet sono fregato. Perdona la domanda ma perché è così complicato andare a scrivere su di un database presente su di un server con un applicazione per il desktop?
    Questo e' semplice, a parte la questione di come rendere visibile il db da parte di altre macchine collegate ad Internet (per cui esiste una soluzione semplice). Ma non ci sono difficolta' di sorta.

    Decisamente complicato e' dover allineare un db comune a partire dal contenuto di db locali, e aggiornare i db locali a partire dal db comune.
    Non e' solo una questione di copiare il contenuto delle tabelle.
    Tutto dipende dall'organizzazione dei dati: si puo' andare dal banale al decisamente complicato.
    La tua descrizione si posiziona nella sezione decisamente complicato.
  • Re: Software con doppio database: uno offline ed uno online

    Qualche tempo fà avevo preso parte ad un progetto del genere.
    Un database centrale e sui palmari un DB locale.(da SQL Server ==> SQL Server CE)
    Ma ogni tecnico metteva la sua matricola e la sua pwd e scaricava le WR a lui destinate.
    Quindi non c'erano problemi di andare a incasinare dati di altri tecnici.
  • Re: Software con doppio database: uno offline ed uno online

    schumy2000 ha scritto:


    Qualche tempo fà avevo preso parte ad un progetto del genere.
    Un database centrale e sui palmari un DB locale.(da SQL Server ==> SQL Server CE)
    Ma ogni tecnico metteva la sua matricola e la sua pwd e scaricava le WR a lui destinate.
    Quindi non c'erano problemi di andare a incasinare dati di altri tecnici.
    Questa e' appunto la situazione banale a cui facevo riferimento prima:

    1) ogni PC inserisce/modifica dei dati nel DB locale che non andranno MAI in conflitto con quelli di altri PC
    2) ogni PC INTERROGA i propri dati e quelli degli altri PC. In questo caso i dati possono essere nel DB locale o nel DB remoto
    3) in NESSUN CASO il PC va a modificare i dati di altri PC, NE in locale, NE in remoto

    Questo vuol dire che quando il DB comune diventa accessibile, ogni PC deve:

    a) aggiornare i PROPRI dati remoti con quelli locali
    b) aggiornare i PROPRI dati locali relativi agli altri PC con i dati remoti.

    Se la situazione e' questa, non ci sono particolari difficolta' implementative. MA SOLO in questo caso.
  • Re: Software con doppio database: uno offline ed uno online

    migliorabile ha scritto:


    schumy2000 ha scritto:


    Qualche tempo fà avevo preso parte ad un progetto del genere.
    Un database centrale e sui palmari un DB locale.(da SQL Server ==> SQL Server CE)
    Ma ogni tecnico metteva la sua matricola e la sua pwd e scaricava le WR a lui destinate.
    Quindi non c'erano problemi di andare a incasinare dati di altri tecnici.
    Questa e' appunto la situazione banale a cui facevo riferimento prima:

    1) ogni PC inserisce/modifica dei dati nel DB locale che non andranno MAI in conflitto con quelli di altri PC
    2) ogni PC INTERROGA i propri dati e quelli degli altri PC. In questo caso i dati possono essere nel DB locale o nel DB remoto
    3) in NESSUN CASO il PC va a modificare i dati di altri PC, NE in locale, NE in remoto

    Questo vuol dire che quando il DB comune diventa accessibile, ogni PC deve:

    a) aggiornare i PROPRI dati remoti con quelli locali
    b) aggiornare i PROPRI dati locali relativi agli altri PC con i dati remoti.

    Se la situazione e' questa, non ci sono particolari difficolta' implementative. MA SOLO in questo caso.
    In pratica il funzionamento è questo:

    Utente 1, pc 1, database locale 1
    Utente 2, pc 2, database locale 2
    Utente 3, pc 3, database locale 3

    Utente 4, pc 4, database locale 4
    Utente 5, pc 5, database locale 5

    1 solo server che contiene un database pari alla somma del database 1, 2 e 3
    il database locale 4 è identico al database del server e l'utente 4 interpreta solo i dati, non modifica nulla
    l'utente 4 fa le stesse cose dell'utente 5
    l'utente 4 o 5 non hanno necessità di andare a modificare il database 1, 2 o 3

    Esempio:

    Utente 1 scrive nel database locale 3 numeri (1,2,3)
    Utente 2 scrive nel database locale 3 numeri (2,2,14)
    Utente 3 scrive nel database locale 3 numeri (4,1,10)

    Utente 4 calcola la media delle 3 terzine (2,6,5) oppure la media globale (4.333...)
    Utente 5 calcola ma somma di tutto 39

    Ovviamente il programma è molto più complicato ma ci sono dei pc che scrivono dati ed altri che li interpretano ed ovviamente non si calcolano medie e somme di numeri interi!

    La cosa che mi preme è che l'Utente 1 possa calcolare la somma e la media dei numeri che ha inserito (1,2,3), proprio come fa l'utente 4 o 5 con quelli presenti sul server, senza doversi connettere ad internet.

    Quindi penso di poter rispondere a queste vostre domande in questo modo:

    1) ok
    2) ok
    3) ok
    a) ok
    b) ok

    Però adesso mi dovete dire cosa intendete per banale ( ) e vorrei capire bene la differenza tra progettare un software di questo tipo ed una semplice applicazione desktop e soprattutto se posso usare JAVA e MySQL oppure no!

    Non è per sfiducia ma io sono un principiante, voi dei professionisti! Il vostro "banale" equivale a mesi di "atroce sofferenza" per me!

    Quello che so fare io:
    php + javascript + mysql
    java + mysql (solo in locale, no server e quindi no tomcat, no jsp, ecc...)

    Ciao
  • Re: Software con doppio database: uno offline ed uno online

    Quindi in definitiva gli utenti(1,2,3) aggiungono solo dati? (fanno solo insert? )
    E non è possibile in alcun modo che l'utente 2 metta un dato già inserito dall'utente 1?
  • Re: Software con doppio database: uno offline ed uno online

    schumy2000 ha scritto:


    Quindi in definitiva gli utenti(1,2,3) aggiungono solo dati? (fanno solo insert? )
    si, esattamante a tutte le domande

    schumy2000 ha scritto:


    E non è possibile in alcun modo che l'utente 2 metta un dato già inserito dall'utente 1?
    no, questo mai
  • Re: Software con doppio database: uno offline ed uno online

    Dunque qual'è il verdetto schumy2000?

  • Re: Software con doppio database: uno offline ed uno online

    Pensavo l'avessi capito.
    Se nessuno intralcia il lavoro fatto da altri penso puoi procedere con la tua soluzione.

    Ciao.
  • Re: Software con doppio database: uno offline ed uno online

    Fantastico, quindi oltre ad una url locale posso anche mettere una url remota con conseguente database, che figata! Non avrei potuto desiderare nulla di meglio!

Devi accedere o registrarti per scrivere nel forum
14 risposte