Ingeniería de datos - Enciclopedia

La ingeniería de datos es un enfoque de ingeniería de software para la construcción de sistemas de datos, para permitir la recopilación y uso de datos. Estos datos se utilizan generalmente para habilitar análisis posteriores y ciencia de datos, lo que a menudo implica aprendizaje automático. Hacer que los datos sean útiles generalmente implica una computación sustancial y almacenamiento, así como procesamiento de datos.


Historia
A principios de los años 1970/1980, se creó el término metodología de ingeniería de información (IEM) para describir el diseño de bases de datos y el uso de software para el análisis y procesamiento de datos. Estas técnicas se diseñaron para ser utilizadas por administradores de bases de datos (DBA) y analistas de sistemas basados en una comprensión de las necesidades de procesamiento operacional de las organizaciones de los años 1980. En particular, estas técnicas estaban destinadas a ayudar a cerrar la brecha entre la planificación estratégica empresarial y los sistemas de información. Un contribuyente clave temprano (a menudo llamado el "padre" de la metodología de ingeniería de información) fue el australiano Clive Finkelstein, quien escribió varios artículos sobre el tema entre 1976 y 1980, y también coescribió un influyente informe del Instituto Savant sobre el tema con James Martin. Durante los siguientes años, Finkelstein continuó trabajando en una dirección más impulsada por el negocio, destinada a abordar un entorno empresarial en rápido cambio; Martin continuó trabajando en una dirección más impulsada por el procesamiento de datos. De 1983 a 1987, Charles M. Richter, guiado por Clive Finkelstein, jugó un papel significativo en la renovación de la IEM y ayudó a diseñar el producto de software IEM (datos de usuario), lo que ayudó a automatizar la IEM.
A principios de los años 2000, los datos y las herramientas de datos eran generalmente manejados por los equipos de tecnología de la información (TI) en la mayoría de las empresas. Otros equipos luego usaban datos para su trabajo (por ejemplo, informes), y generalmente había poco solapamiento en el conjunto de habilidades de datos entre estas partes del negocio.
A principios de los años 2010, con el auge de internet, el aumento masivo en volúmenes, velocidad y variedad de datos llevó al término big data para describir los datos en sí mismos, y empresas tecnológicas impulsadas por datos como Facebook y Airbnb comenzaron a usar la frase ingeniero de datos. Debido a la nueva escala de los datos, grandes empresas como Google, Facebook, Amazon, Apple, Microsoft y Netflix comenzaron a alejarse de técnicas tradicionales de ETL y almacenamiento. Comenzaron a crear ingeniería de datos, un tipo de ingeniería de software centrado en datos, y en particular en infraestructura, almacenamiento, protección de datos, ciberseguridad, minería, modelado, procesamiento y gestión de metadatos. Este cambio en el enfoque se centró particularmente en la computación en la nube. Los datos comenzaron a ser manejados y utilizados por muchas partes del negocio, como ventas y marketing, y no solo por TI.


Herramientas


= Computación =
La computación de alto rendimiento es crucial para el procesamiento y análisis de datos. Un enfoque particularmente difundido para la computación en ingeniería de datos es la programación de flujo de datos, en la que la computación se representa como un grafo dirigido (grafo de flujo de datos); los nodos son las operaciones y los bordes representan el flujo de datos. Implementaciones populares incluyen Apache Spark y TensorFlow específico para el aprendizaje profundo. Implementaciones más recientes, como Differential/Timely Dataflow, han utilizado la computación incremental para un procesamiento de datos mucho más eficiente.


= Almacenamiento =
Los datos se almacenan de diversas formas, uno de los factores decisivos clave es en cómo se utilizarán los datos.
Los ingenieros de datos optimizan los sistemas de almacenamiento y procesamiento de datos para reducir costos. Utilizan compresión de datos, particionamiento y archivado.


Bases de datos
Si los datos son estructurados y se requiere algún tipo de procesamiento de transacciones en línea, generalmente se utilizan bases de datos. Originalmente, se utilizaban principalmente bases de datos relacionales, con garantías de corrección de transacciones ACID fuertes; la mayoría de las bases de datos relacionales utilizan SQL para sus consultas. Sin embargo, con el crecimiento de los datos en los años 2010, las bases de datos NoSQL también se volvieron populares, ya que se pueden escalar horizontalmente más fácilmente que las bases de datos relacionales, renunciando a las garantías de transacciones ACID y reduciendo la incompatibilidad entre objetos y relaciones. Más recientemente, las bases de datos NewSQL, que intentan permitir la escalabilidad horizontal mientras mantienen garantías ACID, también se han vuelto populares.


Data warehouses

Si los datos son estructurados y se requiere procesamiento analítico en línea (pero no procesamiento de transacciones en línea), entonces los data warehouses son una opción principal. Permiten análisis, minería y inteligencia artificial en una escala mucho mayor de lo que permiten las bases de datos, y de hecho, los datos a menudo fluyen de bases de datos a data warehouses. Los analistas de negocios, ingenieros de datos y científicos de datos pueden acceder a los data warehouses utilizando herramientas como SQL o software de inteligencia de negocios.


Data lakes

Un data lake es un repositorio centralizado para almacenar, procesar y proteger grandes volúmenes de datos. Un data lake puede contener datos estructurados de bases de datos relacionales, datos semiestructurados, datos no estructurados y datos binarios. Un data lake se puede crear en un entorno local o en la nube utilizando servicios de proveedores de nube pública como Amazon, Microsoft o Google.


Archivos

Si los datos son menos estructurados, a menudo se almacenan simplemente como archivos. Hay varias opciones:

Los sistemas de archivos representan los datos jerárquicamente en carpetas anidadas.
El almacenamiento en bloques divide los datos en trozos de tamaño regular; esto a menudo coincide con (disco duro virtual) o discos duros de estado sólido.
El almacenamiento en objetos gestiona los datos utilizando metadatos; a menudo, se asigna una clave a cada archivo, como un UUID.


= Gestión =

El número y variedad de diferentes procesos de datos y ubicaciones de almacenamiento pueden volverse abrumadores para los usuarios. Esto inspiró el uso de un sistema de gestión de flujo de trabajo (por ejemplo, Airflow) para permitir especificar, crear y monitorear las tareas de datos. Las tareas a menudo se especifican como un grafo acíclico dirigido (DAG).


Vida útil


= Planificación empresarial =

Los objetivos empresariales que los ejecutivos establecen para lo que está por venir se caracterizan en planes empresariales clave, con su definición más notable en planes tácticos empresariales y su implementación en planes operativos empresariales. La mayoría de las empresas hoy en día reconocen la necesidad fundamental de desarrollar un plan empresarial que siga esta estrategia. A menudo es difícil implementar estos planes debido a la falta de transparencia en los niveles tácticos y operativos de las organizaciones. Este tipo de planificación requiere retroalimentación para permitir la corrección temprana de problemas debido a malentendidos y malinterpretaciones del plan empresarial.


= Diseño de sistemas =

El diseño de sistemas de datos implica varios componentes, como la arquitectura de plataformas de datos y el diseño de almacenes de datos.


= Modelado de datos =

Este es el proceso de producir un modelo de datos, un modelo abstracto para describir los datos y las relaciones entre diferentes partes de los datos.


Roles


= Ingeniero de datos =

Un ingeniero de datos es un tipo de ingeniero de software que crea pipelines ETL de grandes datos para gestionar el flujo de datos a través de la organización. Esto permite transformar grandes cantidades de datos en insights. Se enfocan en la preparación de producción de datos y aspectos como formatos, resiliencia, escalabilidad y seguridad. Los ingenieros de datos suelen proceder de un fondo en ingeniería de software y son proficientes en lenguajes de programación como Java, Python, Scala y Rust. Estarán más familiarizados con bases de datos, arquitectura, computación en la nube y desarrollo de software ágil.


= Científico de datos =

Los científicos de datos se enfocan más en el análisis de los datos, y estarán más familiarizados con matemáticas, algoritmos, estadísticas y aprendizaje automático.


Véase también
Big data
Tecnología de la información
Ingeniería de software
Ciencia de la computación


Referencias


Leer más


Enlaces externos

El Método Complejo IEM Archivado el 20 de julio de 2019 en el Wayback Machine
Desarrollo Rápido de Aplicaciones
Ingeniería Empresarial y Entrega Rápida de Arquitectura Empresarial