PostgreSQL: Est-il préférable d'utiliser plusieurs bases de données avec un schéma de chacune, ou une base de données avec plusieurs schémas?

Après ce commentaire à une de mes question, je suis en train de penser si il est préférable d'utiliser une base de données avec X schémas ou vice versa.

Ma situation: je suis sur le développement d'une application web 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 précédente version de mon application (qui est toujours en cours sur MySQL): grâce à parallels Plesk panel de l'API, pour chaque enregistrement, je n':

  1. Créer une base de données de l'utilisateur avec des privilèges limités;
  2. Créer une base de données accessible seulement par le précédent créé d'utilisateur et le super utilisateur (pour l'entretien)
  3. Remplir la base de données

Maintenant, je vais avoir besoin de faire la même chose avec PostgreSQL (le projet est d'arriver à maturité et MySQL... ne pas satisfaire tous les besoins).

J'ai besoin d'avoir toutes les bases de données/schemas sauvegardes indépendantes: pg_dump fonctionne parfaitement dans les deux sens, et de même pour les utilisateurs qui peut être configuré pour l'accès d'un schéma ou d'une base de données.

En supposant que vous êtes plus expérimenté des utilisateurs de PostgreSQL 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 base de données au lieu de $x schémas? Et quelle solution sera la mieux pour maintenir dans l'avenir (fiabilité)?

Toutes mes bases de données/schemas sera toujours ont la même structure!

Pour les sauvegardes question (à l'aide de pg_dump), est peut-être mieux à l'aide d'une base de données 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 développement, puis dump et restore juste le schéma nécessaire: il y a une étape supplémentaire, mais dumping tous le schéma semble plus rapide que de vider un par un.

Mise à JOUR 2012

Bien, la structure de l'application et de conception beaucoup changé au cours de ces deux dernières années. Je suis toujours à l'aide de la one db with many schemas approche, mais tout de même, j'ai une base de données pour chaque version de ma demande:

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, je suis dumping chaque base de données régulièrement, et en déplaçant les sauvegardes sur le serveur de développement.

Je suis également en utilisant le PITR/WAL sauvegarde, mais, comme je l'ai dit avant, il n'est pas probable que je vais devoir restaurer 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).

Celui-db-nombreux-schéma approche a très bien fonctionné pour moi, car maintenant, même si la structure de l'application est totalement changé:

J'ai presque oublié: toutes mes bases de données/schemas sera toujours ont la même structure!

...maintenant, à chaque schéma a sa propre structure qui changent de manière dynamique réagissant aux utilisateurs de flux de données.

  • "toutes mes bases de données/schemas aura jamais la même structure!" vous voulez dire qu'ils ont tous la même structure? Ou jamais?
  • Désolé, oui, ils ont tous la même structure pour toujours: si je change, je vais changer tous 😉
  • Si vous avez 1000 clients, cela signifie que vous devez mettre à jour 1000 schéma?
  • oui, mais j'ai de la mise à jour de la structure des tables, pas les données.
  • Alors, qu'est ce que vous allez faire enfin? Une question, cependant, bien que les performances des requêtes, etc. peut être contrôlé par les tablespaces, les schémas résultant en un rendement équivalent de multi-db vs multi-schéma, aucun impact sur WAL journaux???
  • eh bien, le design de l'application a été radical changé au cours du temps... permettez-moi de mettre à jour mes question avec quelques détails
  • Comment vous assurer de la sécurité entre les deux schémas? Une connexion DB peut mettre à jour plusieurs Schémas - c'est une aubaine et nue comme bien

InformationsquelleAutor Strae | 2009-07-20