PostgREST, автономный веб-сервер, который превращает вашу базу данных PostgreSQL непосредственно в RESTful API, был обновлен с улучшениями полнотекстового поиска и поддержкой встраивания представлений.
PostgREST обслуживает полностью RESTful API из любой существующей базы данных PostgreSQL. Разработчики говорят, что он обеспечивает более чистый, более соответствующий стандартам и более быстрый API, чем вы, вероятно, напишете с нуля. и обеспечивает время отклика менее секунды для до 2000 запросов в секунду на уровне бесплатного пользования Heroku.
Одна из причин такой скорости заключается в том, что сервер написан на Haskell с использованием HTTP-сервера Warp, который представляет собой скомпилированный язык с облегченными потоками. PostgREST делегирует базе данных как можно больше вычислений, включая сериализацию ответов JSON непосредственно в SQL, проверку данных, авторизацию и комбинированный подсчет и извлечение строк.
Он также эффективно использует базу данных с библиотекой Hasql, сохраняя пул подключений к базе данных, используя двоичный протокол PostgreSQL и не сохраняя состояния, чтобы обеспечить горизонтальное масштабирование.
PostgREST обрабатывает аутентификацию с помощью веб-токенов JSON и делегирует авторизацию информации о ролях, определенной в базе данных. Это позволяет избежать проблем, связанных с наличием нескольких версий того, какие роли могут получить доступ к какой информации. При работе с базой данных сервер принимает личность аутентифицированного в данный момент пользователя и в течение всего времени соединения не может делать ничего, что не мог сделать сам пользователь. Другие формы аутентификации могут быть построены поверх примитива JWT. Поскольку PostgREST использует PostgreSQL, вы получаете безопасность на уровне строк. Если вы используете PostgREST против PostgreSQL 9.5, он поддерживает настоящую безопасность на уровне строк. Более ранние версии моделируют это с помощью триггеров и представлений с защитным барьером.
Разработчики говорят, что PostgREST предлагает хорошую альтернативу ручному программированию CRUD, вы можете использовать PostgreSQL для объединения данных и позволить его планировщику запросов выяснять детали, а не самостоятельно перебирать строки. Они также говорят, что PostgREST предлагает герметичную абстракцию, поскольку в ней нет ORM. Создание новых представлений происходит в SQL с известными последствиями для производительности.