No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Particiones

25/33
Recursos

Aportes 14

Preguntas 1

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Particionado - Dividir una tabla en segmentos lógicos. Es una practica común de los manejadores, pero no todos ofrecen la opción para los usuarios de administrar estas particiones. Resulta útil para optimizar las consultas de datos.
Observaciones:

  • No todas las tablas deben de ser particionadas, vale la pena hacerlo unicamente cuando hay muchos registros.
  • Permite optimizar algunas consultas al no tener que buscar dentro de toda una tabla sino unicamente en un segmento especifico.
  • El particionado altera la consistencia de la tablas
    • No existen los indices (llaves primarias) en las particiones, o mejor dicho, estos indices cambian basándose en la partición. e.g Si particionas una tabla por fechas, al buscar un dato especifico el primer criterio de búsqueda será la fecha

Hola!
Yo administro diversas bases de datos, entre ellas oracle, y dentro de oracle es válido y recomendado tener una llave primaría ajena a los criterios de particionamiento de las tablas, ya que muchas veces, la información suele ser accedida por los criterios de particionamiento (mayormente estatus, tipos y fechas) o por la llave primaria de registros específicos.
Por lo que, lo comentado por el profesor, aplica en la configuración y usabilidad propia de PostgreSQL, siendo que otros manejadores relacionales (en este caso, Oracle) si lo contempla.

Saludos!

¿Para qué sirve?

Reduce la cantidad de datos a recorrer en cada consulta SQL
Aumenta el rendimiento (Menos datos que recorrer => execución más rápida).
¿En que consiste?

Segmentación de la información mediante criterios.
¿Cúales son los Criterios?

Por definiciones exactas.
Por rangos.

Curioso el uso de las particiones, me recuerda a “Un gran poder conlleva una gran responsabilidad”

Particiones

Postgresql a diferencia de otros manejadores de bases de datos permite manejar particiones de una manera muy explicita. ya que todos los manejadores las usan de forma interna y postgresql adema de hacer estos nos permite a nosotros definir explícitamente como serán las particiones.

Las particiones consisten en separar datos de forma física manteniendo la integridad lógica.

las tablas particionadas no pueden usar primary keys o claves únicas ya que el campo por el cual se realiza la partición cumple estas funciones.

Las particiones se suelen crear en base a la fecha

No todas las tablas requieren o se les recomienda usar particiones

Registros de usuarios o artículos de información no se recomiendan las particiones ya que se pierde la capacidad de identificarlos con un id único

Entre caso un registro de millones de datos de las ventas de una compañía si puede usar particiones ya que las consultas se hacen en base a la fecha de las ventas además de al tener tantos registros las particiones mejoran la velocidad de ejecución de las queries en la tabla.

Las particiones son útiles en esas tablas que recolectan muchos datos en relativamente poco tiempo, se particionan las tablas ya que calcular el índice de nuevos datos puede convertirse en una tarea complicada cuando ya se tiene muchos anteriormente.

La partición de una tabla se lleva a cabo en su creación, no posteriormente.

En el curso de fundamentos de postgresql explican como incorporar una solución temporal cuando no se tiene una tabla particionada por si les interesa.

PostgreSQL sí permite tener llave primaria por cada partición, hasta te deja especificarla por cada partición, sino, declaras la llave primaria a nivel de la tabla principal y automáticamente las particiones heredan ese primary key. Lo mismo pasa con los foreign keys.
Yo tengo varias tablas particionadas y por lo menos en la versión 12 así funciona.

Postgres crea una tabla como tipo particionable el cual en sí no es una tabla, sino un apuntador a tablas.
Es necesario crear tablas adicionales con diferente nombres e indicar que pertenecen a la tabla particionable y bajo que dominio o rango van a tener los datos.
Por ejemplo. Puedes crear una tabla relacionarla a la particionable e indicar que ahi van a estar los datos del año 2020 al 2025, luego otra tabla con los años 2025 al 2030.

TablaCompras (particionable)
TablaCompras2020_2025
TablasCompras2025_2030

Tablas particionadas

Suelen usarse para reportes históricos ya que se pueden configurar para ser divididas por rangos de fecha, de esta manera son mas livianas y se consulta específicamente el rango que se desea evaluar, sin necesidad de pasar por todo el registro histórico. Estas tablas como se encuentran particionadas no poseen una llave primaria y son referenciadas hacia otras tablas.

Esto ayuda mucho en el rendimiento

Excelente!

Interesante…

Esto me recuerda mucho a Redshift, de hecho pensaría que de acá se toma la idea, de los bloques.

Interesante lo aprendido en esta clase:
No se pueden tener particiones y PK en una misma tabla