PostgREST: un webserver y API RESTful para cualquier base de datos PostgreSQL
El día de hoy vamos a hablar sobre PostgREST, el cual es un servidor web independiente que transforma una base de datos PostgreSQL directamente en una API RESTful. Las restricciones estructurales y los permisos de la base de datos determinan los puntos finales y las operaciones de la API.
Según sus diseñadores, usar PostgREST es una alternativa a la programación CRUD manual. Recuerde que el acrónimo informático inglés CRUD (Create, Read, Update, Delete) designa las cuatro operaciones básicas para la persistencia de datos, en particular el almacenamiento de información en una base de datos.
“PostgREST es potente, estable y transparente. Nos permite iniciar proyectos muy rápidamente y centrarnos en nuestros datos y aplicaciones en lugar de construir la capa ORM. En nuestro clúster k8s, ejecutamos algunos pods por esquema que queremos exponer y escalamos hacia arriba o hacia abajo según la demanda.
Para quienes desconocen de PostgreSQL, deben saber que este es un sistema de administración de datos conocido por su confiabilidad y robustez, se beneficia de más de 25 años de desarrollo de código abierto por parte de una comunidad global de desarrolladores. Es uno de los sistemas de gestión de bases de datos de código abierto más avanzados. Es rico en funciones, con tipos de datos robustos, indexación potente y una amplia gama de funciones integradas que se pueden usar para simplificar la pila de datos y permitir que los desarrolladores se centren en crear su aplicación.
PostgREST tiene un alcance específico, ademas de que funciona bien con otras herramientas como el servidor web Nginx. Esto obliga a una clara separación de las operaciones CRUD centradas en datos de otras preocupaciones.
PostgREST maneja la autenticación (a través de JSON Web Tokens) y delega la autorización a la información del rol definida en la base de datos. Esto asegura que solo haya una fuente declarativa de verdad para la seguridad.
Al tratar con la base de datos, el servidor asume la identidad del usuario autenticado actualmente y durante la conexión no puede hacer nada que el propio usuario no pueda hacer. Se pueden construir otras formas de autenticación en la primitiva JWT.
Por otro lado, cuando se trata de la integridad de los datos, PostgREST en lugar de confiar en un Object Relational Mapper (ORM) y una codificación imperativa personalizada, este sistema impone restricciones declarativas directamente en su base de datos.
Con PostgREST, no se involucra ORM (mapeo relacional de objetos), ademas de que la creación de nuevas vistas se realiza en SQL, con conocidas consecuencias sobre el rendimiento. Un administrador de base de datos ahora puede crear una API desde cero, sin programación personalizada.
El ORM es un tipo de programa informático que se coloca como interfaz entre un programa de aplicación y una base de datos relacional para simular una base de datos orientada a objetos. Este programa define correspondencias entre los esquemas de la base de datos y las clases del programa de aplicación.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
¿Como instalar PostgREST en Linux?
La versión 10.1.1 se lanzó en noviembre pasado con nuevas adiciones y algunos cambios. Esta versión se puede obtener desde github. El enlace es este.
De igual forma, para quienes estén interesados en poder instalar PostgREST, deben saber que se puede obtener la actual versión en estos momentos con ayuda de una terminan. Solo en ella vamos a teclear:
wget https://github.com/PostgREST/postgrest/releases/download/v10.1.1/postgrest-v10.1.1-linux-static-x64.tar.xz
Ahora solo deben de descomprimir el paquete con el siguiente comando:
tar Jxf postgrest-v10.1.1-linux-static-x64.tar.xz
Mientras que para el caso en especial de los que utilizan una versión de Ubuntu de 64 bits:
wget https://github.com/PostgREST/postgrest/releases/download/v10.1.1/postgrest-v10.1.1-ubuntu-aarch64.tar.xz tar Jxf postgrest-v10.1.1-ubuntu-aarch64.tar.xz
Y pueden ejecutar con:
./postgrest --help
Otro método de instalación, es con una imagen de Docker que está preparada, esta la pueden obtener tecleando:
docker pull postgrest/postgrest
Finalmente pueden obtener más información sobre la configuración de ello, desde la documentación en su página web. El enlace es este.