¿Qué es PostgreSQL?

Logo de base de datos PostgreSQL

PostgreSQL es la base de datos todo terreno, es la más usada después de MySQL.
Si no sabes que es una base de datos lo puedes ver aquí.

¿Qué te da esta base de datos?

  • Guardar los datos de forma estructurada
  • Guardar los datos de forma desestructurada
  • Escala verticalmente
  • Escalar horizontalmente (mediante plugin)
  • Particionamiento total de tablas (incluyendo índices)
  • No te va a fallar (30 años de uso que indican que no te va a fallar)

Esta base de datos es un estándar a la hora de desarrollar aplicaciones, ya sea por su largo desarrollo y por ello alta compatibilidad con muchas librerías de todos los lenguajes que existen. Lleva más de 30 años en funcionamiento.

Su lenguaje es SQL, así se crearía una tabla.

CREATE TABLE usuarios (
    id serial PRIMARY KEY,
    nombre text,
    datos_extra jsonb
);

¿Por qué se le dice a esta base de datos que es todo terreno?

Porque te permite crear tus propios tipos de datos para los casos en los que tu estructura de datos sea muy compleja.

Por ejemplo si queremos crear un tipo de dato que tenga las métricas de un modelo podríamos crear un tipo de dato como este:

CREATE TYPE metricas_modelo AS (
    precision_val NUMERIC(5,4), -- Ejemplo: 0.9500
    recall_val    NUMERIC(5,4),
    f1_score      NUMERIC(5,4)
);

Y luego usarlo así a la hora de crear una tabla

CREATE TABLE registro_experimentos (
    id SERIAL PRIMARY KEY,
    nombre_modelo TEXT,
    estado estado_entrenamiento DEFAULT 'iniciado', -- Usamos el ENUM
    resultados metricas_modelo -- Usamos el COMPUESTO
);

Para insertar los datos seria así

INSERT INTO registro_experimentos (nombre_modelo, estado, resultados)
VALUES 
    ('Red Neuronal V1', 'finalizado', ROW(0.8, 0.7, 0.75)),
    ('Arbol Decision', 'finalizado', (0.9, 0.85, 0.88)),
    ('Regresion Lineal', 'fallido', NULL);

Y por ultimo para hacer las consultas se podría hacer así

SELECT nombre_modelo, (resultados).precision_val 
FROM registro_experimentos
WHERE (resultados).f1_score > 0.8;

Gracias a esta conjunto de datos, nos permiten crear datos con n numero de variables sin tener que que expandir enormemente la tabla de la base de datos.

Si lo que necesitas es flexibilidad esta base de datos también te la puede dar, con el campo JSON o JSONB.

Este tipo de campo te permite guardar un Json directamente en la base de datos y incluso te permite hacer búsquedas por el contenido de los mismos (en cuyo caso deberías usar JSONB), esto es muy útil cuando la aplicación esta en expansión, ya que no nos obliga a estar cambiando la tabla continuamente.

¿Cual es la diferencia entre JSON y JSONB dices?

La diferencia es que una se almacena en texto plano en el disco (JSON) mientras que la otra se almacena en binario (JSONB), cada una tiene sus ventajas y sus desventajas.

JSON ventajas

  • Viene muy bien cuando quieres simplemente almacenar un JSON, ya que no tienes que serializar ni deserializar.

JSOB ventajas

  • Te es más optimo si quieres hacer consultas sobre un campo que esta en el Json.
  • Ocupa menos en disco.
  • Te permite crear índices sobre los Json para que sea aún más rápido.

Ejemplos próximamente

Logo de base de datos PostgreSQL

Bibliografía

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *