Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20
  1. #11
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    711
    sto analizzando la logica della applicazione
    avendo un data base centrale, chiamiamolo DB_CENTRAL che possiede varie tabelle 2 delle cuali andrebbero scritte solo sul db appartenente alla zona(DB_A, DB_B, DB_C); per ogni DB, sullo stesso server, è presente la stessa applicazione che va a scrivere i dati comuni sul DB_CENTRAL e due tabelle sul DB appartenente alla zona.

    Il problema, a cui non so darmi risposta, faccio un esempio:
    Italia, server con applicazione web con DB_CENTRAL
    Spagna, server con applicazione web con DB_A(solo 2 tabelle)
    Francia , server con applicazione web con DB_B(solo 2 tabelle)

    Se l'utente si connette dall'italia, risponderà l'applicazione sul server italiano e il DB(DB_CENTRAL) sarà residente sullo stesso server.
    Se l'utente si connette dalla spagna risponderà l'applicazione web in spagna, scriverà i dati comuni sul DB_CENTRAL(in italia) e i dati specifici su 2 tabelle in Spagna.

    Dal momento che devo effettuare delle transazioni con php, transazioni che mi creano indici da cui dipendono altre operazioni(quindi non potrei lanciare tutte le query direttamente sul DB_CENTRAL), come potrei fare in modo da agilizzare il processo quando il server web e il db(mysql) non risiedono sullo stesso server?

    Sarebbe meglio replicare il DB CENTRAL sui vari server e che si sincronizzino in tempo reale per conto loro?

    Non ho esperienza sul dislocare una applicazione su vari server, per cui chiedo...
    Qualsiasi consiglio sarà ben accetto.

    Grazie!

  2. #12

  3. #13
    Utente di HTML.it
    Registrato dal
    Jul 2020
    Messaggi
    38
    a parte non aver ancora capito perchè per forza di cose devi ridondare i dati su più server e non avere un 1 db e "le varie app" filtrano in base alla provenienza...

    devi per forza avere i dati in tempo reale?
    -----------------------------------------------------------
    Hai pensato ad una soluzione totalmente svincolata dalle applicazioni web spagna, italia, etc...?
    -----------------------------------------------------------

    Secondo me dovresti fare proprio così....
    le applicazioni web fanno le loro cose che devono fare e non sincronizzano nulla di nulla

    Le varie sincronizzazioni le devi affidare ad un servizio sviluppato appositamente che fa solo quello e poi distribuire il tutto
    fai delle Rest API sui vari server che svolgono il lavoro di sincronizzazione dati
    dividi assolutamente i task
    Le rest api avranno 1 unico scopo, ti verrà molto più facile la manutenzione ed eventualmente l'implementazione successiva


    Se strutturi bene tale servizio per assurdo lo potresti anche duplicare le rest sui vari server

    -----------------------------------------------------------

    mi rispiego...le web app sui vari server faranno SOLO le attività per cui servono (che non so) e se ne fregano altamente delle sincro dati.

    poi farai le rest SOLO per le sincro

    fammi sapere

  4. #14
    per il GDPR alcuni dati proprio manco ci debbono stare sui server locali, bisogna capire quali sono questi dati e se si possono aggregare.

    fatto questo devi studiare le strategie di riallineamento (eventuale), per esempio se serve il real time oppure un batch notturno (io propendo sempre per il real time)

    Una volta definito il flusso ad alto livello, devi predisporre i backend davanti ad ogni db locale per accettare inserimenti/aggiornamenti dagli altri siti locali (se fai le cose fatte bene, questo backend lo usi anche per lo stesso sito locale)

  5. #15
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    711
    Quote Originariamente inviata da optime Visualizza il messaggio
    per il GDPR alcuni dati proprio manco ci debbono stare sui server locali, bisogna capire quali sono questi dati e se si possono aggregare.

    fatto questo devi studiare le strategie di riallineamento (eventuale), per esempio se serve il real time oppure un batch notturno (io propendo sempre per il real time)

    Una volta definito il flusso ad alto livello, devi predisporre i backend davanti ad ogni db locale per accettare inserimenti/aggiornamenti dagli altri siti locali (se fai le cose fatte bene, questo backend lo usi anche per lo stesso sito locale)
    Sono arrivato a questa conclusione:

    siccome i dati che non posso scrivere su tutti i db server li ho concentrati in una sola tabella ho pensato di:
    generare una tabella che contiene gli indici autoincrementali pi� i dati non privati, io ho bisogno di fare riferimento a questi indici, utilizzare una seconda tabella per i dati che non posso replicare sui vari server.
    Se io mi collego dall'italia, risponde il server web italiano, faccio le operazioni discrittura sul db e scrivo i dati privati, all'interno di questa tabella, tutto si replica sugli altri server a parte questa tabella.
    esempio:
    tabella_master
    id attivo
    1 true
    2 true
    3 false

    tabella_slave(italia)
    id nome
    1 pluto
    3 paperino

    elenco record tabella master(italia)
    id nome attivo
    1 pluto true
    2 xxxxxxxxx true
    3 paperino false

    tabella_slave(spagna)
    2 minni

    elenco record tabella master(spagna)
    id nome attivo
    1 xxxxxxxxx true
    2 minni true
    3 xxxxxxxxx false


    In questo modo posso riferirmi ai record e mostrare solo i dati anonimizzati secondo il paese di appartenenza, come ti sembra?

    Se fosse una soluzione valida, che linee guida podrei utilizzare per poterla realizzare?
    Potrei delegare la replica ad una societa' di hosting dicendole, fammi la replica(REALTIME) della applicazione e di queste tabelle su server sparsi per il mondo e che a seconda della zona risponda un server concreto?
    Vorrei evitare di perdere tempo a realizzare una soluzione del genere, se fosse possibile, e delegare l'operazione ad una azienda.
    Ad esempio Cloudflare, potrebbe essere la mia risposta?

    Grazie!
    Ultima modifica di robynosse; 12-08-2020 a 16:46

  6. #16
    primo, non capisco perché devi replicare dati che non devi replicare; se non li hai non li hai e amen. Secondo, non credo che qui si possa parlare di affidare un lavoro a questa piuttosto che a quell'azienda

  7. #17
    Molto semplice:
    Dalla Spagna si effettua una operazione ed il server locale la elabora. A fine elaborazione, sempre il server locale, qui spagnolo, fa una chiamata asincrona in Italia inviando i dati necessari.

    Ovviamente Italia riceve i dati, li elabora e risponde OK a Spagna, oppure non risponde affatto.

  8. #18
    @SoloWiFi, non so se stavi rispondendo a me: io mi chiedevo per quale motivo devo scrivere e gestire record del tipo : 1 xxxxx true

  9. #19
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    711
    Quote Originariamente inviata da optime Visualizza il messaggio
    primo, non capisco perché devi replicare dati che non devi replicare; se non li hai non li hai e amen. Secondo, non credo che qui si possa parlare di affidare un lavoro a questa piuttosto che a quell'azienda
    Devo sapere quanti utenti esistono e ad esempio potrei avere bisogno di sapere quando sono stati creati(per fare un esempio), quindi:
    sulla tabella master metto gli indici e la data di creazione(questa tabella sarà replicata su tutti i server), mentre sulla tabella slave riporto ad esempio l'email (questa non la replico sugli altri server).

    Se un utente si crea dalla spagna, in italia (sul server italiano)sapranno semplicemente che è stato creato (con una certa data)ma non conosceranno la sua email.

    Senza fare nomi(oppure se lo consente il regolamento, se mi invii un nome di una azienda con un msg privato), esistono aziende che danno questo tipo di servizio(replica di server web con db, solo di tabelle che decido io).
    Un'altra ipotesi potrebbe essere mettere la tabella in un altro db(db2), dove il db1 ha tutte le tabelle replicate sugli altri server, mentre il db2 ha solo le tabelle locali di zona, vorrei evitare questa seconda soluzione in quanto mi porterebbe a fare modifiche di logica del back-end.
    Ultima modifica di robynosse; 13-08-2020 a 10:34

  10. #20
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    711
    Quote Originariamente inviata da SoloWiFi Visualizza il messaggio
    Molto semplice:
    Dalla Spagna si effettua una operazione ed il server locale la elabora. A fine elaborazione, sempre il server locale, qui spagnolo, fa una chiamata asincrona in Italia inviando i dati necessari.

    Ovviamente Italia riceve i dati, li elabora e risponde OK a Spagna, oppure non risponde affatto.
    Questo non mi è possibile, perché tutte le operazioni fatte su un server sono 1 transazione(su circa 20 tabelle), se qualcosa va storto cancella l'operazione, gli indici devono coincidere, inoltre inizieremo con 3 o 5 server(poi diventeranno di più), dovrei aspettare la sincronizzazione di tutti i server e se qualcosa andasse storto su uno di essi dovrei annullare tutto, sarebbe improponibile.
    Devo avere un sistema che, se 2 operazioni vengono fatte nello stesso istante su 2 server differenti, che gli indici siano differenti

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 © 2020 vBulletin Solutions, Inc. All rights reserved.