Es va llançar PostgREST 9.0.0, un servidor web que funciona per separat amb la implementació d'un complement lleuger al SGBD PostgreSQL, que tradueix objectes d'una base de dades existent a una API RESTful. En lloc de mapejar dades relacionals en objectes (ORM), PostgREST crea vistes directament a la base de dades. El costat de la base de dades també gestiona la serialització de respostes JSON, la validació de dades i l'autorització. El rendiment del sistema és suficient per processar fins a 2000 sol·licituds per segon en un servidor típic. El codi del projecte està escrit en Haskell i es distribueix sota la llicència MIT.
Per exemple, utilitzant només el mecanisme de privilegis de base de dades, podeu concedir accés a les dades (taules, tipus de visualització i procediments emmagatzemats) mitjançant HTTP. En aquest cas, no cal codificar aquesta traducció i normalment una ordre GRANT és suficient per fer que la taula estigui disponible mitjançant l'API REST. És possible configurar l'accés per testimoni (JWT) i organitzar la "multitenancy" mitjançant l'ús de seguretat dinàmica a nivell de fila (Row Level Security).
Arquitectònicament, PostgREST impulsa una arquitectura orientada a dades (Data-Oriented Architecture), on els microserveis no guarden els estats ells mateixos, sinó que utilitzen un únic accés a les dades (Data Access Layer) per a això.
Entre els canvis de la nova versió:
- Es van afegir taules particionades a la memòria cau de l'esquema d'emmagatzematge, la qual cosa va fer possible que aquestes taules poguessin incrustar operacions UPSERT i INSERT a la resposta d'ubicació, executar consultes OPCIONS i implementar suport OpenAPI.
- Mitjançant RPC POST es permet cridar funcions amb un paràmetre sense nom.
- Es permet cridar funcions amb un paràmetre JSON sense la capçalera "Prefer: params=single-object".
- Es permet carregar dades de tipus bytea en funcions mitjançant sol·licituds amb "Tipus de contingut: aplicació / flux d'octets".
- Es permet carregar text a funcions mitjançant consultes amb "Tipus de contingut: text/plain".
- S'ha afegit suport per escapar de caràcters entre claudàtors dobles, per exemple, "?col=in.("Double\"Quote"), ?col=in.("Back\\slash")".
- S'ha proporcionat la possibilitat de filtrar recursos de primer nivell basant-se en filtres integrats ("/projects?select=*,clients!inner(*)&clients.id=eq.12".
- L'operador "is" permet el valor "desconegut".
- S'ha assolit la compatibilitat amb PostgreSQL 14 i el suport per a PostgreSQL 9.5 s'ha interromput.
Font: opennet.ru