È un database multi-tenant:
- Un server DB che ha un database / schema diverso (identico) per ciascun cliente / tenant ?; o
- Un server DB con un database / schema in cui i clienti / i tenant condividono i record all'interno delle stesse tabelle?
Ad esempio, sotto l'opzione n. 1 sopra, potrei avere un server MySQL, per esempio mydb01.example.com
, e potrebbe avere un customer1
database al suo interno. Questo customer1
database potrebbe contenere, diciamo, 10 tabelle che alimentano la mia applicazione per quel particolare cliente (Cliente n. 1). Potrebbe anche contenere un customer2
database con le stesse 10 tabelle esatte, ma contenente solo dati per il cliente n. 2. Potrebbe avere un customer3
database, un customer4
database e così via.
Nell'opzione n. 2 sopra, ci sarebbe solo un singolo database / schema, diciamo myapp_db
, di nuovo con 10 tabelle (stesse come sopra). Ma qui, i dati per tutti i clienti esistono all'interno di quelle 10 tabelle e quindi "condividono" le tabelle. E a livello di applicazione, controllo logico e di sicurezza a cui i clienti hanno accesso a quali record in quelle 10 tabelle e grande attenzione è rivolta a garantire che il Cliente n. 1 non acceda mai all'app e visualizzi i dati del Cliente n. 3, ecc.
Quale di questi paradigmi costituisce un DB "multi-tenant" tradizionale? E se nessuno dei due, allora qualcuno può fornirmi un esempio (usando gli scenari sopra descritti) di cosa sia un DB multi-tenant?