web-dev-qa-db-fra.com

Mise à l'échelle horizontale de Postgres

Supposons que vous dirigiez votre entreprise au-dessus de la base de données postgresql. Après un certain temps, vous obtenez tellement de trafic qu'il ne peut pas être géré par une seule instance postgresql, vous voulez donc ajouter plus d'instances (le mettre à l'échelle horizontalement) pour pouvoir gérer la croissance.

Vos données sont relationnelles, donc le passage à une solution clé/valeur n'est probablement pas une option.

Comment feriez-vous avec postgresql?

PS. Version postgresql: 9.5

19
user232343
  1. S'il s'agit d'une charge de travail lourde en lecture, vous devez simplement ajouter des répliques. Ajoutez autant de répliques que nécessaire pour gérer l'ensemble de la charge de travail. Vous pouvez équilibrer toutes les requêtes sur les répliques à la manière du round robin.

  2. S'il s'agit d'une charge de travail lourde en écriture, vous devez partitionner votre base de données sur plusieurs serveurs. Vous pouvez placer différentes tables sur différentes machines ou partager une table sur plusieurs machines. Dans ce dernier cas, vous pouvez diviser une table par une plage de la clé primaire ou par un hachage de la clé primaire ou même verticalement par des lignes. Dans chacun des cas ci-dessus, vous risquez de perdre la transactionnalité, alors soyez prudent et assurez-vous que toutes les données modifiées et interrogées par une transaction résident sur le même serveur.

15
Dennis Anikin