Migrar desde IBM Netezza

En este documento se ofrecen directrices generales sobre cómo migrar de Netezza a BigQuery. Describe las diferencias arquitectónicas fundamentales entre Netezza y BigQuery, así como las funciones adicionales que ofrece BigQuery. También se muestra cómo puedes replantearte tu modelo de datos y tus procesos de extracción, transformación y carga (ETL) para maximizar las ventajas de BigQuery.

Este documento está dirigido a arquitectos empresariales, administradores de bases de datos, desarrolladores de aplicaciones y profesionales de seguridad de TI que quieran migrar de Netezza a BigQuery y resolver los problemas técnicos que surjan durante el proceso de migración. En este documento se ofrecen detalles sobre las siguientes fases del proceso de migración:

  • Exportar datos
  • Ingerir datos
  • Aprovechar herramientas de terceros

También puedes usar la traducción de SQL por lotes para migrar tus secuencias de comandos SQL en bloque o la traducción de SQL interactiva para traducir consultas específicas. IBM Netezza SQL/NZPLSQL es compatible con ambas herramientas en versión preliminar.

Comparación de arquitecturas

Netezza es un sistema potente que puede ayudarte a almacenar y analizar grandes cantidades de datos. Sin embargo, un sistema como Netezza requiere grandes inversiones en hardware, mantenimiento y licencias. Puede ser difícil de escalar debido a los problemas que plantea la gestión de nodos, el volumen de datos por fuente y los costes de archivado. Con Netezza, la capacidad de almacenamiento y procesamiento está limitada por los dispositivos de hardware. Cuando se alcanza la utilización máxima, el proceso de ampliación de la capacidad del dispositivo es complejo y, a veces, ni siquiera es posible.

Con BigQuery, no tienes que gestionar la infraestructura ni necesitas un administrador de bases de datos. BigQuery es un almacén de datos sin servidor, totalmente gestionado y a escala de petabytes que puede analizar miles de millones de filas sin índice en decenas de segundos. Como BigQuery comparte la infraestructura de Google, puede paralelizar cada consulta y ejecutarla en decenas de miles de servidores simultáneamente. Las siguientes tecnologías principales distinguen a BigQuery:

  • Almacenamiento en columnas. Los datos se almacenan en columnas en lugar de en filas, lo que permite conseguir una relación de compresión y un rendimiento de análisis muy altos.
  • Arquitectura de árbol. Las consultas se envían y los resultados se agregan en miles de máquinas en cuestión de segundos.

Arquitectura de Netezza

Netezza es un dispositivo con aceleración de hardware que incluye una capa de abstracción de datos de software. La capa de abstracción de datos gestiona la distribución de datos en el dispositivo y optimiza las consultas distribuyendo el procesamiento de datos entre las CPUs y las FPGAs subyacentes.

Los modelos Netezza TwinFin y Striper llegaron al final de su ciclo de asistencia en junio del 2019.

En el siguiente diagrama se muestran las capas de abstracción de datos de Netezza:

imagen

En el diagrama se muestran las siguientes capas de abstracción de datos:

  • Carcasa de disco. El espacio físico del interior del dispositivo donde se montan los discos.
  • Discos. Las unidades físicas de las carcasas de los discos almacenan las bases de datos y las tablas.
  • Segmentos de datos. Representación lógica de los datos que se guardan en un disco. Los datos se distribuyen entre las particiones de datos mediante una clave de distribución. Puedes monitorizar el estado de las porciones de datos mediante comandos nzds.
  • Particiones de datos. Representación lógica de una porción de datos gestionada por unidades de procesamiento de fragmentos (SPUs) específicas. Cada SPU tiene una o varias particiones de datos que contienen los datos de usuario que el SPU debe procesar durante las consultas.

Todos los componentes del sistema están conectados mediante una estructura de red. El dispositivo Netezza ejecuta un protocolo personalizado basado en direcciones IP.

Arquitectura de BigQuery

BigQuery es un almacén de datos empresariales totalmente gestionado que te ayuda a gestionar y analizar tus datos con funciones integradas como el aprendizaje automático, el análisis geoespacial y la inteligencia empresarial. Para obtener más información, consulta ¿Qué es BigQuery?

BigQuery se encarga del almacenamiento y la computación para proporcionar un almacenamiento de datos duradero y respuestas de alto rendimiento a las consultas analíticas. Para obtener más información, consulta el artículo Qué es BigQuery.

Para obtener información sobre los precios de BigQuery, consulta el artículo Información sobre la escalabilidad rápida y los precios sencillos de BigQuery.

Antes de la migración

Para que la migración del almacén de datos se lleve a cabo correctamente, empieza a planificar tu estrategia de migración al principio del proyecto. Para obtener información sobre cómo planificar sistemáticamente el trabajo de migración, consulta Qué migrar y cómo hacerlo: el marco de migración.

Planificación de la capacidad de BigQuery

El rendimiento de Analytics en BigQuery se mide en ranuras. Las ranuras de BigQuery son las unidades de computación, RAM y rendimiento de red propias de Google que se necesitan para ejecutar consultas de SQL. BigQuery calcula automáticamente cuántas ranuras necesita cada consulta en función de su tamaño y de su complejidad.

Para ejecutar consultas en BigQuery, selecciona uno de los siguientes modelos de precios:

  • Bajo demanda: El modelo de precios predeterminado, en el que se te cobra por el número de bytes procesados por cada consulta.
  • Precios basados en la capacidad: Adquieres ranuras, que son CPUs virtuales. Al comprar ranuras, adquieres funciones de procesamiento específicas que se pueden utilizar para ejecutar consultas. Las ranuras están disponibles en los siguientes planes de compromiso:
    • Anual. Adquieres un compromiso de 365 días.
    • Tres años. Adquieres un compromiso de 365 días por 3.

Un slot de BigQuery comparte algunas similitudes con las SPUs de Netezza, como la CPU, la memoria y el procesamiento de datos. Sin embargo, no representan la misma unidad de medida. Las SPUs de Netezza tienen una asignación fija a los componentes de hardware subyacentes, mientras que el slot de BigQuery representa una CPU virtual que se usa para ejecutar consultas. Para ayudarte a estimar las ranuras, te recomendamos que configures la monitorización de BigQuery con Cloud Monitoring y analices tus registros de auditoría con BigQuery. Para visualizar la utilización de las ranuras de BigQuery, también puedes usar herramientas como Looker Studio o Looker. Monitorizar y analizar periódicamente el uso de tus espacios publicitarios te ayuda a estimar cuántos espacios publicitarios necesita tu organización a medida que creces en Google Cloud.

Por ejemplo, supongamos que inicialmente reservas 2000 ranuras de BigQuery para ejecutar 50 consultas de complejidad media simultáneamente. Si las consultas tardan más de unas horas en ejecutarse de forma constante y tus paneles de control muestran una alta utilización de las ranuras, es posible que las consultas no estén optimizadas o que necesites ranuras de BigQuery adicionales para admitir tus cargas de trabajo. Para comprar slots con compromisos anuales o trienales, puedes crear reservas de BigQuery con la Google Cloud consola o la herramienta de línea de comandos bq. Si has firmado un contrato offline por la compra de la tarifa basada en la capacidad, tu plan puede ser diferente a lo descrito en esta página.

Para obtener información sobre cómo controlar los costes de almacenamiento y de procesamiento de consultas en BigQuery, consulta el artículo sobre cómo optimizar las cargas de trabajo.

Seguridad en Google Cloud

En las siguientes secciones se describen los controles de seguridad habituales de Netezza y cómo puedes ayudar a proteger tu almacén de datos en un entorno de Google Cloud .

Gestión de identidades y accesos

La base de datos de Netezza contiene un conjunto de funciones de control de acceso del sistema totalmente integradas que permiten a los usuarios acceder a los recursos para los que están autorizados.

El acceso a Netezza se controla a través de la red al dispositivo Netezza gestionando las cuentas de usuario de Linux que pueden iniciar sesión en el sistema operativo. El acceso a la base de datos, los objetos y las tareas de Netezza se gestiona mediante las cuentas de usuario de la base de datos de Netezza, que pueden establecer conexiones SQL con el sistema.

BigQuery usa el servicio Gestión de Identidades y Accesos (IAM) de Google para gestionar el acceso a los recursos. Los tipos de recursos disponibles en BigQuery son organizaciones, proyectos, conjuntos de datos, tablas y vistas. En la jerarquía de políticas de gestión de identidades y accesos, los conjuntos de datos son recursos secundarios de los proyectos. Una tabla hereda los permisos del conjunto de datos que la contiene.

Para conceder acceso a un recurso, asigna uno o varios roles a un usuario, un grupo o una cuenta de servicio. Los roles de organización y de proyecto controlan el acceso para ejecutar trabajos o gestionar el proyecto, mientras que los roles de conjunto de datos controlan el acceso para ver o modificar los datos de un proyecto.

IAM proporciona los siguientes tipos de roles:

  • Roles predefinidos: Para admitir casos de uso habituales y patrones de control de acceso.
  • Roles básicos Incluye los roles Propietario, Editor y Lector. Los roles básicos proporcionan acceso granular a un servicio específico y los gestiona Google Cloud.
  • Roles personalizados Proporcionar acceso granular según una lista de permisos especificada por el usuario.

Cuando asignas roles predefinidos y básicos a un usuario, los permisos que se le conceden son la unión de los permisos de cada rol.

Seguridad a nivel de fila

La seguridad multinivel es un modelo de seguridad abstracto que usa Netezza para definir reglas que controlan el acceso de los usuarios a las tablas protegidas por filas (RSTs). Una tabla protegida a nivel de fila es una tabla de base de datos con etiquetas de seguridad en las filas para filtrar a los usuarios que no tienen los privilegios adecuados. Los resultados que se devuelven en las consultas varían en función de los privilegios del usuario que realiza la consulta.

Para conseguir la seguridad a nivel de fila en BigQuery, puedes usar vistas autorizadas y políticas de acceso a nivel de fila. Para obtener más información sobre cómo diseñar e implementar estas políticas, consulta la introducción a la seguridad a nivel de fila de BigQuery.

Encriptado de datos

Los dispositivos Netezza usan unidades de autocifrado (SEDs) para mejorar la seguridad y la protección de los datos almacenados en el dispositivo. Las unidades SED cifran los datos cuando se escriben en el disco. Cada disco tiene una clave de cifrado de disco (DEK) que se define en la fábrica y se almacena en el disco. El disco usa la DEK para cifrar los datos mientras se escriben y, a continuación, para descifrarlos cuando se leen del disco. El funcionamiento del disco, así como su cifrado y descifrado, es transparente para los usuarios que leen y escriben datos. Este modo predeterminado de cifrado y descifrado se denomina modo de borrado seguro.

En el modo de borrado seguro, no necesitas una clave de autenticación ni una contraseña para descifrar y leer los datos. Los SEDs ofrecen funciones mejoradas para borrar de forma segura, fácil y rápida los datos en situaciones en las que los discos deben reutilizarse o devolverse por motivos de asistencia o garantía.

Netezza usa el cifrado simétrico. Si tus datos están cifrados a nivel de campo, la siguiente función de descifrado puede ayudarte a leer y exportar datos:

varchar = decrypt(varchar text, varchar key [, int algorithm [, varchar IV]]);
nvarchar = decrypt(nvarchar text, nvarchar key [, int algorithm[, varchar IV]]);

Todos los datos almacenados en BigQuery están cifrados en reposo. Si quieres controlar el cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEK) en BigQuery. Con las CMEK, en lugar de que Google gestione las claves de cifrado de claves que protegen tus datos, tú controlas y gestionas las claves de cifrado de claves en Cloud Key Management Service. Para obtener más información, consulta Cifrado en reposo.

Comparativas de rendimiento

Para monitorizar el progreso y las mejoras durante el proceso de migración, es importante establecer un rendimiento de referencia para el entorno de Netezza actual. Para establecer la base de referencia, selecciona un conjunto de consultas representativas que se obtienen de las aplicaciones de consumo (como Tableau o Cognos).

Entorno Netezza BigQuery
Tamaño de los datos size TB -
Consulta 1: nombre (búsqueda en la tabla completa) mm:ss.ms -
Consulta 2: name mm:ss.ms -
Consulta 3: name mm:ss.ms -
Total mm:ss.ms -

Configuración básica del proyecto

Antes de aprovisionar recursos de almacenamiento para migrar datos, debes completar la configuración del proyecto.

Conectividad de red

Se requiere una conexión de red fiable y segura entre el centro de datos local (donde se ejecuta la instancia de Netezza) y el entorno de Google Cloud. Para obtener información sobre cómo proteger tu conexión, consulta la introducción al gobierno de datos en BigQuery. Cuando subes extractos de datos, el ancho de banda de la red puede ser un factor limitante. Para obtener información sobre cómo cumplir los requisitos de transferencia de datos, consulta el artículo Aumentar el ancho de banda de la red.

Tipos de datos y propiedades admitidos

Los tipos de datos de Netezza son diferentes de los de BigQuery. Para obtener información sobre los tipos de datos de BigQuery, consulta Tipos de datos. Para ver una comparación detallada entre los tipos de datos de Netezza y BigQuery, consulta la guía de traducción de SQL de IBM Netezza.

Comparación de SQL

El SQL de datos de Netezza consta de DDL, DML y lenguaje de control de datos (DCL) exclusivo de Netezza, que son diferentes de GoogleSQL. GoogleSQL cumple el estándar SQL 2011 y tiene extensiones que admiten consultas de datos anidados y repetidos. Si usas el SQL antiguo de BigQuery, consulta Funciones y operadores de SQL antiguo. Para ver una comparación detallada entre el SQL y las funciones de Netezza y BigQuery, consulta la guía de traducción de SQL de IBM Netezza.

Para ayudarte con la migración de tu código SQL, usa la traducción de SQL por lotes para migrar tu código SQL en bloque o la traducción de SQL interactiva para traducir consultas ad hoc.

Comparación de funciones

Es importante entender cómo se asignan las funciones de Netezza a las funciones de BigQuery. Por ejemplo, la función Months_Between de Netezza devuelve un decimal, mientras que la función DateDiff de BigQuery devuelve un entero. Por lo tanto, debes usar una función definida por el usuario (UDF) personalizada para obtener el tipo de datos correcto. Para ver una comparación detallada entre las funciones de Netezza SQL y GoogleSQL, consulta la guía de traducción de IBM Netezza SQL.

Migración de datos

Para migrar datos de Netezza a BigQuery, debe exportar los datos de Netezza, transferirlos y almacenarlos provisionalmente en Google Cloudy, a continuación, cargarlos en BigQuery. En esta sección, se ofrece una descripción general del proceso de migración de datos. Para obtener una descripción detallada del proceso de migración de datos, consulta Proceso de migración de esquemas y datos. Para ver una comparación detallada entre los tipos de datos admitidos en Netezza y BigQuery, consulta la guía de traducción de SQL de IBM Netezza.

Exportar datos de Netezza

Para explorar los datos de las tablas de la base de datos de Netezza, le recomendamos que los exporte a una tabla externa en formato CSV. Para obtener más información, consulta Descargar datos en un sistema cliente remoto. También puedes leer datos con sistemas de terceros, como Informatica (o ETL personalizado), mediante conectores JDBC/ODBC para generar archivos CSV.

Netezza solo admite la exportación de archivos sin comprimir (CSV) de cada tabla. Sin embargo, si exportas tablas grandes, el archivo CSV sin comprimir puede ser muy grande. Si es posible, convierta el archivo CSV a un formato compatible con esquemas, como Parquet, Avro u ORC, lo que dará como resultado archivos de exportación más pequeños y fiables. Si CSV es el único formato disponible, le recomendamos que comprima los archivos de exportación para reducir su tamaño antes de subirlos a Google Cloud. Reducir el tamaño del archivo ayuda a que la subida sea más rápida y aumenta la fiabilidad de la transferencia. Si transfieres archivos a Cloud Storage, puedes usar la marca --gzip-local en un comando gcloud storage cp, que comprime los archivos antes de subirlos.

Transferencia y almacenamiento provisional de datos

Una vez que se hayan exportado los datos, deberán transferirse y almacenarse enGoogle Cloud. Hay varias opciones para transferir los datos, en función de la cantidad de datos que quieras transferir y del ancho de banda de la red disponible. Para obtener más información, consulta el artículo Información general sobre la transferencia de esquemas y datos.

Cuando usas la CLI de Google Cloud, puedes automatizar y paralelizar la transferencia de archivos a Cloud Storage. Limita el tamaño de los archivos a 4 TB (sin comprimir) para que se carguen más rápido en BigQuery. Sin embargo, debes exportar el esquema antes. Es una buena oportunidad para optimizar BigQuery mediante la creación de particiones y clústeres.

Usa gcloud storage bucket create para crear los segmentos de almacenamiento provisional de los datos exportados y gcloud storage cp para transferir los archivos de exportación de datos a los segmentos de Cloud Storage.

La CLI de gcloud realiza automáticamente la operación de copia mediante una combinación de multihilo y multiproceso.

Cargar datos en BigQuery

Una vez que los datos se han almacenado provisionalmente en Google Cloud, hay varias opciones para cargarlos en BigQuery. Para obtener más información, consulta Cargar el esquema y los datos en BigQuery.

Herramientas y asistencia para partners

Puedes recibir asistencia de partners durante el proceso de migración. Para ayudarte con la migración de tu código SQL, usa la traducción de SQL por lotes para migrar tu código SQL en bloque.

Muchos Google Cloud partners también ofrecen servicios de migración de almacenes de datos. Para ver una lista de partners y las soluciones que ofrecen, consulta el artículo Colabora con un partner experto en BigQuery.

Después de la migración

Una vez que se haya completado la migración de datos, puedes empezar a optimizar el uso deGoogle Cloud para satisfacer las necesidades de tu empresa. Esto puede incluir el uso de las herramientas de exploración y visualización de Google Cloudpara obtener estadísticas para las partes interesadas de la empresa, optimizar las consultas de bajo rendimiento o desarrollar un programa para ayudar a los usuarios a adoptar el producto.

Conectarse a las APIs de BigQuery a través de Internet

En el siguiente diagrama se muestra cómo puede conectarse una aplicación externa a BigQuery mediante la API:

imagen

En el diagrama se muestran los siguientes pasos:

  1. En Google Cloud, se crea una cuenta de servicio con permisos de gestión de identidades y accesos. La clave de cuenta de servicio se genera en formato JSON y se copia en el servidor frontend (por ejemplo, MicroStrategy).
  2. El frontend lee la clave y solicita un token de OAuth a las APIs de Google a través de HTTPS.
  3. A continuación, el frontend envía solicitudes de BigQuery junto con el token a BigQuery.

Para obtener más información, consulta Autorizar solicitudes de API.

Optimizar las consultas para BigQuery

GoogleSQL cumple el estándar SQL 2011 y tiene extensiones que admiten consultas de datos anidados y repetidos. Optimizar las consultas de BigQuery es fundamental para mejorar el rendimiento y el tiempo de respuesta.

Sustituir la función Months_Between de BigQuery por una FDU

Netezza trata los días de un mes como 31. La siguiente función definida por el usuario personalizada recrea la función de Netezza con una precisión similar, que puedes llamar desde tus consultas:

CREATE TEMP FUNCTION months_between(date_1 DATE, date_2 DATE)
AS (
  CASE
    WHEN date_1 = date_2
      THEN 0
    WHEN EXTRACT(DAY FROM DATE_ADD(date_1, INTERVAL 1 DAY)) = 1
      AND EXTRACT(DAY FROM DATE_ADD(date_2, INTERVAL 1 DAY)) = 1
      THEN date_diff(date_1,date_2, MONTH)
    WHEN EXTRACT(DAY FROM date_1) = 1
      AND EXTRACT(DAY FROM DATE_ADD(date_2, INTERVAL 1 DAY)) = 1
      THEN date_diff(DATE_ADD(date_1, INTERVAL -1 DAY), date_2, MONTH) + 1/31
    ELSE date_diff(date_1, date_2, MONTH) - 1 + ((EXTRACT(DAY FROM date_1) + (31 - EXTRACT(DAY FROM date_2))) / 31)
    END
);

Migrar procedimientos almacenados de Netezza

Si usas procedimientos almacenados de Netezza en cargas de trabajo de ETL para crear tablas de hechos, debes migrar estos procedimientos almacenados a consultas SQL compatibles con BigQuery. Netezza usa el lenguaje de scripting NZPLSQL para trabajar con procedimientos almacenados. NZPLSQL se basa en el lenguaje PL/pgSQL de Postgres. Para obtener más información, consulta la guía de traducción de SQL de IBM Netezza.

UDF personalizada para emular ASCII de Netezza

La siguiente UDF personalizada de BigQuery corrige los errores de codificación de las columnas:

CREATE TEMP FUNCTION ascii(X STRING)
AS (TO_CODE_POINTS(x)[ OFFSET (0)]);

Siguientes pasos