Acciones del administrador de un clúster consumidor
Con Amazon Redshift, puede realizar tareas administrativas en los clústeres de consumidores para administrar la ingesta de datos y el procesamiento de cargas.
Si es el administrador de un clúster consumidor, siga estos pasos:
Enumere los datashares que se ponen a su disposición y consulte su contenido. El contenido de los datashares solo está disponible cuando el administrador del clúster productor ha autorizado los datashares y el administrador del clúster consumidor ha aceptado y asociado los datashares. 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 administrador de un clúster consumidor, debe especificar el NAMESPACE y el ID de la cuenta para ver los recursos compartidos de datos entrantes. Para los recursos compartidos de datos salientes, especifique el nombre del recurso compartido de datos.
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)
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.
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)
Cree bases de datos locales que referencien los datashares. Especifique el NAMESPACE y el ID de la cuenta cuando cree la base de datos desde el recurso compartido de datos. Para obtener más información, consulte CREATE DATABASE.
CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';
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 4.
CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';
Puede ver las bases de datos que creó a partir del datashare consultando la vista SVV_REDSHIFT_DATABASES. Puede conectarse a estas bases de datos directamente o puede conectarse a una base de datos local en el clúster del consumidor y realizar una consulta entre bases de datos para consultar los datos de las bases de datos de 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 creados.
(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 o 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 externo que apunte a esquemas específicos del recurso compartido de datos, como se describe en el paso anterior. Luego, puede proporcionar permisos pormenorizados en el nivel de 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 2, 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, utilice 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 consultas entre bases de datos.
SELECT * FROM sales_db.public.tickit_sales_redshift;
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 realizar consultas, los consumidores pueden crear vistas en los objetos compartidos. Solo se admiten las vistas de enlace en 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;