Agregación de tablas de lago de datos a un recurso compartido de datos - Amazon Redshift

Agregación de tablas de lago de datos a un recurso compartido de datos

Con un recurso compartido de datos, un productor de datos puede compartir de forma segura objetos de base de datos de gran detalle, como esquemas y tablas, con consumidores de la misma cuenta de AWS o de cuentas diferentes. El productor también puede compartir objetos entre regiones. En este tema se describe cómo agregar objetos de un lago de datos, específicamente, del catálogo de datos de AWS Glue, a un recurso compartido de datos. Incluye dos casos de uso:

  • Agregación de una vista de enlace tardío a un recurso compartido de datos que haga referencia a una tabla de un lago de datos: esto resulta práctico para un consumidor, ya que es probable que la configuración preliminar, como la definición de los permisos en los datos de origen externos, por ejemplo, con Lake Formation, ya esté completada. Un beneficio adicional es que una vista agregada a un recurso compartido de datos puede unir tablas del lago de datos con tablas nativas de Redshift.

  • Agregación de una tabla de un esquema externo a un recurso compartido de datos directamente: esto hace que los objetos del lago de datos estén disponibles para los consumidores sin capas ni lógica adicionales. Los consumidores pueden consultar la tabla o unirla a las tablas del consumidor.

Estos casos se aplican después de hacer referencia a una tabla del catálogo de datos de AWS de Redshift mediante CREATE EXTERNAL SCHEMA. Cualquier tabla del catálogo de datos de AWS puede ser el origen.

nota

Las tablas de lago de datos que se agregan a un recurso compartido de datos pueden incluir tablas registradas en Lake Formation y tablas de catálogos de datos de AWS Glue.

Creación de un esquema externo y una tabla externa

Puede crear un esquema externo y una tabla externa para agregarlos al recurso compartido de datos en las secciones siguientes. Estos son pasos preliminares. Si ya lo ha hecho, puede omitir esta sección.

  1. En el productor, cree un esquema externo que haga referencia a los datos del lago de datos almacenados en Amazon S3. El esquema externo hace referencia al catálogo de datos de AWS Glue. El rol y la región de la muestra son ejemplos:

    CREATE EXTERNAL SCHEMA external_schema_name FROM DATA CATALOG DATABASE 'glue_database_name' IAM_ROLE 'arn:aws:iam::123456789012:role/sample-role' REGION 'us-east-1';
  2. Cree una tabla de lago de datos en el esquema externo.

    CREATE EXTERNAL TABLE external_schema_name.sales( salesid INTEGER, sellerid INTEGER, buyerid INTEGER, saledate DATE, pricepaid DECIMAL(8,2)) ROW FORMAT delimited FIELDS TERMINATED BY '\t' STORED AS textfile LOCATION 's3://redshift-downloads/tickit/spectrum/sales/';

    El ejemplo incluye LOCATION. Debe estar en el formulario s3://{bucket_name}/{folder}/, el que se especifica la carpeta. La carpeta debe tener una longitud mínima de un carácter. Si lo desea, puede incluir subcarpetas. Para ver ejemplos adicionales de creación de tablas en un lago de datos, consulte Ejemplos de CREATE EXTERNAL TABLE.

    nota

    Solo se permite el uso compartido para las tablas en las que el rol de IAM del productor tenga acceso SELECT sobre la tabla.

Agregue una vista de enlace tardío que haga referencia a una tabla de un lago de datos a un recurso compartido de datos

Cuando crea tablas en función de un esquema externo del catálogo de datos de AWS y desea agregarlas a un recurso compartido de datos, la forma más común de hacerlo es agregar una vista de enlace tardío de Redshift que haga referencia a la tabla que creó, que contiene datos del lago de datos. El procedimiento siguiente muestra los pasos:

  1. Cree una vista de enlace tardío que haga referencia a la tabla externa que creó anteriormente:

    CREATE VIEW lbv AS select * from external_schema_name.sales, other_schema.t1 WITH NO SCHEMA BINDING;
  2. Agregue el esquema de la vista al recurso compartido de datos. Este es el esquema local que contiene la vista de enlace tardío.

    ALTER DATASHARE dsx_datashare ADD SCHEMA public;
  3. Agregue el esquema que contiene la tabla a la que hace referencia la vista de enlace tardío al recurso compartido de datos. Es necesario agregar el esquema para cualquier tabla base a la que se haga referencia en una vista que se agregue a un recurso compartido de datos, ya sea que el esquema contenga objetos de una base de datos local u objetos de un lago de datos. Tenga en cuenta que debe agregar este esquema antes de agregar la vista de enlace tardío.

    ALTER DATASHARE dsx_datashare ADD SCHEMA external_schema_name; ALTER DATASHARE dsx_datashare ADD SCHEMA other_schema;
  4. Agregue la vista al recurso compartido de datos, mediante un comando SQL. Tenga en cuenta que el nombre de la tabla incluye el prefijo del esquema.

    ALTER DATASHARE my_datashare ADD TABLE public.lbv;
  5. Confirme que la vista y los esquemas se hayan agregado correctamente al recurso compartido de datos:

    SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';
  6. El administrador consumidor crea una base de datos a partir del recurso compartido de datos y, a continuación, concede el uso a los usuarios consumidores.

Tras completar los pasos, los usuarios consumidores de la base de datos con acceso a la vista del recurso compartido de datos pueden consultar los datos.

Agregación de una tabla de lago de datos directamente a un recurso compartido de datos

La agregación de una tabla de un esquema externo a un recurso compartido de datos es similar a agregar una vista. Esto funciona bien en los casos en los que un consumidor quiere consultar la tabla del lago de datos en su estado original o si quiere unirla a las tablas del almacenamiento de datos del consumidor. Los pasos siguientes muestran cómo agregar una tabla de lago de datos a un recurso compartido de datos mediante SQL.

  1. Cree un esquema externo y una tabla externa, tal y como se describe en la primera sección de este tema.

  2. Descubra las tablas existentes en el esquema externo para confirmar que la tabla que ha creado está disponible:

    SELECT * FROM svv_external_tables WHERE schemaname = 'external_schema_name';
  3. Agregue el esquema externo al recurso compartido de datos:

    ALTER DATASHARE my_datashare ADD SCHEMA external_schema_name;
  4. Agregue la tabla externa al recurso compartido de datos. Tenga en cuenta que el nombre de la tabla incluye el prefijo del esquema:

    ALTER DATASHARE my_datashare ADD TABLE external_schema_name.sales;
  5. Confirme que la tabla se ha agregado correctamente al recurso compartido de datos:

    SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';

    Para obtener instrucciones más detalladas, consulte Compartir el acceso de lectura a los datos de una cuenta de AWS.

  6. En el caso del consumidor, que es la base de datos que recibe los datos compartidos, el administrador asocia el recurso compartido de datos para que los usuarios puedan consultarlas en las tablas compartidas. Para obtener más información sobre cómo realizar este paso, consulte Administrar los datos compartidos de otras cuentas como consumidor.

Una vez que los administradores hayan completado los pasos, los usuarios de la base de datos del consumidor pueden escribir consultas para recuperar los datos de la tabla compartida y unirlos a otras tablas del consumidor.

Notas de uso para agregar objetos de lago de datos a un recurso compartido de datos

Hay varios elementos que se deben tener en cuenta al utilizar tablas y vistas de un lago de datos en un recurso compartido de datos:

  • Iniciar sesión con AWS CloudTrail: la cuenta del productor de datos puede usar los registros de AWS CloudTrail para auditar cuándo se accede a las tablas del lago de datos compartidas a través de un recurso compartido de datos:

    • Uso de datos de registro para controlar el acceso a los datos: los registros de CloudTrail registran detalles sobre quién accede a las tablas compartidas, incluidos los productores y consumidores de recurso compartido de datos de Redshift. Los identificadores están disponibles en el campo ExternalId en los registros de AssumeRole CloudTrail. El propietario de los datos puede configurar limitaciones adicionales al acceso a los datos en una política de IAM mediante acciones. Para obtener más información sobre cómo definir el acceso a los datos mediante políticas, consulte Acceso a cuentas de AWS propiedad de terceros.

  • Seguridad y permisos de consumidor: en el caso de las tablas registradas de Lake Formation, Lake Formation protege los recursos de Amazon S3 y los pone a disposición mediante las credenciales proporcionadas por Lake Formation.

Consideraciones de facturación para agregar objetos de lago de datos a un recurso compartido de datos

A continuación, se detalla cómo se atribuyen los costos del almacenamiento y el escaneo de los objetos del lago de datos en un recurso compartido de datos:

  • Cuando un consumidor consulta objetos compartidos de un lago de datos, el costo del escaneo se factura al consumidor.

    • Cuando el consumidor es un clúster aprovisionado, Redshift usa Redshift Spectrum para escanear los datos de Amazon S3. Por lo tanto, el costo de Spectrum se factura a la cuenta del consumidor.

    • Cuando el consumidor es un grupo de trabajo de Amazon Redshift sin servidor, Spectrum no cobra de forma independiente.

  • Los costes de almacenamiento y operaciones de Amazon S3, como la lista de los buckets, se facturan a la cuenta propietaria de cada bucket de Amazon S3.

Para obtener información adicional sobre facturación para Amazon Redshift sin servidor, consulte Facturación para Amazon Redshift sin servidor. Encontrará más información sobre facturación y precios en Precios de Amazon Redshift.