Sto configurando un sistema SaaS, dove stiamo pianificando di fornire a ciascun cliente il proprio database. Il sistema è già impostato in modo che possiamo facilmente passare a server aggiuntivi se il carico diventa troppo grande; speriamo di avere migliaia o addirittura decine di migliaia di clienti.
Domande
- C'è qualche limitazione pratica sul numero di micro-database che puoi / dovresti avere su un SQL Server?
- Può influire sulle prestazioni del server?
- È meglio avere 10.000 database da 100 MB ciascuno o un database da 1 TB?
Informazioni aggiuntive
Quando dico "micro-database", non intendo davvero "micro"; Voglio solo dire che puntiamo a migliaia di clienti, quindi ogni singolo database sarebbe solo un millesimo o meno della memoria totale dei dati. In realtà, ogni database si aggirerebbe intorno ai 100 MB, a seconda della quantità di utilizzo che ottiene.
Il motivo principale per utilizzare 10.000 database è per la scalabilità. Il fatto è che V1 del sistema ha un database e abbiamo avuto dei momenti scomodi in cui il DB si stava sforzando sotto il carico.
Stava sforzando CPU, memoria, I / O - tutto quanto sopra. Anche se abbiamo risolto questi problemi, ci hanno fatto capire che ad un certo punto, anche con la migliore indicizzazione al mondo, se avremo il successo che speriamo di essere, semplicemente non possiamo mettere tutti i nostri dati in un unico grande segreto ' Banca dati. Quindi per V2 stiamo condividendo, quindi possiamo dividere il carico tra più server DB.
Ho trascorso l'ultimo anno a sviluppare questa soluzione frammentata. È una licenza per server, ma comunque è stata curata dal momento che stiamo usando VM su Azure. Il motivo per cui la domanda si pone ora è perché in precedenza offrivamo solo a grandi istituzioni e fondavamo ognuna di noi. Il nostro prossimo ordine di attività è un modello self-service in cui chiunque abbia un browser può registrarsi e creare il proprio database. I loro database saranno molto più piccoli e molto più numerosi delle grandi istituzioni.
Abbiamo provato i pool elastici del database SQL di Azure . Le prestazioni sono state molto deludenti, quindi siamo tornati alle VM normali.