Mysql
 sql >> Database >  >> RDS >> Mysql

Relazione tra catalogo, schema, utente e istanza del database

In Oracle:

  • istanza server ==database ==catalogo ==tutti i dati gestiti dallo stesso motore di esecuzione
  • schema ==spazio dei nomi all'interno del database, identico all'account utente
  • utente ==proprietario dello schema ==account con nome, identico allo schema, che può connettersi al database, che possiede lo schema e utilizzare oggetti eventualmente in altri schemi
  • Per identificare qualsiasi oggetto nel server in esecuzione, è necessario (nome schema + nome oggetto)

In PostgreSQL:

  • istanza server ==db cluster ==tutti i dati gestiti dallo stesso motore di esecuzione
  • database ==catalogo ==database singolo all'interno del cluster di db, isolato da altri database nello stesso cluster di database
  • schema ==spazio dei nomi all'interno del database
  • utente ==account denominato, che può connettersi al database, possedere e utilizzare oggetti in ogni database consentito separatamente
  • per identificare qualsiasi oggetto nel server in esecuzione, è necessario (nome database + nome schema + nome oggetto)

In MySQL:

  • istanza del server ==non identificata con il catalogo, solo un insieme di database
  • database ==schema ==catalog ==uno spazio dei nomi all'interno del server.
  • utente ==account denominato, che può connettersi al server e utilizzarlo (ma non può possedere - nessun concetto di proprietà) oggetti in uno o più database
  • Per identificare qualsiasi oggetto nel server in esecuzione, è necessario (nome database + nome oggetto)

In Microsoft SQL Server:

  • istanza del server ==insieme di database gestiti
  • database ==qualificatore dello spazio dei nomi all'interno del server, raramente indicato come catalogo
  • schema ==proprietario ==spazio dei nomi all'interno del database, legato ai ruoli del database, solo per impostazione predefinita dbo viene utilizzato
  • utente ==account denominato, che può connettersi al server e utilizzarlo (ma non può possedere - lo schema funziona come proprietario) oggetti in uno o più database
  • per identificare qualsiasi oggetto nel server in esecuzione, è necessario (nome database + proprietario + nome oggetto)

Quindi penso che la risposta alle tue domande sia:

  1. Dipende dall'implementazione, se il nome del catalogo è necessario per identificare gli oggetti. Il significato di "catalogo", "schema" e "database" varia da un'implementazione all'altra.

  2. Sì, un catalogo è un'astrazione dell'archiviazione dei dati. Penso che dovrebbe anche essere definito come uno spazio dei nomi isolato autonomo, ma non tutti i motori SQL lo fanno.

  3. Banca dati e schema sono abbastanza ben definiti da tutti i fornitori. Catalogo a volte è sinonimo di "database" (almeno in Oracle e Postgres), a volte è sinonimo di "schema" ea volte è sinonimo di entrambi. Il termine catalogo spesso significa anche raccolta di metadati (aka tabelle di sistema).