sql >> Database >  >> RDS >> Mysql

Relatie tussen catalogus, schema, gebruiker en database-instantie

In Oracle:

  • serverinstantie ==database ==catalogus ==alle gegevens beheerd door dezelfde uitvoeringsengine
  • schema ==naamruimte binnen database, identiek aan gebruikersaccount
  • gebruiker ==schema-eigenaar ==genoemd account, identiek aan schema, wie verbinding kan maken met de database, wie eigenaar is van het schema en objecten mogelijk in andere schema's gebruikt
  • om een ​​object in een actieve server te identificeren, heb je (schemanaam + objectnaam) nodig

In PostgreSQL:

  • serverinstantie ==db cluster ==alle gegevens beheerd door dezelfde uitvoeringsengine
  • database ==catalog ==enkele database binnen db-cluster, geïsoleerd van andere databases in dezelfde db-cluster
  • schema ==naamruimte in database
  • gebruiker ==genoemd account, die verbinding kan maken met de database, objecten kan bezitten en gebruiken in elke toegestane database afzonderlijk
  • om een ​​object in een actieve server te identificeren, hebt u (databasenaam + schemanaam + objectnaam) nodig

In MySQL:

  • serverinstantie ==niet geïdentificeerd met catalogus, alleen een set databases
  • database ==schema ==catalog ==een naamruimte binnen de server.
  • gebruiker ==genoemd account, die verbinding kan maken met de server en kan gebruiken (maar niet bezit kan hebben) - geen concept van eigendom) objecten in een of meer databases
  • om een ​​object in een actieve server te identificeren, hebt u (databasenaam + objectnaam) nodig

In Microsoft SQL Server:

  • serverinstantie ==set van beheerde databases
  • database ==naamruimte-kwalificatie binnen de server, zelden catalogus genoemd
  • schema ==owner ==naamruimte binnen de database, gekoppeld aan databaserollen, standaard alleen dbo wordt gebruikt
  • gebruiker ==genoemd account, die verbinding kan maken met de server en kan gebruiken (maar niet bezit kan hebben) - schema werkt als eigenaar) objecten in een of meer databases
  • om een ​​object in een actieve server te identificeren, hebt u (databasenaam + eigenaar + objectnaam) nodig

Dus ik denk dat het antwoord op je vragen is:

  1. Het hangt af van de implementatie of de catalogusnaam nodig is om objecten te identificeren. De betekenis van "catalogus", "schema" en "database" verschilt van implementatie tot implementatie.

  2. Ja, een catalogus is een abstractie van gegevensopslag. Ik denk dat het ook moet worden gedefinieerd als een op zichzelf staande geïsoleerde naamruimte, maar niet alle SQL-engines doen het.

  3. Database en schema zijn vrij goed gedefinieerd door alle leveranciers. Catalogus is soms synoniem aan "database" (althans in Oracle en Postgres), soms synoniem aan "schema", en soms synoniem aan beide. De term catalogus betekent ook vaak het verzamelen van metagegevens (ook wel systeemtabellen genoemd).



  1. postgres kolom X bestaat niet

  2. Door de Oracle-grootte van rij-ophaalacties hoger in te stellen, wordt mijn app langzamer?

  3. Hoe kan ik efficiënt tekst naar getal converteren in Oracle PL/SQL met niet-standaard NLS_NUMERIC_CHARACTERS?

  4. Hoe Teamcity te implementeren met PostgreSQL voor hoge beschikbaarheid