Pour une grande application SAAS (soutenue par PostgreSql 9.4), avec plus de 300 000 comptes (et en pleine croissance), quels sont les avantages et les inconvénients de l'utilisation d'un schéma par compte pour partitionner les données par rapport à la mise en place de toutes les données dans un seul schéma et l'utilisation de clés étrangères pour le partitionner dans les requêtes?
Je sais que dans le passé, pg_dump était douloureusement lent lors de l'utilisation de nombreux schémas, mais je ne sais pas si c'est le cas aujourd'hui. Je suis également conscient que tout changement dans la structure de la base de données devra être effectué sur tous les schémas. Et je sais que du côté positif, le déplacement d'un schéma d'un serveur physique à un autre est facile, ainsi que la restauration d'un schéma à partir d'une sauvegarde, sans oublier qu'il est logique de partitionner les données de cette façon.
Alors, quels sont les avantages et les inconvénients qui me manquent?
Réponses:
De toute évidence, vous traitez avec les mêmes tables dans chaque schéma utilisateur. Avez-vous envisagé l' héritage pour cela? Il peut vous donner le meilleur des deux mondes pour certains cas d'utilisation. Il existe également certaines limitations . Vous pouvez avoir un schéma séparé pour chaque utilisateur et toujours rechercher toutes les tables d'utilisateurs à la fois très facilement.
En relation:
En dehors de cela, au moins l'octroi / la révocation de privilèges doit être mentionné, ce qui est beaucoup plus simple avec des schémas séparés.
la source