# Particionado de datos

> Partir una tabla enorme en pedazos según una clave, para leer solo lo necesario.

- Nivel: Avanzado
- Temas: Datos
- URL: https://tidbit.legios.com.ar/es/data-partitioning/
- En inglés: [Data partitioning](https://tidbit.legios.com.ar/data-partitioning/)

El **particionado de datos** consiste en dividir una tabla o un conjunto de datos grande en pedazos más chicos, llamados particiones, según una columna como la fecha, el país o el ID de cliente. Para quien escribe SQL sigue pareciendo una sola tabla, pero por debajo cada partición se guarda por separado.

La ganancia principal es la **poda de particiones** (partition pruning). Si una tabla de ventas está particionada por mes y pedís noviembre, la base lee solo la partición de noviembre y saltea por completo los otros años de datos. En un data lake la misma idea aparece como carpetas del estilo `year=2026/month=11/` llenas de archivos Parquet, y motores como Spark o Athena leen solo las carpetas que coinciden. Las particiones también abaratan el mantenimiento: borrar un mes viejo es tirar una partición, no salir a buscar millones de filas.

Cuando las particiones se reparten entre distintos servidores se llama **sharding**, y es la forma en que las apps muy grandes distribuyen la carga más allá de lo que aguanta una sola máquina. Lo difícil es elegir la clave. Si particionás por algo que las consultas casi nunca filtran, no ganás nada; si elegís una clave donde un solo valor se lleva casi todo el tráfico, como un cliente gigante, armás una **partición caliente** que se vuelve el cuello de botella mientras las demás están ociosas.

## Una analogía

Como un archivo que guarda las facturas en una caja por mes en lugar de una pila gigante: para buscar algo de noviembre abrís una caja, y para tirar 2019 sacás doce cajas.

## Para quedarse

- Divide una tabla por una clave como fecha o región; las consultas la siguen viendo como una sola.
- La poda de particiones permite saltear todo lo que la consulta no necesita.
- El sharding es particionar repartiendo entre varios servidores.
- Una clave mal elegida no acelera nada o genera una partición caliente.

## Para seguir leyendo

- [Partición (base de datos) en Wikipedia](https://es.wikipedia.org/wiki/Partición_(base_de_datos))
- [Particionado de tablas (documentación de PostgreSQL, en inglés)](https://www.postgresql.org/docs/current/ddl-partitioning.html)

## Términos relacionados

- [SQL](https://tidbit.legios.com.ar/es/sql/): El lenguaje para hacerle preguntas a una base de datos.
- [Data lake](https://tidbit.legios.com.ar/es/data-lake/): Almacenamiento barato donde todos los datos se guardan como archivos crudos.
- [Parquet](https://tidbit.legios.com.ar/es/parquet/): Un formato que guarda tablas por columna y comprimidas, para que analizar lea mucho menos.
- [Apache Spark](https://tidbit.legios.com.ar/es/apache-spark/): Un motor open source que reparte el trabajo con datos enormes entre muchas máquinas.
- [Amazon Athena](https://tidbit.legios.com.ar/es/amazon-athena/): Corré SQL directo sobre archivos guardados en S3, sin armar ninguna base de datos.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [Regiones y zonas de disponibilidad](https://tidbit.legios.com.ar/es/regions-and-availability-zones/): Dónde vive AWS físicamente: ciudades del mundo, cada una con varios centros de datos.
