Tema 2 de 5
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.
Contenido
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.
El formato de archivo 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.
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.comJavaScript 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" } ] }
]
}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>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).
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
Avro · basado en filas
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).
| Formato | Legible | Tipo de dato | Uso típico |
|---|---|---|---|
| CSV / TSV | Sí | Estructurado | Intercambio entre aplicaciones |
| JSON | Sí | Estructurado y semiestructurado | APIs, documentos flexibles |
| XML | Sí | Semiestructurado | Sistemas heredados |
| BLOB | No | No estructurado | Imágenes, audio, video |
| Parquet | No | Estructurado (columnar) | Análisis en data lakes |
| Avro | No (encabezado JSON) | Estructurado (filas) | Compresión y transporte |
| Delta Lake | No | Tablas sobre Parquet | Lakehouses con ACID |
| Situación | Formato | Por qué |
|---|---|---|
| Exportar una tabla para que la abran muchas apps distintas y una persona pueda leerla | CSV (texto delimitado) | Legible y compatible con casi todo. |
| Guardar perfiles de clientes con campos que varían | JSON | Esquema jerárquico y flexible. |
| Integrarse con un sistema antiguo que intercambia datos con etiquetas | XML | Formato heredado, aún en uso. |
| Guardar fotos, video y audio | BLOB | Datos binarios sin estructura. |
| Analizar unas pocas columnas de una tabla enorme en un data lake | Parquet | Columnar: lee solo las columnas necesarias. |
| Minimizar almacenamiento y ancho de banda al mover registros completos | Avro | Basado en filas, compacto, con encabezado JSON. |
| Actualizar archivos de un data lake con transacciones ACID y versiones | Delta Lake | Parquet con registro de transacciones. |
❓ ¿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?
Preguntas originales, cada una con su explicación.
Empezar un simulacro