Mysql
 sql >> Database >  >> RDS >> Mysql

Design DB:un DB grande per tutti i clienti o molti DB piccoli

Una domanda a cui vorrei rispondere è che hai mai bisogno di vedere i dati tra i clienti per la tua segnalazione o uso? In questo caso, devi andare con il numero uno o avrai un incubo per ottenere buoni rapporti.

Farai qualche personalizzazione da parte del cliente? Ciò indicherebbe che separare le cose potrebbe essere una scelta migliore. Se non personalizzerai mai, non separarti.

Ho lavorato con sistemi in tutte queste opzioni e il primo è di gran lunga il migliore per la manutenzione a lungo termine. Tuttavia, tutti sono praticabili se sei organizzato e pianifichi bene. Se si sceglie l'opzione separata, è necessario essere in grado di inviare le modifiche a tutti i client e quindi apportare modifiche al database tramite script mantenuti nel controllo del codice sorgente. Potrebbe anche essere necessario mantenere un controllo del codice sorgente in base alla versione del database, in modo che i client possano scegliere di eseguire l'aggiornamento o meno. Nell'opzione 1, ovviamente, nessuno ha la possibilità di rimanere sulla vecchia versione. Se si adatta meglio alle tue esigenze aziendali, questo è un vantaggio per l'opzione 1.

Sono pienamente d'accordo con Ollie Jones, se si utilizza l'opzione uno, è necessario disporre di un buon design di sicurezza del database per impedire ai client di vedere i dati di altri client. Una volta abbiamo spostato un client da un server in cui erano l'unico client a un database condiviso e solo un processo che non ha richiesto il client_ID (non era necessario nel vecchio sistema e gli sviluppatori erano diventati sciatti) ha finito per inviare un'e-mail a tutti i rappresentanti di vendita di tutti gli altri clienti con informazioni sul primo cliente. Questo è costato all'azienda un sacco di soldi (sia per risolvere il problema, sia per inviare e-mail di scuse e di conseguenza abbiamo quasi perso un cliente e abbiamo dovuto concedergli alcune riduzioni di costi per mantenerlo) e molte scuse striscianti e lo sviluppatore solo per un soffio perso il lavoro. Lascia che questa sia una lezione che non impari nel modo più difficile.