Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Relação entre catálogo, esquema, usuário e instância de banco de dados


No Oracle:
  • instância do servidor ==banco de dados ==catálogo ==todos os dados gerenciados pelo mesmo mecanismo de execução
  • schema ==namespace no banco de dados, idêntico à conta do usuário
  • usuário ==proprietário do esquema ==conta nomeada, idêntica ao esquema, que pode se conectar ao banco de dados, que possui o esquema e usa objetos possivelmente em outros esquemas
  • para identificar qualquer objeto no servidor em execução, você precisa (nome do esquema + nome do objeto)

No PostgreSQL:
  • instância do servidor ==db cluster ==todos os dados gerenciados pelo mesmo mecanismo de execução
  • banco de dados ==catálogo ==banco de dados único dentro do cluster de banco de dados, isolado de outros bancos de dados no mesmo cluster de banco de dados
  • schema ==namespace no banco de dados
  • usuário ==conta nomeada, que pode se conectar ao banco de dados, possuir e usar objetos em cada banco de dados permitido separadamente
  • para identificar qualquer objeto no servidor em execução, você precisa (nome do banco de dados + nome do esquema + nome do objeto)

No MySQL:
  • instância do servidor ==não identificada com catálogo, apenas um conjunto de bancos de dados
  • banco de dados ==esquema ==catálogo ==um namespace dentro do servidor.
  • usuário ==conta nomeada, que pode se conectar ao servidor e usar (mas não pode possuir - nenhum conceito de propriedade) objetos em um ou mais bancos de dados
  • para identificar qualquer objeto no servidor em execução, você precisa (nome do banco de dados + nome do objeto)

No Microsoft SQL Server:
  • instância do servidor ==conjunto de bancos de dados gerenciados
  • database ==qualificador de namespace no servidor, raramente chamado de catálogo
  • schema ==proprietário ==namespace dentro do banco de dados, vinculado às funções do banco de dados, por padrão apenas dbo é usado
  • usuário ==conta nomeada, que pode se conectar ao servidor e usar (mas não pode possuir - esquema funciona como proprietário) objetos em um ou mais bancos de dados
  • para identificar qualquer objeto no servidor em execução, você precisa (nome do banco de dados + proprietário + nome do objeto)

Então acho que a resposta para suas perguntas é:

  1. Depende da implementação, se o nome do catálogo é necessário para identificar objetos. O significado de "catálogo", "esquema" e "banco de dados" varia de uma implementação para outra.

  2. Sim, um catálogo é uma abstração de armazenamento de dados. Eu acho que também deve ser definido como um namespace isolado independente, mas nem todos os mecanismos SQL fazem isso.

  3. Banco de dados e esquema são muito bem definidos por todos os fornecedores. Catálogo às vezes é sinônimo de "banco de dados" (pelo menos no Oracle e Postgres), às vezes sinônimo de "esquema" e às vezes sinônimo de ambos. O termo catálogo também muitas vezes significa coleta de metadados (também conhecido como tabelas de sistema).