Uso compartido del acceso de escritura a los datos (versión preliminar) - Amazon Redshift

Uso compartido del acceso de escritura a los datos (versión preliminar)

Puede compartir objetos de base de datos para lecturas y escrituras entre distintos clústeres de Amazon Redshift o grupos de trabajo de Amazon Redshift sin servidor dentro de la misma Cuenta de AWS, entre cuentas y entre regiones. En este tema, se explican los procedimientos para configurar el uso compartido de datos que incluye permisos de escritura. Puede conceder permisos como SELECT, INSERT y UPDATE para distintas tablas y USAGE y CREATE para esquemas. Los datos están activos y disponibles para todos los almacenes en cuanto se confirma una transacción de escritura. Los administradores de cuentas de productor pueden determinar si los espacios de nombres o regiones específicos tienen acceso a los datos de solo lectura, lectura y escritura o cualquier otro tipo de acceso.

En las secciones siguientes se muestra cómo configurar el uso compartido de datos. Los procedimientos suponen que está trabajando en una base de datos de un clúster aprovisionado o de un grupo de trabajo de Amazon Redshift sin servidor.

Uso compartido de datos de solo lectura o uso compartido de datos para lecturas y escrituras

Anteriormente, los objetos de los recursos compartidos de datos eran de solo lectura en todas las circunstancias. Escribir en un objeto de un recurso compartido de datos es una característica nueva. Los objetos de los recursos compartidos de datos solo están habilitados para escritura cuando un productor concede específicamente privilegios de escritura, como INSERT o CREATE, a los objetos del recurso compartido de datos. Además, para el uso compartido entre cuentas, el productor debe autorizar las escrituras en el recurso compartido de datos y el consumidor debe asociar clústeres y grupos de trabajo específicos para las escrituras. En las siguientes secciones de este tema se explican con mayor detalle.

Permisos que puede conceder a los recursos compartidos de datos (versión preliminar)

Puede concederles distintos tipos de objetos y varios permisos en un contexto de uso compartido de datos.

Esquemas:

  • USAGE

  • CREATE

Tablas:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • TRUNCATE

  • DROP

  • REFERENCES

Funciones:

  • EXECUTE

Bases de datos:

  • CREATE

Requisitos y limitaciones para el recurso compartido de datos en la versión preliminar

  • Conexiones: debe estar conectado directamente a una base de datos del recurso compartido de datos o ejecutar el comando USE para escribir en recursos compartidos de datos. Sin embargo, pronto habilitaremos esta opción con una notación de tres partes.

  • Disponibilidad: debe utilizar grupos de trabajo sin servidor y clústeres ra3.4xl o ra3.16xl para utilizar esta característica. Está prevista la compatibilidad con los clústeres ra3.xlplus.

  • Descubrimiento de metadatos: si es un consumidor conectado directamente a una base de datos de recurso compartido de datos mediante los controladores Redshift JDBC, ODBC o Python, puede ver los datos del catálogo de las siguientes maneras:

  • API de datos: no puede conectarse a bases de datos del recurso compartido de datos a través de la API de datos. Pronto serán compatibles.

  • Visibilidad de permisos: los consumidores no pueden ver los permisos concedidos a los recursos compartidos de datos. Esto cambiará pronto.

  • Cifrado: para compartir datos entre cuentas, tanto el clúster productor como el consumidor deben estar cifrados.

  • Nivel de aislamiento: el nivel de aislamiento de su base de datos debe ser de instantáneas para permitir que otros grupos de trabajo sin servidor y clústeres escriban en ella.

  • Operaciones automáticas: los consumidores que escriban en objetos de recursos compartidos de datos no desencadenarán ninguna operación de análisis automático. Como resultado, el productor debe ejecutar el análisis manualmente después de insertar los datos en la tabla para actualizar las estadísticas de la tabla. Sin esto, los planes de consulta podrían no ser óptimos.

  • Consultas y transacciones de varias instrucciones: actualmente no se admiten las consultas de varias instrucciones fuera de un bloque de transacciones. Por tanto, si utiliza un editor de consultas como dbeaver y tiene varias consultas de escritura, debe incluir las consultas en una instrucción de transacción explícita BEGIN...END.

Instrucciones SQL compatibles

Estas instrucciones son compatibles con la versión preliminar pública del intercambio de datos con las escrituras:

  • BEGIN | START TRANSACTION

  • END | COMMIT | ROLLBACK

  • COPY sin COMPUPDATE

  • { CREATE | DROP } SCHEMA

  • { CREATE | DROP | SHOW } TABLE

  • CREATE TABLE table_name AS

  • DELETE

  • { GRANT | REVOKE } privilege_name ON OBJECT_TYPE object_name TO consumer_user

  • INSERT

  • SELECT

  • INSERT INTO SELECT

  • TRUNCATE

  • UPDATE

  • Columnas de tipos de superdatos

Tipos de instrucción no compatibles. No se admite lo siguiente:

  • Consultas de varias instrucciones a los almacenes de los consumidores cuando se escribe a los productores.

  • Consultas de escalación simultáneas que se escriben de los consumidores a los productores.

  • Trabajos de copia automática que se escriben de los consumidores a los productores.

  • Trabajos de transmisión que se escriben de los consumidores a los productores.

  • Consumidores que crean tablas de integración sin ETL en clústeres de productores. Para obtener información sobre las integraciones sin ETL, consulte Uso de integraciones sin ETL.

  • Escribir en una tabla con una clave de clasificación intercalada.

Uso compartido de datos en una cuenta con permisos de escritura como administrador de la cuenta del productor (versión preliminar)

Anteriormente, los objetos de los recursos compartidos de datos eran de solo lectura en todas las circunstancias. Escribir en un objeto de un recurso compartido de datos es una característica nueva. Los objetos de los recursos compartidos de datos solo están habilitados para escritura cuando un productor concede específicamente privilegios de escritura, como INSERT o CREATE, a los objetos del recurso compartido de datos. En las siguientes secciones de este tema se explican con mayor detalle.

Si busca la documentación existente sobre los recursos compartidos de datos de solo lectura, está disponible en Compartir datos entre clústeres en Amazon Redshift.

Para empezar a compartir datos, el administrador del productor crea un recurso compartido de datos y le añade objetos:

  1. El propietario o superusuario de la base de datos del productor crea un recurso compartido de datos. Un recurso compartido de datos es un contenedor lógico de objetos, permisos y consumidores de la base de datos. (Los consumidores son clústeres o espacios de nombres de Amazon Redshift sin servidor en su cuenta y en otras cuentas). Cada recurso compartido de datos está asociado a la base de datos en la que se creó y solo se pueden agregar objetos de esa base de datos. El siguiente comando crea un recurso compartido de datos:

    CREATE DATASHARE my_datashare [PUBLICACCESSIBLE = TRUE];

    Si se establece PUBLICACCESSIBLE como TRUE, los consumidores pueden consultar su recurso compartido de datos desde clústeres de acceso público y grupos de trabajo aprovisionados. Omita esta opción o defínala explícitamente como falsa si no quiere permitirla.

    El propietario del recurso compartido de datos debe otorgar USAGE sobre los esquemas que quiera añadir al recurso compartido de datos. El comando GRANT es nuevo. Se utiliza para conceder varias acciones en el esquema, incluidas CREATE y USAGE. Los esquemas contienen objetos compartidos:

    CREATE SCHEMA myshared_schema1; CREATE SCHEMA myshared_schema2; GRANT USAGE ON SCHEMA myshared_schema1 TO DATASHARE my_datashare; GRANT CREATE, USAGE ON SCHEMA myshared_schema2 TO DATASHARE my_datashare;

    Como alternativa, el administrador puede seguir ejecutando los comandos ALTER para añadir un esquema al recurso compartido de datos. Solo se conceden permisos de USAGE cuando se agrega un esquema de esta manera.

    ALTER DATASHARE my_datashare ADD SCHEMA myshared_schema1;
  2. Una vez que el administrador ha agregado los esquemas, puede conceder permisos de recurso compartido de datos sobre los objetos del esquema. Pueden ser permisos de lectura y escritura. En el ejemplo GRANT ALL se muestra cómo conceder todos los permisos.

    GRANT SELECT, INSERT ON TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1 TO DATASHARE my_datashare; GRANT ALL ON TABLE myshared_schema1.table4 TO DATASHARE my_datashare;

    Puede seguir ejecutando comandos como ALTER DATASHARE para añadir tablas. Cuando lo haga, solo se concederán los permisos SELECT a los objetos añadidos.

    ALTER DATASHARE my_datashare ADD TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1;
  3. El administrador concede el uso del recurso compartido de datos a un espacio de nombres específico de la cuenta. Encontrará el ID del espacio de nombres como parte del ARN en la página de detalles del clúster, en la página de detalles del espacio de nombres de Amazon Redshift sin servidor o al ejecutar el comando SELECT current_namespace;. Para obtener más información, consulte CURRENT_NAMESPACE.

    GRANT USAGE ON DATASHARE my_datashare TO NAMESPACE '86b5169f-012a-234b-9fbb-e2e24359e9a8';