Uso de recursos compartidos de datos de AWS Data Exchange como consumidor
Si es consumidor, siga estos pasos para descubrir productos de datos que contengan recurso compartido de datos de AWS Data Exchange y consultar los datos de Amazon Redshift:
En la consola de AWS Data Exchange, descubra productos de datos que contengan recursos compartidos de datos de AWS Data Exchange y suscríbase a ellos.
Una vez que se inicie la suscripción, podrá acceder a los datos de Amazon Redshift con licencia que se importan como activos a conjuntos de datos que contienen recursos compartidos de datos de AWS Data Exchange.
Para obtener más información sobre cómo empezar a utilizar productos de datos que contengan recursos compartidos de datos de AWS Data Exchange, consulte Suscripción a productos de datos en AWS Data Exchange.
En la consola de Amazon Redshift, cree un clúster de Amazon Redshift, en caso de ser necesario.
Para obtener información sobre cómo crear un clúster, consulte Creación de un clúster.
Enumere los datashares que se ponen a su disposición y vea su contenido. Para obtener más información, consulte DESC DATASHARE y SHOW DATASHARES.
En el siguiente ejemplo, se muestra la información de los datashares entrantes de un espacio de nombres productor específico. Cuando ejecuta DESC DATASHARE como el administrador de un clúster consumidor, debe especificar la opción ACCOUNT y NAMESPACE para ver los recursos compartidos de datos entrantes.
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 |
Solo los superusuarios del clúster pueden hacer esto. También puede utilizar SVV_DATASHARES para ver los datashares y SVV_DATASHARE_OBJECTS para ver los objetos que se encuentran dentro del datashare.
En el siguiente ejemplo, se muestran los datashares entrantes de un clúster consumidor.
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
Cree bases de datos locales que referencien los datashares. Debe especificar la opción ACCOUNT y NAMESPACE para crear bases de datos locales para los recursos compartidos de datos de AWS Data Exchange. Para obtener más información, consulte CREATE DATABASE.
CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Si desea tener un control más detallado del acceso a los objetos de la base de datos local, utilice la cláusula WITH PERMISSIONS al crear la base de datos. De este modo, podrá conceder permisos en el nivel de objeto para los objetos de la base de datos en el paso 6.
CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Puede ver las bases de datos que creó a partir del datashare consultando la vista SVV_REDSHIFT_DATABASES. No puede conectarse a estas bases de datos creadas a partir de datashares, que son de solo lectura. No obstante, puede conectarse a una base de datos local del clúster consumidor y efectuar una consulta de distintas bases de datos en los datos de las bases de datos creadas a partir de los recursos compartidos de datos. No puede crear un datashare encima de los objetos de base de datos creados a partir de un datashare existente. No obstante, puede copiar los datos en una tabla diferente en el clúster consumidor, llevar a cabo el procesamiento que sea necesario y, a continuación, compartir los objetos nuevos que se hayan creado.
También puede utilizar la consola de Amazon Redshift para crear bases de datos a partir de datashares. Para obtener más información, consulte Creación de bases de datos a partir de datashares.
(Opcional) Cree esquemas externos para referenciar esquemas específicos de la base de datos consumidora importados en el clúster consumidor y para asignarles permisos pormenorizados. Para obtener más información, consulte CREATE EXTERNAL SCHEMA.
CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
Conceda permisos en las bases de datos y las referencias de esquema creadas a partir de los recursos compartidos de datos a usuarios o roles del clúster del consumidor según sea necesario. Para obtener más información, consulte GRANT o REVOKE.
GRANT USAGE ON DATABASE sales_db TO Bob;
GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
Si ha creado su base de datos sin WITH PERMISSIONS, solo podrá asignar permisos a toda la base de datos creada a partir del recurso compartido de datos a los usuarios y los roles. En algunos casos, necesita controles pormenorizados sobre un subconjunto de los objetos de base de datos creados a partir del datashare. Si es así, puede crear una referencia de esquema externa que apunte a esquemas específicos del datashare (como se describe en el paso anterior) y proporcionar permisos pormenorizados en el nivel del esquema.
También puede crear vistas de enlace de tiempo de ejecución encima de los objetos compartidos y utilizarlas para asignar permisos pormenorizados. También puede considerar la posibilidad de indicar a los clústeres productores que creen datashares adicionales en su nombre con el nivel de detalle requerido. Puede crear tantas referencias de esquema para la base de datos creada a partir del recurso compartido de datos como quiera.
Si ha creado la base de datos con WITH PERMISSIONS en el paso 4, debe asignar permisos de nivel de objeto a los objetos de la base de datos compartida. Un usuario que solo tenga el permiso USAGE no podrá acceder a ningún objeto de una base de datos creada con WITH PERMISSIONS hasta que se le concedan permisos adicionales en el nivel de objeto.
GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
Consulte los datos de los objetos compartidos que se encuentran en los datashares.
Los usuarios y los roles que tengan permisos en las bases de datos del consumidor y los esquemas de los clústeres del consumidor pueden explorar y navegar por los metadatos de cualquier objeto compartido. También pueden navegar por los objetos locales de un clúster consumidor y explorarlos. Para ello, utilizan controladores JDBC u ODBC, o vistas SVV_ALL y SVV_REDSHIFT.
Los clústeres productores pueden tener muchos esquemas en la base de datos y muchas tablas y vistas dentro de cada esquema. Los usuarios del lado del consumidor solo pueden ver el subconjunto de objetos que se han puesto a disposición a través del datashare. Estos usuarios no pueden ver todos los metadatos del clúster productor. Este enfoque ayuda a proporcionar un control pormenorizado de la seguridad de los metadatos con el uso compartido de datos.
Continúa conectándose a las bases de datos locales del clúster. No obstante, ahora, también es posible leer de las bases de datos y los esquemas que se crean a partir de los datashares utilizando la notación de tres partes database.schema.table. Puede realizar consultas que abarquen todas las bases de datos visibles para usted. Estas pueden ser bases de datos locales del clúster o bases de datos creadas a partir de los datashares. Los clústeres consumidores no pueden conectarse a las bases de datos que se hayan creado a partir de los datashares.
Puede acceder a los datos mediante la cualificación completa. Para obtener más información, consulte Ejemplos de uso de una consulta entre bases de datos.
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
Solo se pueden utilizar las instrucciones SELECT en los objetos compartidos. No obstante, puede crear tablas en el clúster consumidor consultando los datos de los objetos compartidos de una base de datos local diferente.
Además de las consultas, los consumidores pueden crear vistas en los objetos compartidos. Solo se admiten las vistas de enlace de tiempo de ejecución o las vistas materializadas. Amazon Redshift no admite las vistas normales en los datos compartidos. Las vistas que crean los consumidores pueden abarcar varias bases de datos locales o bases de datos creadas a partir de datashares. Para obtener más información, 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;