2016-01-16 24 views
7

Diciamo che stai gestendo la tua attività in cima al database postgresql. Dopo un po 'di tempo si ottiene così tanto traffico che non può essere gestito dall'istanza di postgresql singola, quindi si desidera aggiungere più istanze (ridimensionarlo orizzontalmente) per essere in grado di gestire la crescita.Scalatura Postgres in orizzontale

I dati sono relazionali, quindi probabilmente il passaggio a una soluzione chiave/valore non è un'opzione.

Come lo faresti con postgresql?

PS. Versione Postgresql: 9,5

+0

Utilizzare una replica Master/Slave (con più slave) con un sistema di bilanciamento del carico (ad es pgPool) http://www.postgresql.org/docs/current/static/high-availability.html –

+0

si può prendere uno sguardo a Postgres-XL per usare sharding, ma sii consapevole dei suoi limiti http://www.postgres-xl.org/ –

+0

@DmitrySavinkov dove posso trovare maggiori informazioni sui limiti di Postgres-XL? – toasteez

risposta

3
  1. Se si tratta di carico di lavoro pesante, è necessario aggiungere le repliche. Aggiungi tutte le repliche necessarie per gestire l'intero carico di lavoro. Puoi bilanciare tutte le query tra le repliche nel modo round robin.

  2. Se si tratta di carico di lavoro pesante, è necessario suddividere il database su molti server. Puoi mettere tabelle diverse su macchine diverse o puoi dividere una tabella su molte macchine. In quest'ultimo caso è possibile suddividere una tabella in base a un intervallo della chiave primaria o di un hash della chiave primaria o anche verticalmente per righe. In ognuno dei casi sopra riportati si può perdere la transazione, quindi fai attenzione e assicurati che tutti i dati modificati e interrogati da una transazione risiedano sullo stesso server.