Brains4Cloud
ESEN
Practicar

Tema 2 de 5

D1 · Conceptos básicos de datos

Formatos de archivo de datos

Muchos datos no viven en una base de datos sino en archivos: exportaciones CSV, documentos JSON, imágenes o tablas enormes de un data lake. El formato elegido decide quién puede leerlos, cuánto ocupan y lo rápido que se procesan. El examen pide reconocer cada formato y su caso de uso.

Almacenamiento en archivos

Guardar datos en archivos es algo básico de cualquier sistema. Los archivos pueden estar en el disco de un equipo o en una memoria USB, pero en la mayoría de organizaciones los datos importantes se guardan de forma centralizada en un almacenamiento compartido. Cada vez más, ese almacenamiento central está en la nube, que ofrece almacenamiento económico, seguro y fiable para grandes volúmenes.

Cómo se elige un formato

El depende de tres factores:

Tipo de dato

Estructurado, semiestructurado o no estructurado.

Quién lo usa

Las aplicaciones y servicios que tienen que leer, escribir y procesar los datos.

Legible u optimizado

Si una persona debe poder leerlo, o si importa más el espacio y la velocidad de procesamiento.

Texto delimitado (CSV)

Datos en texto plano con delimitadores de campo y terminadores de fila. El más común es CSV (valores separados por comas): los campos se separan con comas y cada fila termina con un salto de línea. La primera línea puede incluir los nombres de los campos.

FirstName,LastName,Email
Joe,Jones,joe@litware.com
Samir,Nadoy,samir@northwind.com
  • Otras variantes: TSV (separado por tabulaciones), separado por espacios y de ancho fijo (cada campo ocupa un número fijo de caracteres).
  • Cuándo usarlo: datos estructurados que deben poder abrir muchas aplicaciones y servicios, en un formato legible por personas.

JSON

JavaScript Object Notation usa un esquema de documento jerárquico para definir entidades (objetos) con varios atributos. Cada atributo puede ser a su vez un objeto o una colección de objetos, por eso sirve tanto para datos estructurados como semiestructurados.

{ ... }

Objetos entre llaves

[ ... ]

Colecciones entre corchetes

"nombre": valor

Pares separados por comas

{
  "customers": [
    { "firstName": "Joe", "lastName": "Jones",
      "contact": [ { "type": "email", "address": "joe@litware.com" } ] },
    { "firstName": "Samir", "lastName": "Nadoy",
      "contact": [ { "type": "email", "address": "samir@northwind.com" } ] }
  ]
}

XML

Extensible Markup Language es un formato legible por personas que fue popular en los años noventa y dos mil. En gran parte lo ha sustituido JSON, menos verboso, pero algunos sistemas lo siguen usando. Define elementos y atributos con etiquetas entre corchetes angulares.

<Customers>
  <Customer name="Joe" lastName="Jones">
    <ContactDetails>
      <Contact type="email" address="joe@litware.com"/>
    </ContactDetails>
  </Customer>
</Customers>

BLOB (objetos binarios)

En el fondo, todos los archivos se guardan como binario (unos y ceros). En los formatos legibles, esos bytes se traducen a caracteres imprimibles con una codificación como ASCII o Unicode. Otros formatos, sobre todo los de datos no estructurados, guardan los datos como binario sin procesar que una aplicación debe interpretar y mostrar: imágenes, video, audio y documentos de aplicaciones.

A estos archivos se les llama BLOB (Binary Large Object, objeto binario grande).

Formatos optimizados: Parquet y Avro

Los formatos legibles son cómodos, pero no están optimizados para espacio ni para procesamiento. Con el tiempo aparecieron formatos especializados que permiten compresión, indexación y almacenamiento y procesamiento eficientes.

Parquet · columnar

  • Proyecto de Apache, muy usado en data lakes y lakehouses.
  • Organiza el archivo en grupos de filas; los datos de cada columna se guardan juntos.
  • Incluye metadatos que indican qué filas hay en cada bloque, para localizar rápido los datos y leer solo las columnas necesarias.
  • Eficiente con tipos anidados y con esquemas de compresión y codificación.

Avro · basado en filas

  • También es un proyecto de Apache.
  • Cada archivo tiene un encabezado en JSON que describe la estructura.
  • Los datos se guardan en binario, en bloques de registros; la app usa el encabezado para interpretarlos.
  • Bueno para comprimir y reducir almacenamiento y ancho de banda de red.

Columnar frente a filas

Una consulta analítica suele leer pocas columnas de millones de filas (por ejemplo, sumar el importe de todas las ventas). Un formato columnar como Parquet lee solo esas columnas. Un formato de filas como Avro guarda cada registro completo junto, lo que encaja cuando se procesan registros enteros.

Delta Lake

es un formato de almacenamiento de código abierto que se basa en Parquet y le añade un registro de transacciones. Eso permite:

Transacciones ACID

Escrituras fiables sobre archivos

Versionado

Historial de cambios de los datos

Actualizaciones fiables

Sobre archivos guardados en un data lake

Es el formato por defecto de Azure Databricks y el formato estándar de las tablas de lakehouse en Microsoft Fabric (D4).

Comparativa de formatos

FormatoLegibleTipo de datoUso típico
CSV / TSVSíEstructuradoIntercambio entre aplicaciones
JSONSíEstructurado y semiestructuradoAPIs, documentos flexibles
XMLSíSemiestructuradoSistemas heredados
BLOBNoNo estructuradoImágenes, audio, video
ParquetNoEstructurado (columnar)Análisis en data lakes
AvroNo (encabezado JSON)Estructurado (filas)Compresión y transporte
Delta LakeNoTablas sobre ParquetLakehouses con ACID

Escenarios de examen

SituaciónFormatoPor qué
Exportar una tabla para que la abran muchas apps distintas y una persona pueda leerlaCSV (texto delimitado)Legible y compatible con casi todo.
Guardar perfiles de clientes con campos que varíanJSONEsquema jerárquico y flexible.
Integrarse con un sistema antiguo que intercambia datos con etiquetasXMLFormato heredado, aún en uso.
Guardar fotos, video y audioBLOBDatos binarios sin estructura.
Analizar unas pocas columnas de una tabla enorme en un data lakeParquetColumnar: lee solo las columnas necesarias.
Minimizar almacenamiento y ancho de banda al mover registros completosAvroBasado en filas, compacto, con encabezado JSON.
Actualizar archivos de un data lake con transacciones ACID y versionesDelta LakeParquet con registro de transacciones.

Trampas frecuentes del examen

❓ ¿Parquet guarda los datos por filas?

No. Parquet es columnar. Avro es el formato basado en filas.

❓ ¿En qué formato está el encabezado de un archivo Avro?

En JSON. Los datos en sí se guardan en binario.

❓ ¿Delta Lake es un formato distinto que sustituye a Parquet?

No. Se basa en Parquet y le añade un registro de transacciones para ACID y versionado.

❓ ¿XML es el formato más usado hoy para datos semiestructurados?

No. JSON, menos verboso, lo ha sustituido en gran parte; XML sigue en sistemas antiguos.

❓ ¿Qué formato es mejor para que personas y muchas aplicaciones lean datos tabulares?

Texto delimitado como CSV: legible y ampliamente compatible.

❓ ¿Qué significa BLOB?

Binary Large Object: datos binarios como imágenes, audio o video.

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

Un equipo de análisis consulta solo tres columnas de una tabla de miles de millones de filas guardada en un data lake. ¿Qué formato reduce más la lectura?

¿Listo para poner a prueba "Formatos de archivo de datos"?

Preguntas originales, cada una con su explicación.

Empezar un simulacro