Sto lavorando su una serie di applicazioni web correlate tra loro, tutte situate sullo stesso host:
Super Admin
|
---Site Network Admin
| |
| ---Site
| |
| ---Site
| |
| ---Site
|
---Site Network Admin
|
---Site
|
---Site
|
---Site
Tutti e tre avranno accesso alla stessa libreria di base (Zend Framework) e librerie di applicazioni separate per ogni livello della rete, quindi 3 applicazioni e una libreria, ma diverse configurazioni per supportare istanze uniche.
Sono interessato a sentire le opinioni della gente sulla migliore strategia di database per supportare queste applicazioni.
Da un lato, potevo distribuire un database, o forse uno per ogni livello di applicazione (cioè 3). Questo ha il vantaggio di essere facile da implementare, ma lo svantaggio è che gli utenti condividono il carico di accesso, ad esempio se un utente sta veramente martellando il database, le prestazioni di altre applicazioni che condividono il database ne risentiranno. Un altro svantaggio è che qualsiasi danneggiamento dei dati potrebbe potenzialmente interessare tutti gli utenti finali.
Dall'altra, potrei utilizzare una serie di database, uno per i primi due livelli per condividere i dati amministrativi, ma separare le istanze per ciascun sito distribuito sulla rete. Questo ha il vantaggio che gli utenti finali sono isolati e quindi la corruzione dei dati è più facile da contenere. Lo svantaggio è ovviamente il contrario dell'esempio precedente, in quanto le modifiche sono quindi più difficili da implementare attraverso la rete.
Il mio pensiero è che è dettato dall'uso rispetto alla popolazione di utenti. Se hai una bassa quantità di utenti, ma interagiscono molto con il database - allora il piano B è il migliore. Se è il primo, che hai un alto rendimento di utenti con bassi tassi di interazione, allora il piano A è il migliore.
Sono interessato a conoscere i pensieri di altre persone sull'approccio migliore per affrontare questa situazione.