The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Проект PostgREST развивает RESTful API демон для PostgreSQL

29.10.2021 14:25

PostgREST - открытый веб-сервер, который позволяет превратить любую базу данных, хранимую в СУБД PostgreSQL, в полноценный RESTful API. Мотивацией к написанию PostgREST стало желание уйти от ручного программирования CRUD, так как это может привести к проблемам: написание бизнес-логики часто дублирует, игнорирует или усложняет структуру базы данных; объектно-реляционное отображение (ORM mapping) ненадёжная абстракция, которая приводит к медленному императивному коду и может стать причиной проблем с безопасностью. PostgREST написан на языке Haskell и распространяется по лицензии MIT.

Философия PostgREST в декларативном доступе к данным, без дополнительных прослоек. PostgREST не использует ORM, все представления создаются прямо в базе данных. Чтобы создавать и поддерживать backend API с PostgREST достаточно иметь в штате администратора СУБД. PostgREST упрощает разработку бэкенда и позволяет объединять, экстрагировать и фильтровать данные через запрос. Вместо написания кода в контроллерах (controllers) можно просто назначить разрешения для объектов в базе данных, а вместо того чтобы писать многочисленные проверки можно напрямую установить ограничения в базе данных.

Несколько иллюстраций возможностей PostgREST:



curl http://localhost:3000/todos

   [
     {
       "id": 1,
       "done": false,
       "task": "finish tutorial 0",
       "due": null
     },
     {
       "id": 2,
       "done": false,
       "task": "pat self on back",
       "due": null
     }]

   curl http://localhost:3000/todos -X POST \\
        -H "Content-Type: application/json" \\
        -d '{"task": "do bad thing"}'

   {
     "hint": null,
     "details": null,
     "code": "42501",
     "message": "permission denied for relation todos"
   }

В запрос можно встраивать фильтры


   GET /films?select=title,directors(id,last_name) HTTP/1.1

    [
     { "title": "Workers Leaving The Lumière Factory In Lyon",
       "directors": {
         "id": 2,
         "last_name": "Lumière"
       }
     },
     { "title": "The Dickson Experimental Sound Film",
       "directors": {
         "id": 1,
         "last_name": "Dickson"
       }
     },
     { "title": "The Haunted Castle",
       "directors": {
         "id": 3,
         "last_name": "Méliès"
       }
   }]

Для PostgREST есть клиентские библиотеки и расширения, в том числе для OAuth, Websockets, Amazon Kinesis. Также доступен starter-kit, который работает в Docker и включает PostgREST, веб-сервер openresty на Lua, pgTAP, RabbitMQ и панель управления. Запустить приложения на PostgREST можно на платформе Heroku, используя Docker, или как stand-alone. Ещё есть профильная облачная платформа с расширенными функциями, subzero, разработчики которой развивают форк PostgREST+, в котором реализованы агрегатные и оконные функции, а также репликация на чтение.

  1. Главная ссылка к новости (https://postgrest.org/...)
  2. OpenNews: Релиз СУБД PostgreSQL 14
  3. OpenNews: Сторонняя организация пытается зарегистрировать торговую марку PostgreSQL в Европе и США
  4. OpenNews: Компания Alibaba открыла код распределённой СУБД PolarDB, основанной на PostgreSQL
  5. OpenNews: Опубликован Kubegres, инструментарий для развёртывания кластера PostgreSQL
  6. OpenNews: Для PostgreSQL подготовлено дополнение AGE для хранения данных в форме графа
Автор новости: axhack
Тип: Программы
Короткая ссылка: https://opennet.ru/56064-postgrest
Ключевые слова: postgrest, restful, api, postgresql
Поддержать дальнейшую публикацию новостей на OpenNET.


Обсуждение (67) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Растоманя (ok), 16:37, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    Ну вот, нормальные языки пошли в мейнстрим - Haskell, Rust, может и выйдет индустрия из сишного уныния
     
     
  • 2.2, пох. (?), 16:39, 29/10/2021 Скрыто модератором
  • +11 +/
     
     
  • 3.3, Растоманя (ok), 16:44, 29/10/2021 Скрыто модератором
  • –14 +/
     
     
  • 4.8, Тинус Лорвальдс (ok), 17:02, 29/10/2021 Скрыто модератором
  • +1 +/
     
     
  • 5.12, Растоманя (ok), 17:16, 29/10/2021 Скрыто модератором
  • –4 +/
     
     
  • 6.20, Аноним (20), 18:26, 29/10/2021 Скрыто модератором
  • +/
     
     
  • 7.23, Растоманя (ok), 18:34, 29/10/2021 Скрыто модератором
  • +/
     
     
  • 8.37, QwertyReg (ok), 19:16, 29/10/2021 Скрыто модератором
  • +1 +/
     
  • 6.21, Тинус Лорвальдс (ok), 18:27, 29/10/2021 Скрыто модератором
  • +2 +/
     
     
  • 7.24, Растоманя (ok), 18:39, 29/10/2021 Скрыто модератором
  • –3 +/
     
  • 7.30, Аноним (-), 19:04, 29/10/2021 Скрыто модератором
  • +1 +/
     
  • 6.34, пох. (?), 19:12, 29/10/2021 Скрыто модератором
  • –2 +/
     
  • 3.9, andy (??), 17:04, 29/10/2021 Скрыто модератором
  • +/
     
     
  • 4.10, Тинус Лорвальдс (ok), 17:09, 29/10/2021 Скрыто модератором
  • +/
     
     
  • 5.11, andy (??), 17:16, 29/10/2021 Скрыто модератором
  • +/
     
  • 4.15, Аноним (15), 17:34, 29/10/2021 Скрыто модератором
  • +/
     
  • 4.35, пох. (?), 19:13, 29/10/2021 Скрыто модератором
  • –2 +/
     

     ....ответы скрыты модератором (16)

  • 1.4, Нанобот (ok), 16:54, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    непонятно, зачем жесткая привязка к postgresql...более логичным было бы, если б можно было использовать любую субд
     
     
  • 2.26, Аноним (26), 18:55, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Т.е. привязка к Хаскелю тебя не беспокоит?
     
     
  • 3.27, Растоманя (ok), 19:00, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Т.е. привязка к Хаскелю тебя не беспокоит?

    Не то чтобы беспокоит, Хаскель язык нормальный, но на Rust конечно в новом мире писать актуальнее. Здесь я с вами согласен!

     
  • 3.38, пох. (?), 19:17, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Т.е. привязка к Хаскелю тебя не беспокоит?

    ну как бы если этот гондурас не чесать - то почему он должен его беспокоить?

     
     
  • 4.47, Растоманя (ok), 20:37, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так я и говорю что он меня не беспокоит
     
     
  • 5.56, Аноним (56), 00:00, 30/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    ты нас пытаешься убедить или себя?
     
  • 3.65, Нанобот (ok), 14:14, 30/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще не беспокоит. Это как "тебе шашечки или ехать" - мне нужно второе
     
  • 2.68, Помазан Богдан (?), 17:12, 30/10/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Hasura
     

  • 1.5, YetAnotherOnanym (ok), 16:54, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > без лишних прослоек

    А само оно, простите, что?

     
     
  • 2.14, Аноним (14), 17:27, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • +7 +/
    нелишняя прослойка, очевидно
     

  • 1.6, привет (ok), 16:54, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    не ново, конечно, кликхаус тоже через http работает
    по мне так вполне нужная штука
     
     
  • 2.55, anonymous (??), 23:45, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Оно существует уже достаточно давно, возможно даже дольше кликхауса.
     

  • 1.7, th3m3 (ok), 16:59, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Следующий шаг - чтобы сразу БД могла выдавать RESTFul API, вообще без каких либо прослоек, разве что nginx ещё поставить на входе.
     
     
  • 2.29, Admino (ok), 19:03, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Открой для себя eXist-db
     
     
  • 3.45, Анонус (?), 19:41, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Или OpenLink Virtuoso.
     
  • 3.48, th3m3 (ok), 22:02, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Открой для себя eXist-db

    Впервые вижу. Что-то она непопулярная, раз не попалась на глаза за столько времени c аж 2000 года. В мейнстриме другое.

     

  • 1.19, Аноним (19), 18:18, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Не взлетит, потому что "...достаточно иметь в штате администратора СУБД", кому он нафиг сдался?
     
     
  • 2.61, Прохожий (??), 07:12, 30/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Если твоё приложение уровня Hello world, тогда, конечно, никому. А что-то чуть посложнее уже требует присмотра.
     

  • 1.22, erthink (ok), 18:29, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    На гитхабе issues больше чем коммитов, а звездочек на пару порядков больше чем продуктовых деплоев.

    Зато на Хаскель, ну прям в самый раз для REST и СУБД ;)

     
     
  • 2.25, Аноним (26), 18:52, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ни как ты не поймешь Хаскель это же безопасность!
     
     
  • 3.28, Растоманя (ok), 19:03, 29/10/2021 Скрыто модератором
  • –3 +/
     
     
  • 4.50, ОтсоСишник (?), 22:44, 29/10/2021 Скрыто модератором
  • –5 +/
     
  • 4.53, Аноним (53), 23:31, 29/10/2021 Скрыто модератором
  • +/
     
  • 3.73, Герой (?), 12:16, 01/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Безопасность - это oCaml!
     
  • 2.54, Аноним (54), 23:42, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    ишью ишью рознь!

    там почти все про документацию, примеры и все  в таком духе.

    багов почти нет.

     

  • 1.31, Аноним (31), 19:05, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ну все программист теперь не нужен. Ура наконец то избавимся от этих непонятных типов. Хорошо бы ещё и от админов, надо сокращать расходы.
     
     
  • 2.39, пох. (?), 19:20, 29/10/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну все программист теперь не нужен. Ура наконец то избавимся от этих
    > непонятных типов. Хорошо бы ещё и от админов, надо сокращать расходы.

    все путем, админ и этот вот... "администратор СУБД" сами сбегут - они не любят, обычно, когда их имеют. В штате или внештатно - думаю, без разницы.

     

  • 1.33, Аноним (33), 19:12, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Оооочень нужно.
     
  • 1.41, nonamenonamenoname (?), 19:28, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Тут как говориться, все хорошо до первого столба
     
  • 1.43, Аноним (43), 19:32, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Императивный код медленный :) Эти функцональщики не научившись писать императивно все наровят это выставить медленностью подхода :)
     
  • 1.46, лютый жабби__ (?), 19:50, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Именно за это ненавижу эластиксрёч, теперь в слона завезли.
    Всё это экономия - не надо нормальную оболочку писать, пусть юзеры iPootsa с курлом.
     
     
  • 2.57, пох. (?), 00:06, 30/10/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    жабоедам и не должно нравиться. То ли дело апачекашмандра, да? Ни curl, ни оболочки.

     

  • 1.49, Аноним (49), 22:08, 29/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >> Для PostgREST есть клиентские библиотеки и расширения

    Всё равно для работы с REST используют библиотеки.
    Чем оно лучше обычного клиента базы для нужного вам языка/платформы?

     
     
  • 2.64, Нанобот (ok), 14:01, 30/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Можно использовать прямо из браузера, можно обойтись без разработки бекенда, что уменьшает затраты на разработку вдвое
     
     
  • 3.66, Аноним (49), 17:02, 30/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну то есть то что я и боялся. Люди будут выставлять это в интернет.
     
     
  • 4.71, Нанобот (ok), 09:39, 01/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    это же интернет, он такой страшный😱
     

  • 1.58, Dok (??), 01:51, 30/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пусть сразу sql  запросы пересылают через http)
     
     
  • 2.67, Аноним (49), 17:03, 30/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    ну или более близкое в JSON GraphQL
     

  • 1.59, Аноним (59), 02:39, 30/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо переписать на божественной сишке. Чтобы даже самые тупые понимали код и могли контрибьютить, ведь там тогда не будет ничего кроме самых примитивных конструкций. Уязвимости не проблема - исправим в ближайшие 20 лет.
     
     
  • 2.69, Аноним (69), 01:04, 31/10/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > исправим в ближайшие 20 лет.

    вот поэтому растаманы за 15 лет ничего толком и не сделали.

     

  • 1.60, Staczhik (ok), 04:24, 30/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Запросы к бд теперь будут писать фронтэндеры? Можно не надо?
     
     
  • 2.62, пох. (?), 09:20, 30/10/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Стоп, а кто их раньше-то писал? А, да, ORM...

    Знаешь, мож хер с ним, пусть хоть фронтендеры?

     
  • 2.70, Аноним (70), 16:32, 31/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Firebase уже сто лет в обед. Не, не слышал?
     

  • 1.63, mos87 (ok), 11:21, 30/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    орм плохой, мы написали хороший - вэбота на хаскеле

    я всё правильно понял?

     
  • 1.72, PnD (??), 11:44, 01/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Прекрасен не столько сам haskell (когда надо "закодить готовое решение", то почему бы и нет), сколько система библиотек.

    Не так давно попытался воспроизвести у себя одно довольно широко употребимое (в Греции) https://github.com/ganeti/ganeti.
    И тут (внезапно) задача сборки оказалась завязана на подбор нескольких десятков библиотек с версией "от сих до сих". Которые, в свою очередь… да, тоже зависят. В общем, что-то вроде много (очень) параметрической оптимизации негладкой функции. "В лоб" ("просто поставь всё отсюда/по этой спеке") — увы, не работает.

    Но и это ещё не всё. В последние годы сборочная система языка менялась, и после некоторой точки проект (как я понял) придётся переписывать.

     
  • 1.74, Аноним (74), 16:43, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    REST головного мозга. Что тут скажешь.
     
  • 1.75, Аноним (75), 20:17, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Толковая штука) но для  относительно небольшого непрерывного потока входящих запросов на запись виснет намертво. В логах тинишина, процессы висят, но всё отваливается по таймауту. Может есть какието оптимизации на  эту тему но ненашёл на на тот момент  
     
  • 1.76, Аноним (75), 20:27, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Посоветуйте агрегатор json запросов,100500 источников генерят 10005000 запросов по http, их нужно поймать и сложить вбазу данных.
    Варианты типа nginx + any_lang мне известны. В поиске минималистичеых решений в плане зависимосей и настроек
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру