Il contesto
stiamo costruendo un sistema basato sul web e una delle decisioni di progettazione ( database correlato ) è stata la possibilità di disporre di 1 DB principale per gestire tutti i dati dei client VS con 1 DB per client. Dopo aver letto molto sull'argomento ( specialmente in questi forum ), sembra che 1 DB per cliente sia nel complesso un approccio migliore, soprattutto a medio-lungo termine e soprattutto nel nostro caso d'uso.
L'architettura di base
Il nostro sistema è principalmente un sistema front-end che estrae i dati da un webservice RESTful ( dove si trovano i dati del client ), per accedere a quel webservice utilizziamo chiavi univoche, ogni chiave appartenente a uno specifico coppia di CLIENT: DATABASE.
Dove le cose si complicano
Quando un nuovo client crea un account, l'idea è di fare in modo che il webservice crei automaticamente un nuovo DB , DB user e chiave API per quell'account. Ho cercato un metodo standard per implementarlo, ma non ho trovato nulla di conclusivo. Ovviamente, i provider SaaS automatizzano questa roba, ma dove non riesco a capire è come fanno questo sicuro .
L'unica soluzione corrente che ho è di creare una sorta di utente MASTER MySQL, che ha un potere totale assoluto su MySQL, che useremo per creare queste coppie di utenti DB, DB. Ma sembra una configurazione così pericolosa che CANT sia l'unica soluzione. Qualsiasi compromissione a questo utente sarebbe fatale . Qui è dove ho bisogno del tuo aiuto ...
Un'altra domanda secondaria, è come limitare la dimensione del DB con MySQL / innoDB. L'unica cosa che ho trovato è che MySQL può solo limitare TABLE SIZE. E, in contesti più sofisticati, che i DB sono memorizzati in directory separate che hanno una quota disco specifica ( questo sembra essere usato da alcuni provider di hosting Web ... ma non posso confermare ). Qualcuno sa di qualsiasi altro modo per controllare la dimensione del DB?