Stiamo iniziando a riscrivere le nostre app (portale Internet, milioni di utenti unici e pochi sistemi CRM / ERP, poche centinaia di utenti) e abbiamo un'enorme decisione da prendere ora. Li scriveremo per lo più (90-95%) in Symfony2
con Doctrine
e alcuni servizi in background (ad es. Mailing) in Java
. Database - MySql
/ MariaDb
. anche molte tecnologie aggiuntive ( redis/memcached
, load balancing
, varnish
, replication
e così via). I più importanti (in questo caso) sono: symfony2
, mysql/maria
e doctrine
.
Il fatto è che per alcuni sistemi sarà meglio lavorare sugli stessi tavoli. Ad esempio: portale internet con offerte di lavoro + sistema CRM per la gestione dei clienti che pagano per la pubblicazione di tali offerte (ci sono molti casi simili). Anche avere funzionalità di un accesso per i nostri utenti tra tutti i sistemi è importante.
Vedo due approcci qui:
- Abbiamo un grande database, con poche centinaia di tabelle. Lavoravo con oltre 200 tavoli, ma non con quella quantità elevata di traffico. Quindi, se il traffico sale, sarà coinvolto il partizionamento e il partizionamento.
- Abbiamo molti database, ciascuno per un'app. Se è necessaria una sola app per comunicare con un'altra
DB
, scriveremo servizi speciali per fornire tale funzionalità.
Ora, di cosa sono preoccupato: 1. facilità di sviluppo: è più semplice avere un solo database 2. facilità di configurazione / assicurazione della ridondanza 3. prestazioni
Una cosa che so ora che il database sarà ospitato su tre macchine con replica master-slave
, che è supportata piacevolmente da Doctrine
.
Quali sono i tuoi pensieri? Quali sono i tuoi pro e contro? Grazie!