Après ce commentaire à un de mes question, je suis en train de penser si il est préférable d'utiliser 1 base de données avec X schémas ou vice-versa.
Ma situation: je suis le développement d'une web-app, où, quand les gens vous inscrire, j'ai créer (en fait) une base de données (non, ce n'est pas un réseau social: tout le monde doit avoir accès à ses propres données et de ne jamais voir les données de l'utilisateur).
C'est la façon dont j'ai utilisé pour la previus verison de mon application (qui est toujours en cours sur mysql): grâce à parallels plesk panel de l'api, pour chaque enregistrement, je fais:
- Créer une base de données de l'utilisateur avec des privilèges limités;
- Créer une base de données accessible seulement par le précédent créé d'utilisateur et le super utilisateur (pour l'entretien)
- Remplir la db
Maintenant, je vais avoir besoin de faire la même chose avec postgresql (le projet est d'arriver à maturité et mysql.. ne pas répondre à toutes les needes)
J'ai besoin d'avoir toutes les bases de données/schemas sauvegardes indépendantes: pg_dump fonctionne parfaitement dans les deux sens, même pour les utilisateurs qui peut être configuré pour l'accès à seulement 1 schéma ou 1 base de données.
Donc, en supposant que vous êtes plus expérimenté potsgres utilisateurs que moi, que pensez-vous est la meilleure solution pour ma situation, et pourquoi?
Aura-t-il des écarts de rendement à l'aide de $x db au lieu de $x schémas? Et quelle solution sera la mieux pour maintenir dans l'avenir (fiabilité)?
Edit: j'oubliais: toutes mes bases de données/schemas sera toujours avoir la même structure!
Edit2: Pour les sauvegardes question (à l'aide de pg_dump), est peut-être mieux à l'aide de 1 db et de nombreux schémas, les déversements de tous les schémas à la fois: la récupération sera très simple de charger le principal dump dans une machine de dev et puis dump et restore juste le schéma nécessaire: il y a 1 étape supplémentaire, mais dumping tous le schéma semble plus rapide, puis dumpin un par un.
p.s: désolé si j'ai oublié certains, " W " - char dans le texte, mon clavier souffrir de bouton ;)
Mise à JOUR 2012
Ainsi, la structure de l'application et la conception sont tellement changé lors de ces deux dernières années.
Im encore à l'aide de l' 1 db with many schemas
approche, mais tout de même, j'ai 1 base de données pour chaque version de mon application:
Db myapp_01
\_ my_customer_foo_schema
\_ my_customer_bar_schema
Db myapp_02
\_ my_customer_foo_schema
\_ my_customer_bar_schema
Pour les sauvegardes, im dumping chaque base de données régulièrement, puis en déplaçant les sauvegardes sur le serveur de dev.
Je suis également à l'aide de la PITR/WAL sauvegarde, mais, comme je l'ai dit avant, ce n'est pas probable que je vais avoir pour la restauration de la base de données à la fois.. donc il va probablement être rejeté cette année (dans ma situation n'est pas la meilleure approche).
Le 1-db-nombreux-schéma approche a très bien fonctionné pour moi, car maintenant, même si l'application de la structure est totalement changé:
j'ai presque oublié: toutes mes bases de données/schemas sera toujours avoir la même structure!
...maintenant, à chaque schéma a sa propre structure que le changement dinamycally réagir aux utilisateurs de flux de données.