Compartilhar dados licenciados do Amazon Redshift no AWS Data Exchange - Amazon Redshift

Compartilhar dados licenciados do Amazon Redshift no AWS Data Exchange

Ao criar unidades de compartilhamento de dados do AWS Data Exchange e adicioná–las a um produto do AWS Data Exchange, os provedores podem licenciar dados no Amazon Redshift para que os consumidores possam detectar, assinar e consultar dados atualizados no Amazon Redshift quando tiverem assinaturas do AWS Data Exchange ativas.

Com unidades de compartilhamento de dados do AWS Data Exchange adicionadas a um produto do AWS Data Exchange, os consumidores têm acesso automaticamente aos dados de um produto quando a assinatura é iniciada e mantêm o acesso enquanto a assinatura estiver ativa.

Trabalhar com unidades de compartilhamento de dados do AWS Data Exchange como consumidor

Com o Amazon Redshift, você pode acessar e analisar conjuntos de dados do AWS Data Exchange sem precisar armazenar ou gerenciar cópias de dados.

Se você for um consumidor, siga estas etapas para descobrir produtos de dados que contenham unidades de compartilhamento de dados do AWS Data Exchange e consultar dados do Amazon Redshift:

  1. No console do AWS Data Exchange, descubra e assine produtos de dados que contenham unidades de compartilhamento de dados do AWS Data Exchange.

    Depois que sua assinatura se inicia, você pode acessar dados licenciados do Amazon Redshift que são importados como ativos para conjuntos de dados que contêm unidades de compartilhamento de dados AWS Data Exchange.

    Para obter mais informações sobre como começar a usar produtos de dados que contêm unidades de compartilhamento de dados AWS Data Exchange, consulte Assinar produtos de dados no AWS Data Exchange.

  2. No console do Amazon Redshift, crie um cluster do Amazon Redshift, se necessário.

    Para obter informações sobre como criar um cluster, consulte Criar um cluster.

  3. Liste os datashares que são disponibilizados para você e visualize o conteúdo de 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. Ao executar o DESC DATASHARE como administrador do consumidor, você deve especificar a opção ACCOUNT e NAMESPACE para visualizar a unidade de compartilhamento de dados de entrada.

    DESC DATASHARE salesshare of ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d'; producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new -------------------+--------------------------------------+------------+------------+-------------+---------------------------------+------------------ 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_users_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_venue_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_category_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_date_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_event_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_listing_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_sales_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | schema | public | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | view | public.sales_data_summary_view |

    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.

    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 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
  4. Crie bancos de dados locais que façam referência aos datashares. Você deve especificar a opção ACCOUNT e NAMESPACE para criar bancos de dados locais para unidades de compartilhamento de dados do AWS Data Exchange. Para obter mais informações, consulte CREATE DATABASE.

    CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

    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 6.

    CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

    Você pode ver os bancos de dados criados a partir do datashare consultando a visualização SVV_REDSHIFT_DATABASES. Você pode se conectar diretamente a esses bancos de dados ou a um banco de dados local em seu cluster de consumidor e executar uma consulta entre os bancos de dados 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. No entanto, 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 que foram criados.

    Também é possível usar o console do Amazon Redshift para criar bancos de dados a partir de datashares. Para obter mais informações, consulte Criar bancos de dados a partir de datashares.

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

    CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
  6. 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 ter 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 e 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 que aponte para esquemas específicos no datashare (conforme descrito na etapa anterior) e 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 4, 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;
  7. 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, eles usam drivers JDBC ou ODBC, os comandos SHOW ou as visualizações SVV_ALL e SVV_REDSHIFT.

    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 podem ver todos os metadados do cluster de produtores. 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. Ou você pode se conectar diretamente a esses bancos de dados de consumidor e executar consultas nos objetos compartilhados utilizando a notação parcial.

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

    SELECT * FROM sales_db.public.tickit_sales_redshift ORDER BY 1,2 LIMIT 5; salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime ---------+--------+----------+---------+---------+--------+---------+-----------+------------+--------------------- 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728.00 | 109.20 | 2008-02-18 02:36:48 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76.00 | 11.40 | 2008-06-06 05:00:16 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350.00 | 52.50 | 2008-06-06 08:26:17 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175.00 | 26.25 | 2008-06-09 08:38:52 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154.00 | 23.10 | 2008-08-31 09:17:02

    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 das consultas, os consumidores podem criar visualizações em objetos compartilhados. Somente visualizações de vinculação tardia ou visões materializadas são aceitas. 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 obter 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;