ciao,
dato che la causa sembra essere la latenza di rete, la soluzione potrebbe essere quella di rivolgersi ad un altro hosting provider.
Tuttavia, prima di fare questo salto, cerca di misurare bene i tempi di risposta che l'attuale server riesce a darti. Se capisci che sono ampiamente migliorabili, allora valuta un altro fornitore.
Io non conosco la tua applicazione, quindi non posso sapere se la lentezza percepita dall'utente dipende anche da query molto complesse o che restituiscono un numero eccessivo di risultati. Ad esempio: quando l'utente clicca "Avanti" per cambiare pagina, l'applicazione recupera comunque tutti i record dal database oppure esegue una paginazione lato server sfruttando la clausola LIMIT?
Perciò prova a monitorare le queries e il traffico che va e viene dall'applicazione, per capire se potrebbe essere ottimizzato.
mauro.coltrini ha scritto:
installare su tutti i punti un db locale e gestire la sincronia
Questa è una buona soluzione anche se, per forza di cose, aumenterà la complessità del sistema. Vediamo come si potrebbe realizzare, sapendo che molteplici utenti potrebbero modificare la stessa anagrafica in maniera concorrenziale, generando quindi dei conflitti.
- Usi la replication di MySql. Il database che hai adesso viene eletto a Master, mentre quelli che installerai sui client saranno gli Slaves. Ogni comando INSERT, UPDATE e DELETE dovrai eseguirlo sul master quindi nulla di nuovo, continuerai a gestire i conflitti nel modo attuale (se ne hai implementato uno). Le modifiche si propagheranno agli slaves in maniera asincrona. Sei hai tanti tanti slaves, stai sicuro che prima o poi la replication si incastrerà. Ti serve un sistema che periodicamente vada ad interrogare il master per capire se lo slave è ancora in sync.
Il vero vantaggio è che, per le SELECT, potrai interrogare lo slave locale e quindi sfogliare le anagrafiche sarà molto veloce. - Ogni client ha il suo database master, che viene usato sia per leggere che per scrivere. Il vantaggio è che l'applicazione può lavorare anche quando non c'è connettività al master (pensa ad un portatile che si trova in un luogo senza copertura 3G). Quando finalmente la connessione viene ristabilita, ecco che tutte le modifiche apportate nel frattempo vengono sincronizzate con il database master. In questo scenario, è molto più importante disporre di un meccanismo di risoluzione dei conflitti perché le modifiche potrebbero essere sincronizzate anche dopo molti giorni, quando ormai non sono più rilevanti.
Se scegli per questa seconda strada, vai su Sql Server perché non mi sembra che MySql abbia nulla del genere. Con Sql Server hai due opportunità:
ciao
Modificato da BrightSoul il 06 luglio 2013 17.34 -