Foi lançado o PostgREST 9.0.0, um servidor web autônomo que implementa uma camada leve para o SGBD PostgreSQL, transmitindo objetos de um banco de dados existente para uma API RESTful. Em vez de refletir dados relacionais em objetos (ORM), no PostgREST as visualizações são criadas diretamente no banco de dados. A serialização de respostas JSON, validação de dados e autorização são realizadas no lado do banco de dados. O desempenho do sistema é suficiente para lidar com até 2000 requisições por segundo em uma típica servidor. O código do projeto foi escrito na linguagem Haskell e é distribuído sob a licença MIT.
Por exemplo, usando apenas o mecanismo de privilégios no banco de dados, é possível conceder acesso a dados (tabelas, visões e procedimentos armazenados) via protocolo HTTP. Não há necessidade de codificar tal tradução, geralmente é suficiente um único comando GRANT para que a tabela se torne acessível pela API REST. É possível configurar o acesso por token (JWT) e organizar 'multitenancy' através da utilização de segurança dinâmica ao nível de linhas (Row Level Security).
Arquitetonicamente, o PostgREST impulsiona uma arquitetura orientada a dados (Data-Oriented Architecture), onde os microsserviços não mantêm estados por conta própria, mas utilizam um acesso unificado aos dados (Data Access Layer).

Entre as mudanças na nova versão:
- O esquema de cache de armazenamento adicionou tabelas particionadas, o que permitiu embutir operações UPSERT e INSERT na resposta Location, executar consultas OPTIONS e implementar suporte a OpenAPI.
- Por meio do RPC POST, é permitido chamar funções com um único parâmetro não nomeado.
- É permitido chamar funções com um único parâmetro JSON sem o cabeçalho 'Prefer: params=single-object'.
- É permitido enviar dados do tipo bytea para funções, utilizando requisições com 'Content-Type: application/octet-stream'.
- É permitido enviar texto para funções, utilizando requisições com 'Content-Type: text/plain'.
- Adicionada suporte ao escapamento de caracteres dentro de parênteses duplos, por exemplo, '?col=in.("Double\"Quote"), ?col=in.("Back\\slash")'.
- Capacitou a filtragem de recursos de primeiro nível com base em filtros embutidos ('/projects?select=*,clients!inner(*)&clients.id=eq.12').
- Na operação 'is', é permitido o uso do valor 'unknown'.
- Compatibilidade garantida com PostgreSQL 14 e descontinuada a suporte ao PostgreSQL 9.5.
Fonte: opennet.ru
