57 votes

Relation entre le catalogue, le schéma, l'utilisateur et l'instance de la base de données.

Pour comparer des bases de données de différents fournisseurs (Oracle, SQL Server, DB2, MySQL et PostgreSQL), comment puis-je identifier un objet de manière unique et ai-je besoin d'un catalogue ? Par exemple, dans les DatabaseMetadata de Java, je devrais au moins spécifier le catalogue et le schéma fooPattern.

Est-il vrai que le catalogue n'est qu'une abstraction du stockage des données ?

113voto

filiprem Points 1785

Dans Oracle:

  • instance de serveur == base de données == catalogue == toutes les données gérées par le même moteur d'exécution
  • schema == l'espace de noms dans la base de données, identique à compte d'utilisateur
  • utilisateur == propriétaire du schéma == compte nommé, identique au schéma, qui peut se connecter à la base de données, qui possède le schéma et utiliser des objets, éventuellement, dans d'autres schémas
  • pour identifier tout objet que vous avez besoin de schéma (nom + nom de l'objet)

Dans PostgreSQL:

  • instance de serveur == db cluster == toutes les données gérées par le même moteur d'exécution
  • base de données == catalogue == base de données unique au sein de db cluster, isolé à partir d'autres bases de données dans la même db cluster
  • schema == l'espace de noms dans la base de données
  • utilisateur == compte nommé, qui peut se connecter à la base de données, de posséder et d'utiliser des objets dans la base de données
  • pour identifier tout objet dont vous avez besoin (nom de la base + le nom du schéma de + nom de l'objet)

Dans MySQL:

  • instance de serveur == non identifié avec catalogue, juste un ensemble de bases de données
  • base de données == catalogue == un espace de nom dans le serveur.
  • schema == non utilisé (vide dans le pilote JDBC, non officielles utilisées dans les docs).
  • utilisateur == compte nommé, qui peut se connecter à un serveur et de l'utiliser (mais ne peut pas propre - pas de notion de propriété) des objets dans une ou plusieurs bases de données
  • pour identifier tout objet dont vous avez besoin (nom de base de données + nom de l'objet)

Donc, je pense que la réponse à vos questions est:

  1. Il dépend de la mise en œuvre, si le nom du catalogue est nécessaire pour identifier les objets. Le sens de "catalogue", "schéma" et "base de données" varier d'une implémentation à une autre.

  2. Oui, un catalogue est une abstraction de stockage de données. Je pense qu'il devrait être également défini comme un document isolé de l'espace de noms, mais pas tous les SQL moteurs de le faire.

  3. "Catalogue" est souvent synonyme de "base de données" (au moins dans Oracle et Postgresql qui à la fois faire un bon standard. MySQL et MS SQL prendre différentes).

5voto

Leon Katsnelson Points 274

Pour DB2, schéma est utilisé comme espaces de noms. Donc si vous voulez vous identifier de manière unique un objet dans une base de données que vous voulez dire *schéma.object_name*. C'est une manière très pratique pour atteindre multilocataire. Vous pouvez avoir un schéma distinct pour chaque locataire dans votre base de données. Cela permet une bonne séparation des préoccupations de sécurité ainsi que les aspects de la gestion. Vous pouvez avoir 32K schémas dans une seule base de données DB2.

Un catalogue DB2 est tout simplement une collection de tables système qui contient des méta-données de la base de données. En général, il est considéré comme une mauvaise pratique de l'accès catalogue des objets directement. Il est préférable d'utiliser les équipements fournis par votre API (par exemple, JDBC) pour explorer le catalogue et les métadonnées qu'il contient.

DB2 a aussi d'autres couches d'abstraction. Vous pouvez avoir plusieurs instances de DB2 en cours d'exécution sur la même machine. Chaque instance peut gérer 256 bases de données distinctes (chacune avec 32K de schémas). Le nombre de DB2 instances sur un serveur n'est limitée que par la quantité de mémoire dont vous disposez. À un moment donné, nous avons eu de 120 cas de DB2 (chacun avec une base de données et 10 connexions) en cours d'exécution sur Amazon EC2 m1.grand. Vous pouvez également avoir plusieurs installations de DB2 sur un seul serveur. il est utile lors de l'essai d'une nouvelle version, vous envisagez de migrer vers. Je trouve ça bien que déroutante, souvent en oubliant de passer à la droite de l'installer.

4voto

Thejas Nair Points 171

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X