Bancos de dados pessoais

O que é um banco de dados pessoal?

Um banco de dados pessoal (PDB) é uma instância de banco de dados de propriedade do sistema e gerenciada pelo usuário, que é provisionada automaticamente pelo Snowflake. Ele serve como um local de armazenamento pessoal dedicado, em que os usuários podem criar, organizar e gerenciar os próprios objetos de banco de dados.

O provisionamento automático elimina a necessidade de os usuários selecionarem ou solicitarem manualmente acesso a um banco de dados compartilhado, o que garante um ambiente de desenvolvimento dedicado. Quando um usuário é descartado do sistema, o PDB associado a ele e todos os objetos correspondentes são automaticamente transferidos para a propriedade de ACCOUNTADMIN.

Vantagens de um PDB

  • Organizar projetos pessoais: os usuários podem organizar os próprios projetos em um ambiente isolado, reduzindo a desordem e possíveis conflitos de nomes em bancos de dados compartilhados.

  • Governança administrativa simplificada: todos os desenvolvimentos relacionados a arquivos são totalmente gerenciados por RBAC.

Tipos de objetos do PDB

Atualmente, PDBs são compatíveis com dois tipos principais de objetos que fornecem um ambiente de desenvolvimento dedicado para o usuário: espaços de trabalho e notebooks.

Espaços de trabalho

O PDB é criado quando um usuário interage pela primeira vez com a UI dos espaços de trabalho. Os espaços de trabalho são entidades baseadas em arquivos e exigem armazenamento em um banco de dados Snowflake.

Notebooks

Os PDBs são compatíveis com serviços de computação gerenciados para notebooks Snowflake. Para habilitar a execução de código, um objeto de serviço gerenciado pelo Snowflake é criado automaticamente dentro do PDB. Isso garante que o contexto de execução do notebook esteja vinculado a todas as funções e permissões que o usuário já tem. Esse objeto conecta o espaço de trabalho a um pool de computação Snowpark Container Services (SPCS), permitindo que os desenvolvedores executem o código do Snowflake Notebooks.

Importante

O usuário deve ter o privilégio USAGE no pool de computação associado antes de poder criar um serviço para executar código. Esse privilégio pode ser concedido por qualquer função com o privilégio MANAGE GRANTS.

Segurança

A arquitetura do PDB é intencionalmente simplificada e adere ao princípio do menor privilégio, o que garante que todas as operações sejam estritamente limitadas ao contexto de segurança existente do usuário:

  • Sem novos acessos a dados: os PDBs não introduzem nenhum acesso novo ou expandido a dados, nem qualquer capacidade adicional de compartilhar dados. Os usuários não podem mover dados de um banco de dados regular para um PDB.

  • Contexto de permissões:** quaisquer consultas SQL executadas em um espaço de trabalho são executadas com o mesmo conjunto de funções e permissões que o usuário já tem. Isso espelha o ambiente de execução de um arquivo de espaço de trabalho padrão do Snowflake.

Nota

Bancos de dados pessoais também são compatíveis com segredos pessoais. Os objetos secretos pertencem exclusivamente ao usuário. Isso garante, por padrão, que o segredo permaneça privado, seja acessível apenas ao usuário e não seja compartilhado involuntariamente.

Gerenciamento e visibilidade de PDBs

Os administradores podem monitorar e controlar o uso de PDBs, que pertencem ao sistema, não a qualquer função. O uso em um PDB é limitado ao usuário ao qual ele está atribuído. Objetos dentro de um PDB não podem ser compartilhados.

Visibilidade do administrador

Funções com o privilégio MANAGE GRANTS têm visibilidade de todos os objetos dentro da conta, incluindo objetos pessoais pertencentes a usuários individuais. Por exemplo, funções como ACCOUNTADMIN podem visualizar todos os bancos de dados, incluindo bancos de dados pessoais, por padrão. Essas funções também podem acessar detalhes sobre esquemas e seus objetos dentro de bancos de dados pessoais.

  • Para visualizar os detalhes de todos os bancos de dados pessoais em uma conta, consulte a exibição DATABASES Account Usage:

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES
    WHERE DATABASE_NAME LIKE 'USER$%';
    
    Copy
  • Para visualizar os objetos que existem em um espaço de trabalho específico, use o seguinte código:

    SHOW WORKSPACES IN DATABASE "USER$CMEYER";
    
    Copy
  • Para visualizar o banco de dados pessoal de um usuário específico, use o seguinte código:

    SHOW DATABASES LIKE 'USER$BOBR';
    
    Copy

    Para bancos de dados pessoais, o valor na coluna kind é PERSONAL DATABASE.

  • Para visualizar objetos em um banco de dados pessoal específico, use o seguinte código:

    SHOW OBJECTS IN DATABASE "USER$<username>";
    
    Copy

Descartar objetos

  • Para descartar objetos em um banco de dados pessoal, use o seguinte código:

    DROP WORKSPACE "USER$JSMITH_DROP_WS_TEST".PUBLIC."drop_this_ws";
    
    Copy

Considerações sobre custo

  • Os usuários não podem armazenar dados em tabelas nos PDBs deles.

  • Os custos de armazenamento refletem apenas o tamanho dos arquivos do espaço de trabalho e os metadados associados.

Limitações

Os administradores não podem executar as seguintes tarefas:

  • Visualizar nomes de arquivos ou conteúdo de arquivos que pertencem a outros usuários.

  • Visualizar quanto armazenamento é utilizado para PDBs. Os PDBs não aparecem em DATABASE_STORAGE_USAGE_HISTORY.

  • Limitar quanto armazenamento é utilizado para cada PDB.

  • Descartar PDBs ou impedir que usuários individuais os utilizem.

  • Criar novos PDBs. Novos PDBs são criados sob demanda quando um usuário cria um espaço de trabalho.