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

Praticità di più database per cliente rispetto a un database

Sì, è possibile e la mia azienda lo fa. Di certo non dirò che è intelligente, però. Abbiamo un sistema di automazione del marketing SAAS. I database di alcuni clienti hanno oltre 1 milione di record. Abbiamo a che fare con un secondo database "comune" che ha una tabella di "adempimento" che tiene traccia di e-mail, lettere, telefonate, ecc con oltre 4 milioni di record, oltre a numerose altre tabelle condivise molto grandi. Con un'adeguata indicizzazione, ottimizzazione, mantenimento di un server solo DB separato e possibilmente clustering (cosa che non dobbiamo ancora fare) puoi gestire MOLTI dati......in molti casi, coloro che pensano che possa gestire solo poche centinaia di migliaia di dischi lavorando su un prodotto concorrente per vivere. Se dubiti ancora che sia valido, considera che secondo le metriche di clustering di MySQL, un cluster di 8 server può gestire 2,5 milioni di aggiornamenti AL SECONDO. Per niente malandato.....

Il problema con l'utilizzo di due database è destreggiarsi tra più connessioni. È dura? No, non proprio. Crei oggetti diversi e fai riferimento alle tue classi di connessione in base al database che desideri. Nel nostro caso, colpiamo la classe aziendale del database principale per dedurre il nome db del client e quindi costruiamo la seconda connessione basata su quello. Ma, quando si destreggiano tra quelle connessioni avanti e indietro, è possibile che si verifichino errori che richiedono un debug aggiuntivo. Non è solo "La mia richiesta è valida?" ma "Sto effettivamente ottenendo la corretta connessione al database?" Nel nostro caso, una sessione interrotta può causare l'attivazione di tutti i tipi di errori PDO perché il sistema non è più in grado di tenere traccia del database client a cui accedere. Inoltre, dal punto di vista della manutenibilità, è un processo spaventoso che tenta di inviare gli aggiornamenti della struttura delle tabelle a 100 diversi database live. Sì, può essere automatizzato. Ma uno sbaglio e hai buttato giù MOLTE persone e hai fatto un sacco di lavoro in più per te stesso. Ora, calcola lo sviluppo e i test extra necessari per destreggiarsi tra connessioni e aggiornamenti push....questa sarà la tua misura se ne vale la pena.

La mia raccomandazione? Trova un host che ti permetta di mettere due macchine sulla stessa rete locale. Abbiamo scelto Linode, ma chi usi è irrilevante. Inizia con il tuo server di database dedicato, pianifica in anticipo di eseguire il clustering quando è necessario. Conserva tutti i tuoi contenuti in un DB, indicizza e ottimizza religiosamente. Infine, trova un bravo ragazzo DB DAVVERO e trattalo bene. Con così tanti dati, un ottimo DBA sarebbe d'obbligo.