Revisa en este artículo cómo transferir datos desde una base de datos relacional con permisos limitados a un sistema de archivos con permisos ilimitados - Skoop.IO
Las empresas requieren extraer grandes cantidades de datos desde diferentes bases de datos, transformarlos y enriquecerlos para que estos generen un valor agregado al negocio.
El proceso de extracción suele ser complejo de desarrollar, porque, en algunos casos, el proveedor de esos datos entrega acceso solo a las vistas y generalmente accesos limitados a la base de datos. Esto hace sentido por seguridad y buenas prácticas. Ahora, ¿Cómo extraemos los datos teniendo accesos limitados a la base de datos de los proveedores? ¿Qué alternativas tenemos? ¿Cómo desarrollamos la extracción de tal manera que funcione independientemente del motor de base de datos? Sigue leyendo.
Conceptos Básicos.
Antes de empezar, revisaremos algunos conceptos sobre big data y las herramientas Apache Sqoop, Apache Hadoop, Aws EMR y Aws DynamoDB.
Big data: Es un término que describe el gran volumen de datos, tanto estructurados como no estructurados, que inundan los negocios cada día. Pero no es la cantidad de datos lo que es importante. Lo que importa con el Big Data es lo que las organizaciones hacen con los datos. Big Data se puede analizar para obtener ideas que conduzcan a mejores decisiones y movimientos de negocios estratégicos. Fuente https://www.powerdata.es/big-data
Apache Sqoop: Es una herramienta diseñada para transferir de manera eficiente datos masivos entre Apache Hadoop y almacenes de datos estructurados como bases de datos relacionales o viceversa. Fuente: https://sqoop.apache.org/
Apache Hadoop: Es un framework de código abierto que permite el almacenamiento distribuido y el procesamiento de grandes conjuntos de datos en base a un hardware comercial. Dentro de Apache Hadoop se encuentra HDFS (Hadoop File System) quién es el encargado de almacenar grandes cantidades de datos con escalamiento horizontal, utilizando MapReduce para el procesamiento de estos datos. Fuente: https://blog.powerdata.es/el-valor-de-la-gestion-de-datos/bid/397377/qu-es-el-apache-hadoop
AWS EMR: Amazon EMR es una plataforma de clúster administrada que simplifica la ejecución de los marcos de trabajo de Big Data, tales como Apache Hadoop y Apache Spark en AWS para procesar y analizar grandes cantidades de datos. Fuente: https://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/emr-what-is-emr.html
AWS DynamoDB: Es una base de datos clave-valor no relacional. Fuente: https://aws.amazon.com/es/dynamodb/
Ahora que conocemos estos conceptos de manera general, explicaré cómo utilizamos estas herramientas en una solución que la llamamos “Skoop-IO”.
Existen distintas alternativas de extracción de base de datos para big data, pero el que más se acomoda a nuestros requerimientos es sqoop, gracias a que esta es una herramienta especializada en la extracción de datos y además es open source. Desarrollamos Skoop-IO basado en la herramienta de extracción sqoop.
Skoop-IO es un programa capaz de extraer los registros de distintos motores de base de datos, independiente de la limitación de los mismos. El procesamiento es automático y lo único manual es configurar las credenciales y el tipo de procesamiento (full, parcial o incremental).
Tipos de cargas
Actualmente Skoop-io tiene 3 tipos de carga, completamente configurables para la importación de los datos a un bucket S3 en AWS.
Full: Obtiene todos los datos desde la base de datos y los deja en el bucket s3 en formato avro.
Parcial: Obtiene todos los datos utilizando un campo de tipo fecha de los últimos meses que se configuren.
Incremental: Obtiene registros inexistentes en nuestro almacenamiento en s3 en cada consulta a skoop-io.
Arquitectura.
Para realizar Skoop-io utilizamos recursos de AWS, específicamente EMR como cluster para la ejecución del programa, DynamoDB para la configuración de importación de datos y S3 para el almacenamiento de los datos importados.
Gracias a las herramientas de Big Data y recursos en la nube (AWS en este caso), logramos implementar rápidamente una solución estable de extracción de datos relacionales, independiente de los motores de base de datos o los accesos limitados de los proveedores.