Iniciar como ingeniero de datos – devintersection 2022

Este blog es un poco mas sobre las notas que voy a ir tomando durante la charla sobre la ingeniería de datos. Por lo que va a hacer un poco diferente a solamente un artículo.

¿Qué es un ingeniero de datos?

Es una persona que desarrolla, construye, prueba y mantiene arquitecturas de grandes bases de datos con gran escala. Además, es el que se encarga de mantener los datos y los procesos relacionados a las bases de datos. Se encarga de mover datos y prepara los datos para poder hacer tareas de diferentes cosas en la manipulación de esta. Cuanta con conocimiento para poder crear soluciones de big data y puede trabajar con bases de datos no relaciones.

El ingeniero de datos debe tener la capacidad de reconocer como optimizar las bases de datos. Ejemplo es cuales columnas pueden o deben estar indexadas para poder mejorar el rendimiento de la base de datos.

La nube

Con la optimización de queries se pueden mejorar los tiempos de respuesta, pero además el costo monetario de las consultas que se están realizando en la nube. Se podría mostrar cuando dinero se estaría ahorrando por mes cuando se hacen las optimizaciones.

No se debe que tener miedo de la pérdida de empleos con la nube estos solo se transforman. Los administradores de bases de datos pueden continuar trabajando, haciendo las tareas de bases de datos. Ser parte de la nube es un proceso que simplemente se debe aprender y ver como se implementan las cosas en esta plataforma.

Realmente la nube nos está dando una oportunidad ya que ofrece muchas cosas de las que tenemos que aprender.

Los cambios de la nube representan un cambio para los DBA en el sentido que se tiene que aprender tecnologías nuevas y hoy en día se ofrece mucha más tecnología para poder hacer las tareas de un DBA. Por eso lo mejor es aprender con el cambio y no tener miedo sobre el cambio. Con esto lo único que está apareciendo son una gran cantidad nueva de oportunidades para crecer.

Lo mejor es iniciar aprender nuevas tecnologías sobre bases de datos. El ejemplo más claro es MySql Server es el servidor de base de datos más usado del mundo.

Habilidades que no son menos necesarias con la nube

  • Conocer o aprender sobre Clustering. Los proveedores de nube ya se encargan de esta parte y lo hacen como pare del servicio que están brindando en las diferentes plataformas.
  • Creación de respaldos, esta tarea también la esta realizando los proveedores de la nube. Las nubes brindan puntos de recuperación que no involucra tanto trabajo como cuando están las bases de datos on-prime
  • No se tiene que preocupar por el hardware. Con la nube solo se tiene que pagar por lo que uno quiere usa sin preocuparse por la parte física.

Habilidades que van a hacer más necesarias

  • Habilidades para buscar y solucionar problemas en las plataformas de la nube
  • Optimización y diseño de la base de datos
  • Con las optimizaciones se puede ahorrar dinero con los beses de datos

Hoy en día es muy buenos aprender un lenguaje de scripting para poder automatizar las cosas que se requieren con la nube. Una recomendación para trabajar con datos es Python. Una ventaja es que Python nos permite tener el mismo lenguaje en diferentes sistemas operativos.

Azure Storage

Una forma de guardar datos y backups. Estos datos se pueden consultar por medio de queries directamente en el storage.

  • Tiene alta disponibilidad
  • Seguro
  • Escalable
  • Económico
  • Tiene varios tipos de almacenamiento

AZCopy

CLI que nos permite trabajar con los documentos que deseamos manejar en Azure Storage. Es muy rápida y nos permite administrar los recursos del Storage.

Con powershell se puede crear las tareas de administración de tareas para las bases de datos como los backup. El script de bacup contiene todo lo necesario para poder restaurar las bases de datos. Este se puede correr desde un script de powershell para crear una base de datos en Azure. Con este archivo de bacup se puede subir a Azure y se puede correr desde la nube para construir la base de datos, se pude almacenar en un Azure Storage.

CosmosDB

Es una base de datos de Microsoft que no esta basada en SQL. Esta base de datos no requiere schema para ser generada o almacenar los datos que deseamos. La recomendación de Microsoft es unas SQL API ya que este es de su propiedad y pueden hacer cambias para poder optimizar Cosmos para que tenga mejor rendimiento. Con cosmos se pueden agregar columnas en cualquier momento sin tener que esperar para que estén listas y además no se tiene que pasar por todos los pasos que requiere SQL para poder generar nuevas columnas. La nube indexa los documentos y las columnas de manera automática.

Esta base de datos es totalmente automática, no requiere de backups y no ocupa mantenimiento. Esta diseñada para ser utilizada con el mínimo de esfuerzo, pero es una solución cara. Se tiene que entender bien el provitioning model para poder controlar bien los costos. Se pude hacer un análisis para ver cuando se está realmente usando durante los días para poder bajar o subir cuando se está requiriendo o si se ocupa uno automático para que se este cambiando los recursos según los requerido.

En cosmos db se indexan todas las propiedades, pero esto tiene un costo extra entonces cuando un documento tiene más propiedades estos documentos van a tener mayores costos de lectura y escritura.

Request Units: esto es la moneda de cambio de cosmos. Se puede poner un tamaño fijo o se puede poner automático. Se puede usar serverless y solo pagar por lo que se requiere.

Con cosmos se debe seleccionar una columna para poder sincronizar los datos y crear las particiones. Es muy importante analizar bien cual es la columna que se va a utilizar para crear las particiones.

Con la opción de serverless solo tenemos un máximo de 50 GB y no se tiene la opción de distribución en múltiples regiones, pero se paga solo por lo que se usa. En este caso podríamos usarla para ahorrar costos en aplicaciones que no se ocupan en múltiples regiones del mundo.

En cosmosdb se puede seleccionar algunas columnas para crear la indexación. O se pueden excluir algunas columnas que no sean indexadas esto puede ayudar a maximizar el uso de los recursos de cosmosdb.

En cosmos se debe buscar el Indexing Policy para poder administrar los recursos de indexación.

Database as a Service


Esto es un buen servicio ya que las empresas no toman en cuenta todos los aspectos que están relacionados al manejo de una base de datos. Como los backups, el uso de la red, de disco de almacenamiento para los datos, etc.

Cuando se una un servicio de Platform as a Service los proveedores de la nube se están encargando de todo lo relacionado al uso de la base de datos, nosotros solamente se debe encargar de la parte de la aplicación. además, existen otras herramientas con las que cuenta este tipo de servicio que son monitoreos para prevenir SQL injection, monitoreo de rendimiento, etc.

Entre mas grande sea la base de datos más memoria se va a ocupar. Las bases de datos relacionales usan caching para poder hacer las búsquedas rápidas. Por eso es que el uso de memoria es muy fuerte en las bases de datos relacionales.

Azure SQLServer serverless

Este concepto es que solo se paga por lo usado no por tener los recursos en la nube. Es bueno para bases de datos únicas que no se utilizan tanto, además que pueden ser útiles para bases de datos que no se sabe cuánto se va a usar en el tiempo. Se podría usar para aplicaciones que están iniciando y no se sabe su uso mensual.

Podemos encontrar información sobre serverless aquí

Open-source Database

Muchas empresas están iniciando a usar bases de datos de tipo Open-source ya que no se tiene que pagar las licencias y es mucho más económico ponerlas en la nube. Ahora PostgreSQL está creciendo mucho en la nube de Azure. Muchos de lo beneficios que se tienen con la base de datos de SQL Server en la nube se tiene para las otras bases de datos.

MySQL y PostgreSQL para la versión de single server están corriendo sobre Windows en Azure, pero existe una versión de Flexible Server este tiene otras características para poder distribuir los datos en regiones. además, que Flexible Server correo sobre Linux.

Con PostgreSQL se puede tener una cantidad de servidores distribuidos trabajando como no solo para poder crear un mayor rendimiento sobre las consultas y los datos que se están manejando en las aplicaciones. Esta tecnología tiene un costo alto, pero tiene muchas ventajas sobre rendimiento y velocidad de las consultas.

Data Factory

Es un servicio basado en la nube similar a SSIS que se puede usar para mover los datos o trabajar con los datos que se tienen en Azure. Este tiene la habilidad para poder crear procesos para mover datos entre nuestros repositorios en la nube.

Synapse Dedicated Pool

Es una tecnología basada en la nube para Data Warehouses la cual no es una plataforma o herramienta de tipo No-SQL. Utiliza de manera intensiva utilidades de procesamiento en paralelo. Las columnas son indexadas de manera individual para poder tener un mejor rendimiento.

Esta herramienta permite crear una arquitectura Scale-out para poder tener mayor poder de procesamiento. Se utiliza DWUs (Data Warehouse Units) para medir la capacidad que tiene el servicio. Esto mide el CPU, memoria y IO.

Podemos hacer queries con documentos públicos no importa el tamaño, este utiliza Spark para poder correr la consulta lo más rápido posible y retornar los datos.

Data Lake

Es un lugar donde se pueden guardar datos de manera estructurada o no estructurada. Los datos se pueden guardar y luego buscar por medio de querie. Los datos se guardan en un lugar donde luego se deben de poner a disposición de las personas que requieren verlos para poder hacer alguna tarea con esto.

Hadoop

Es framework que esta programado de manera paralela para poder crear consultas de manera muy rápida. Es un sistema distribuido para poder optimizar el manejo de los datos con los que se esta trabajando. Uno de los problemas es que es difícil de administrar y que es costoso. Un problema es que trabajar a nivel de disco por lo que puede ser un poco lento. Para poder tener un mejor rendimiento sobre hadoop se usa Spark que hace uso de memoria para poder tener resultados más rápidos. Es más fácil de administrar y manejar que Hadoop.

SQL Data Warehouse

Nos permite cargar documentos o datos al data lake para poder crear consultas de una forma rápida. Lo bueno es que podemos usar el lenguaje de SQL para realizar las consultas de una forma muy simple. Podemos usar SQL Pool para estas tareas.

Muy interesante todos los conceptos y herramientas que se aprendieron en la charla del día de hoy sobre datos. Muchas de las herramientas fueron ejemplificadas en la nube de Microsoft, pero muchas pueden ser utilizadas en otras plataformas de nube. Es importante aprender las opciones con las que se cuenta para poder realizar una buena tarea como ingeniero de datos y de esta forma siempre brindar la mejor solución posible. Vamos a ver cómo están los siguientes días.

Related Posts

Leave a Reply

Your email address will not be published.