Skip to main content
May 18, 2018

Manejo de grandes bases de datos con PostreSQL

bdm
Una de las preguntas recurrentes que me realizan varios interesados en desplegar servicios productivos en PostgreSQL, es si este puede gestionar grandes cantidades de registros, cuando preguntan esto hablamos de bases de datos que oscilan entre cientos de GIGAS y ya comenzando a alcanzar varios Teras.
La respuesta a esto es Si, PostgreSQL en base a su diseño y sus bases de datos pueden crecer de forma exponencial y manejar  grandes cantidades de registros, con limites bastante aceptables y a veces considero que exagerados (por ejemplo una tabla puede contener hasta 1600 columnas, lo cual se me haría una grosería ver tablas con esta configuración). Pero cuando comencemos a ver el crecimiento de estas bases de datos tenemos que tener en cuenta las siguientes consideraciones:
 

Registrar la tasa de crecimiento

 

Una tarea que normalmente hago cuando comienzo a trabajar con una Base de Datos de estas condiciones es identificar y registrar la tasa de crecimiento por día, por semana y por mes, esto nos ayudará  a tener identificado cuando requeriremos nuevas unidades de almacenamiento. Por increíble que parezca muchas de las empresas no tienen identificado este dato y solo se lo imaginan, esta tarea la podemos hacer fácilmente de forma manual con funciones que nos ayuden a registrar esta tasa de crecimiento o con herramientas empresariales como Postgres Enterprise Manager de EnterpriseDB.
 

Particionar

 

Identificar las tablas de crecimiento continuo, esto es sencillo de identificar,  ya que todos saben y reconocen estas tablas, y se diferencian fácilmente de las otras, junto con la tasa de crecimiento es una excelente práctica para particionar estas tablas conforme una regla de crecimiento plenamente identificada.
Recordemos que el tamaño máximo de una tabla puede ser de hasta 32 de TB (si una sola tabla, sin particionar, solamente una tabla) siendo esto (mucho, demasiado) más que suficiente, sin el mantenimiento adecuado (índices y vacuums) y sin una estrategia de adecuada de particionamiento, esta tabla desde que pese 1 TB será casi inutilizable.

 

Artículos interesantes como el Pavan Deolasee (Sharding: Bringing back Postgres-XL technology into core PostgreSQL) así como el de Chris Travers (When PostgreSQL Doesn't Scale Well Enough) me hicieron poner foco sobre este tema que poco a poco comienzo vislumbrar en las Bases de Datos que mantenemos.
 
 

Fuentes interesantes:

Límites de PostgreSQL
Sharding: Bringing back Postgres-XL technology into core PostgreSQL
When PostgreSQL Doesn't Scale Well Enough