Ações de administrador de cluster de consumidor - Amazon Redshift

Ações de administrador de cluster de consumidor

Se você for um administrador de cluster de consumidor — siga estas etapas:

  1. Liste os conjuntos de dados disponibilizados para você e visualize o conteúdo dos datashares. O conteúdo dos conjuntos de dados está disponível somente quando o administrador do cluster do produtor autorizou os datashares e o administrador do cluster do consumidor aceitou e associou os datashares. Para ter mais informações, consulte DESC DATASHARE e SHOW DATASHARES.

    O exemplo a seguir exibe as informações de datashares de entrada de um namespace de produtor especificado. Quando você executa o DESC DATAHSARE como um administrador de cluster de consumidor, é necessário especificar a opção NAMESPACE e o ID da conta para exibir as unidades de compartilhamento de dados de entrada. Para unidades de compartilhamento de dados de saída, especifique o nome da unidade de compartilhamento de dados.

    SHOW DATASHARES LIKE 'sales%'; share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace -----------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------- salesshare | | | | INBOUND | | t | | 123456789012 | 'dd8772e1-d792-4fa4-996b-1870577efc0d'
    DESC DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d'; producer_account | producer_namespace | share_type | share_name | object_type | object_name ------------------+--------------------------------------+------------+------------+-------------+--------------------------------- 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_users_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_venue_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_category_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_date_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_event_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_listing_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_sales_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | schema | public (8 rows)

    Somente superusuários de cluster podem fazer isso. Você também pode usar SVV_DATASHARES para visualizar os datashares e SVV_DATAASHARE_OBJECTS para vsualizar os objetos dentro do datashare.

    O exemplo a seguir exibe os datashares de entrada em um cluster de consumidores.

    SELECT * FROM SVV_DATASHARES WHERE share_name LIKE 'sales%'; share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace -----------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------- salesshare | | | | INBOUND | | t | | 123456789012 | 'dd8772e1-d792-4fa4-996b-1870577efc0d'
    SELECT * FROM SVV_DATASHARE_OBJECTS WHERE share_name LIKE 'sales%'; share_type | share_name | object_type | object_name | producer_account | producer_namespace ------------+------------+-------------+---------------------------------+------------------+-------------------------------------- INBOUND | salesshare | table | public.tickit_users_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_venue_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_category_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_date_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_event_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_listing_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_sales_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | schema | public | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d (8 rows)
  2. Crie bancos de dados locais que façam referência aos datashares. Especifique o NAMESPACE e o ID da conta ao criar o banco de dados com base na unidade de compartilhamento de dados. Para ter mais informações, consulte CREATE DATABASE.

    CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';

    Se você quiser um controle mais granular sobre o acesso aos objetos no banco de dados local, use a cláusula WITH PERMISSIONS ao criar o banco de dados. Isso permite a você conceder permissões no nível de objeto para objetos no banco de dados na etapa 4.

    CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';

    Você pode ver os bancos de dados criados a partir do datashare consultando a visualização SVV_REDSHIFT_DATABASES. Você não pode se conectar a esses bancos de dados criados a partir de datashares; eles são somente leitura. No entanto, você pode se conectar a um banco de dados local em seu cluster de consumidores e executar uma consulta entre os bancos nos dados dos bancos criados nas unidades de compartilhamento de dados. Você não pode criar um datashare em cima de objetos de banco de dados criados a partir de um datashare existente. Porém, você pode copiar os dados em uma tabela separada no cluster de consumidores, executar qualquer processamento necessário e, em seguida, compartilhar os novos objetos criados.

  3. (Opcional) Crie esquemas externos para referenciar e atribuir permissões detalhadas a esquemas específicos no banco de dados do consumidor importado no cluster de consumidores. Para ter mais informações, consulte CREATE EXTERNAL SCHEMA.

    CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
  4. Conceda permissões em bancos de dados e referências de esquema criadas a partir das unidades de compartilhamento de dados para usuários ou funções no cluster consumidor conforme necessário. Para obter mais informações, consulte GRANT ou REVOKE.

    GRANT USAGE ON DATABASE sales_db TO Bob;
    GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;

    Se tiver criado o banco de dados sem WITH PERMISSIONS, você só poderá atribuir permissões em todo o banco de dados criado a partir da unidade de compartilhamento de dados para usuários ou funções. Em alguns casos, você precisa de controles refinados em um subconjunto de objetos de banco de dados criados a partir do datashare. Nesse caso, você pode criar uma referência de esquema externo apontando para esquemas específicos na unidade de compartilhamento de dados conforme descrito na etapa anterior. Em seguida, você pode fornecer permissões detalhadas no nível do esquema. Você também pode criar exibições de vinculação tardia sobre objetos compartilhados e usá-las para atribuir permissões detalhadas. Você também pode considerar que os clusters de produtores criem conjuntos de dados adicionais para você com os detalhes necessários. Você pode criar quantas referências de esquema quiser para o banco de dados criado a partir da unidade de compartilhamento de dados conforme necessário.

    Se tiver criado o banco de dados com WITH PERMISSIONS na etapa 2, você deverá atribuir permissões no nível de objeto para objetos no banco de dados compartilhado. Um usuário com apenas a permissão USAGE não poderá acessar nenhum objeto em um banco de dados criado com WITH PERMISSIONS até receber permissões adicionais no nível de objeto.

    GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
  5. Consultar dados nos objetos compartilhados nos datashares.

    Usuários e funções com permissões em bancos de dados consumidores e esquemas em clusters consumidores podem explorar e navegar nos metadados de quaisquer objetos compartilhados. Eles também podem explorar e navegar por objetos locais em um cluster de consumidores. Para fazer isso, use drivers JDBC ou ODBC ou visualizações SVV_ALL e SVV_REFISH.

    Os clusters de produtores podem ter muitos esquemas no banco de dados, tabelas e visualizações dentro de cada esquema. Os usuários do lado do consumidor podem ver apenas o subconjunto de objetos que são disponibilizados através do datashare. Esses usuários não conseguem ver todos os metadados do cluster de produtor. Essa abordagem ajuda a fornecer controle de segurança de metadados detalhados com compartilhamento de dados.

    Você continua se conectando a bancos de dados de cluster locais. Mas agora, você também pode ler dos bancos de dados e esquemas que são criados a partir do datashare usando a notação database.schema.table de três partes. Você pode executar consultas que abrangem todos e todos os bancos de dados que são visíveis para você. Estes podem ser bancos de dados locais no cluster ou bancos de dados criados a partir dos datashares. Os clusters de consumidores não podem se conectar aos bancos de dados criados a partir dos datashares.

    Você pode acessar os dados usando a qualificação completa. Para obter mais informações, consulte Exemplos de uso de uma consulta entre bancos de dados.

    SELECT * FROM sales_db.public.tickit_sales_redshift;

    Você só pode usar instruções SELECT em objetos compartilhados. No entanto, você pode criar tabelas no cluster de consumidores consultando os dados dos objetos compartilhados em um banco de dados local diferente.

    Além de executar consultas, os consumidores podem criar visualizações em objetos compartilhados. Somente visualizações de vinculação tardia e visualizações materializadas são compatíveis. O Amazon Redshift não oferece suporte a visualizações regulares em dados compartilhados. As visualizações criadas pelos consumidores podem abranger vários bancos de dados locais ou bancos de dados criados a partir de conjuntos de dados. Para ter mais informações, consulte CREATE VIEW.

    // Connect to a local cluster database // Create a view on shared objects and access it. CREATE VIEW sales_data AS SELECT * FROM sales_db.public.tickit_sales_redshift WITH NO SCHEMA BINDING; SELECT * FROM sales_data;