Continuando con la serie dedicada a la democratización del dato, en la que os cuento cómo construir una plataforma de datos utilizando software libre y equipos con recursos contenidos, pensado para pequeñas empresas y para toda aquella persona que quiera adentrarse en el mundo del dato.
Hoy toca añadir un nuevo componente a la plataforma, toca hablar de otro motor de persistencia, en Data Warehouse.
Para esta función os propongo PostgreSQL. Para mí, este motor de base de datos realmente no es un 10 en nada, pero es un 7 en muchas cosas. Si bien su uso suele estar relacionado con proyectos OLTP, también nos da funcionalidades para usarla como motor Data Warehouse. Varias de las herramientas que os contaré a futuro para incluir en la plataforma de Data, usan PostgreSQL para persistir sus metadatos y configuraciones, con lo que podremos aprovechar la misma instancia tanto para los modelos analíticos, como para persistir esta metadata de herramientas.
Antes de seguir, comentaros que si os queréis poner al día con los artículos acerca de la democratización del dato, o repasarlos aquellos que ya los habéis leído todos, e incluso tomado apuntes, tenéis todos los artículos en este apartado del blog.
¿ Qué es PostgreSQL ?
PostgreSQL es un sistema de gestión de bases de datos relacional y de código abierto conocido por su fiabilidad , flexibilidad y capacidad de manejar grandes volúmenes de datos, y es una alternativa popular a las bases de datos comerciales. No son pocos los proyectos en los que se han migrado bases de datos a PostgreSQL para dejar de pagar licencias por software privativo, obteniendo grandes resultados con el cambio.
Son muchos los proyectos que hoy en día ofrecen soluciones de Softawre as a Service basados en PostgreSQL, dando servicios de almacenamiento de datos para procesos de analítica avanzada de Data. Algún ejemplo lo tenéis en:
- YugabyteDB
- Supabase
Por no olvidar que los principales proveedores de nube pública, todos, ofrecen soluciones sobre PostgreSQL ofreciendo un servicio gestionado para este motor de base de datos.
Dentro de las plataformas de datos que también tocaré, comentar la integración que ofrece PostgreSQL para utilizarla en procesos ETL/ELT, ya que las herramientas que se utilizan para estos procesos de carga y tratamiento del dato, todas se integran con PostgreSQL.
Características de PostgreSQL
Algunas de las principales características de este motor relacional, son:
- Alta concurrencia: utiliza el control de concurrencia multiversión (MVCC), permitiendo que múltiples usuarios accedan y modifiquen los datos simultáneamente sin bloqueos, asegurando transacciones consistentes y un alto rendimiento.
- Compatibilidad con transacciones ACID: esta característica se presupone al tratarse de un motor relacional, pero lo pongo por aquí, porque cuando hable de formatos de tablas en el lago de datos, este concepto de ACID será importante. Al hablar de ACID, por cierto, se habla de que Postgres garantiza atomicidad, consistencia, aislamiento y durabilidad en todas las transacciones.
- Amplia variedad de tipos de datos nativos: soporta tipos básicos (enteros, cadenas, fechas, etc.) y avanzados (arrays, JSON, XML, datos geoespaciales, tipos personalizados, etc.), facilitando la modelización de datos complejos.
- Soporte para consultas complejas y SQL avanzado: permite realizar consultas sofisticadas, subconsultas, funciones agregadas, expresiones complejas y operaciones analíticas. Además, ofrece su propio lenguaje procedural para desarrollar funciones, procedimientos y triggers para gestionar tareas complejas dentro de las bases de datos.
- Replicación y alta disponibilidad: ofrece replicación síncrona y asíncrona, equilibrio de carga, servidores en espera y mecanismos para alta disponibilidad y recuperación ante fallos. Para aprovechar estas características será necesario disponer de más de un nodo, y configuraciones adicionales. En algunos casos, supone incluir software adicional, sobre todo en lo relacionado a dotarlo de alta disponibilidad y balanceo de carga.
- Seguridad avanzada: incluye autenticación robusta, cifrado de datos en tránsito (SSL/TLS), control de acceso a nivel de columna y soporte para múltiples métodos de autenticación.
- Escalabilidad y manejo de grandes volúmenes de datos: es capaz de gestionar terabytes de datos y miles de usuarios concurrentes, con soporte para particionamiento de tablas e índices avanzados.
- Soporte para extensiones y personalización: permite agregar funciones, operadores, tipos de datos y lenguajes de procedimientos personalizados, gracias a su arquitectura extensible y de código abierto. Las extensiones de Postgres nos van a permitir dotar a este motor de muchas funcionalidades bien interesantes, os hablaré sobre alguna de ellas.
- Compatibilidad multiplataforma y open source: disponible para Linux, Windows y otros sistemas operativos, bajo licencia BSD, lo que facilita su uso y adaptación en diversos entornos. No deja a nadie fuera, desplégala en el sistema operativo qué más te guste.
- Soporte para datos geoespaciales: incluye funciones avanzadas para el manejo y análisis de datos geoespaciales, ideal para aplicaciones GIS. La extensión PostGIS es una de las más utilizadas dentro de proyectos geoespaciales.
PostgreSQL como Data Warehouse
Un Data Warehouse es un sistema diseñado para el análisis y reporte de grandes volúmenes de datos históricos. PostgreSQL, con su capacidad para manejar consultas complejas y su compatibilidad con diversas herramientas de análisis, junto con la capacidad de manejar grandes volúmenes de datos, se perfila como una solución versátil para este tipo de función dentro de nuestra plataforma de Data.
Además de que el hecho de ser software libre, siempre anima a probarla. Tiene detrás de este proyecto a una enorme comunidad, y se renueva periódicamente, se dispone de un muy buen soporte dentro del mundillo open source, sobre todo porque no solo son desarrolladores entusiastas los que están detrás del proyectos, sino que también hay muchas grandes empresas apoyando el proyecto.
Y otro punto a su favor, es el hecho de que nos permitirá usarla para más cosas que como motor OLAP, también como OLTP, con lo que, partiendo de una instancia de Postgres podremos dar servicios múltiples a otras herramientas de la plataforma de Data, y a procesos ETL/ELT.
Referencias
- PostgreSQL: https://www.postgresql.org/
- Comunidad de PostgreSQL: https://www.postgresql.org/community/
- Yugabyte: https://www.yugabyte.com
- Supabase: https://supabase.com/
