The OpenNET Project / Index page

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

Релиз PostgREST 9.0.0, надстройки для превращения БД в API RESTful

28.11.2021 08:05

Состоялся релиз PostgREST 9.0.0, отдельно работающего веб-сервера с реализацией легкой надстройки к СУБД PostgreSQL, транслирующей объекты из существующей базы данных в RESTful API. Вместо отражения реляционных данных в объекты (ORM) в PostgREST представления создаются прямо в базе данных. На стороне БД также выполняется сериализация ответов JSON, проверка данных и авторизация. Производительности системы достаточно для обработки до 2000 запросов в секунду на типовом сервере. Код проекта написан на языке Haskell и распространяется по лицензии MIT.

Например, используя только механизм привилегий в базе данных, можно предоставить доступ к данным (таблицам, видам представлений и хранимым процедурам) по протоколу HTTP. При этом нет необходимости кодирования такой трансляции и обычно достаточно одной команды GRANT, чтобы таблица стала доступна по REST API. Имеется возможность настроить доступ по токену (JWT) и организовать "multitenancy" через использование динамической безопасности на уровне строк (Row Level Security).

Архитектурно PostgREST подталкивает к данно-ориентированной архитектуре (Data-Oriented Architecture), где микросервисы не сохраняют состояния сами, а используют для этого единым доступом к данным (Data Access Layer).

Среди изменений в новой версии:

  • В кэш схемы хранения добавлены секционированные (партицированные) таблицы, что позволило для подобных таблиц встраивать операции UPSERT и INSERT в ответ Location, выполнять запросы OPTIONS и реализовать поддержку OpenAPI.
  • Через RPC POST разрешено вызывать функции с одним неименованным параметром.
  • Разрешено вызывать функции с одним JSON-параметром без заголовка "Prefer: params=single-object".
  • Разрешено загружать в функции данные с типом bytea, используя запросы с "Content-Type: application/octet-stream".
  • Разрешено загружать в функции текст, используя запросы с "Content-Type: text/plain".
  • Добавлена поддержка экранирования символов внутри двойных скобок, например, "?col=in.("Double\"Quote"), ?col=in.("Back\\slash")".
  • Предоставлена возможность фильтрации ресурсов первого уровня на основе встроенных фильтров ("/projects?select=*,clients!inner(*)&clients.id=eq.12".
  • В операторе "is" разрешено использование значения "unknown".
  • Обеспечена совместимость с PostgreSQL 14 и прекращена поддержка PostgreSQL 9.5.


  1. Главная ссылка к новости (https://github.com/PostgREST/p...)
  2. OpenNews: Проект PostgREST развивает RESTful API демон для PostgreSQL
  3. OpenNews: Сторонняя организация пытается зарегистрировать торговую марку PostgreSQL в Европе и США
  4. OpenNews: Релиз СУБД PostgreSQL 14
  5. OpenNews: Amazon открыл код Babelfish, расширений для замены MS SQL Server на PostgreSQL
  6. OpenNews: Проект MangoDB развивает реализацию протокола СУБД MongoDB поверх PostgreSQL
Автор новости: pg14
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/56245-postgrest
Ключевые слова: postgrest, postgresql, rest, api
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (138) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 09:34, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –11 +/
    Тут недавно некий анинми сильно бугуртил по поводу использования в СУБД  REST-API вместо бинарных протоколов. Главные аргументы были в стили - "это неправильно, ибо ящетаю что это неправильно! Воть!".
    Добавлю от себя что я очень рад, что мечты сбываются.
     
     
  • 2.4, Аноним (4), 10:14, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Например для мобильных приложениях этот ваш рест совсем никуда не уперся.  Ну и дальше по списку.
     
     
  • 3.9, zzz (??), 10:53, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    почему?
     
     
  • 4.13, Аноним (4), 11:15, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Самое простое зачем мобильнику тратить время не сериализацию, перегонять этот ваш текст в числа и наоборот, когда например на андроиде, приложение может сразу получить бинарный джавовый объект с любой абстракцией хоть с массивом хоть с чертом лысым? Этим же можно решить вопрос сессий, в отличии от стейтлесс реста.  Да много всего можно делать но для среднего хомячка это все конечно сложно.  
     
     
  • 5.21, penetrator (?), 11:41, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    сессии - бессмысленная трата ресурсом по всем фронтам
     
     
  • 6.58, _hide_ (ok), 16:38, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сессия -- это абстракция и не имеет прямого отношения к ресурсам.
    Сериализация -- это очень субъектное понятие по трудозатратам и, в большинстве случаев, затраты несущественные.
    А вот как обеспечить прозрачное и безопасное взаимодействие с базой через рест без прокладок в виде ОРМ модели, я так и не понял.
     
     
  • 7.62, hohax (?), 17:22, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > затраты несущественные.

    Да, на уровне сложности hello, world.

     
     
  • 8.87, _hide_ (ok), 22:31, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На любом уровне Если у Вас возникли проблемы с затратами на сериализацию при ре... текст свёрнут, показать
     
  • 7.139, penetrator (?), 13:29, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Сессия -- это абстракция и не имеет прямого отношения к ресурсам.
    > Сериализация -- это очень субъектное понятие по трудозатратам и, в большинстве случаев,
    > затраты несущественные.
    > А вот как обеспечить прозрачное и безопасное взаимодействие с базой через рест
    > без прокладок в виде ОРМ модели, я так и не понял.

    сессия - это архитектурное решение, предпологающее хранение состояния, из-за этого хранения состояния вытекают все затраты, от памяти до распределенных серверов сессий

    т.е. это всегда +N, если можно без сессий сделать тоже самое, то сессии - не нужно

     
  • 6.107, MVK (??), 10:39, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >сессии - бессмысленная трата ресурсом по всем фронтам

    - для однопользовательской БД, да. А при наличии нескольких пользователей с разными планами запросов сессии дают умное кэширование данных - кастомное для клиента

     
  • 5.34, ыы (?), 12:23, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >получить бинарный джавовый объект

    ...через REST

     
  • 5.38, commiethebeastie (ok), 13:25, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >получить бинарный джавовый объект

    Первый получает бинарный объект, второй использует анонимную функцию, результат ну вы сами догадались.

     
  • 5.51, ФФФ (?), 16:09, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А другие платформы, а партнеры, сразу видно чувак апи не видал рабочего.
     
  • 5.135, Аноним (135), 09:01, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Бинарный джавовый объект - это бэкдор.
     
  • 3.14, YetAnotherOnanym (ok), 11:19, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сюрпрайз - мир не ограничивается смартфончиком в твоём кармане.
     
  • 2.95, Аноньимъ (ok), 07:12, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ещё совсем немного, и пориджи изобретут веб сервер и пхп.

    Назовут Rest Service

    и

    Active JSON Transformation Language.

     

  • 1.3, Аноним (4), 10:10, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    И как это натянуть например на существующий ORM например в той же джанге. Да никак. Это я вообще к чему? Да к тому что это очередное ненужно.  
     
     
  • 2.5, Прохожий (??), 10:35, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Если кому-то (тебе) не нужно, это ещё не означает, что и остальным не нужно. Л - логика. И вообще, тебя кто-то заставляет пользоваться, что ли?
    У Оракла через REST работает Golden Gate, к примеру. Здесь, видимо, тоже что-то такое можно соорудить при необходимости.
     
     
  • 3.32, ыы (?), 12:09, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    У Оракла через REST работает APEX
     
     
  • 4.44, Аноним (44), 14:36, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    У Оракла есть Oracle REST Data Services. Это коммерческий аналог сабжа.
     
     
  • 5.55, ыы (?), 16:22, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Oracle REST Data Services разве коммерческий?
     
     
  • 6.76, Михрютка (ok), 20:17, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Oracle REST Data Services разве коммерческий?

    коммерческий, но бесплатный. пока у оракла опять пятка не зачешется.

    алсо you must comply with all U.S. and applicable export control and economic sanctions laws or else

     
  • 2.12, Аноним (12), 11:13, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >И как это натянуть например на существующий ORM например в той же джанге

    Достаточно взять простой советский...

     

  • 1.6, Жявамэн (?), 10:41, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Пока не добавят балансировщик нагрузки и мастер мастер репликацию для бд - в прод не пригодно.
     
     
  • 2.10, An0nim0us (?), 10:56, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Балансировщик - любой существующий для http. Условно делай апстримы в nginx и балансируй себе.
    Репликация - уже давно есть в постгресе.
    Глупо было бы им переизобретать велосипед...
     
     
  • 3.11, Аноним (4), 11:03, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Репликация, nginx — это всё и есть велосипеды. Так и вижу как ты пойдешь к директору банка и начнешь рассказывать как ты делаешь балансировку, через бесплатную тулзу, которую пишет васян, которая не дает  никаких гарантий ни для чего. Про репликацию, когда у тебя основная нагрузка это запись.  А директор тебе выдаст волчий билет и отправит на биржу труда.  
     
     
  • 4.19, YetAnotherOnanym (ok), 11:35, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Директор банка, как правило, прислушивается к своему начальнику отдела автоматизации (или как там называется эта должность том в конкретном банке). Если для этого специалиста nginx (или haproxy, или varnish) - это васянопродукт, то я хотел бы знать название этого банка, чтобы держаться от него подальше.
    (Собственно говоря, я знаю один такой банк - самый крупный в РФ, претендующий на более чем полуторавековую историю, который завязался на проприетарное ПО зарубежного производителя и теперь вынужден подчиняться ограничениям, которые ему выставляет поставщик ПО - например, этот банк не может работать в Крыму. Так я забрал из него все деньги, которые там по привычке держали родители).
     
     
  • 5.22, Аноним (4), 11:44, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да я тебя даже скажу он называется Сбербанк. Дело правда было давно лет 10 назад.  
     
  • 5.24, penetrator (?), 11:48, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ни один вменяемый банк не будет работать в Крыму и никакого отношения к IT, проприетарному ПО и тд, это не имеет, вся эта кухня с Крымом это для ура-поцреотов, а нам про open source, пожалуйста.
     
     
  • 6.28, ыы (?), 12:01, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ваш анализ вменяемости очень полезен..для 6 палаты... а к ИТ "вся эта кухня" имеет самое непосредственное отношение. Потому что количество отраслей на которые будет распространятся действие последней версии экспортных ограничений США - будет только расти.
    Слышали новость? Под санкции попал МФТИ :) Давай до свиданья Оракл в МФТИ, давай досвидос амигос винда в МФТИ. Давай пока VmVware в МФТИ... Я не знаю, может они и не пользовались ничем этим... Но и не будут :) И это хорошо.
    Потому что будет создано свое. Что поднимет квалификация своих программистов, а не заплатит денюжку забугорным.
     
     
  • 7.37, Аноним (37), 13:08, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > И это хорошо.
    > Потому что будет создано свое. Что поднимет квалификация своих программистов, а не заплатит денюжку забугорным.

    Проходили уже в истории "будет создано своё". Шо, опять? (с)

     
     
  • 8.43, YetAnotherOnanym (ok), 14:32, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кагбэ, вполне работающий подход - брать чужое и на его основе делать своё ... текст свёрнут, показать
     
     
  • 9.48, Аноним (37), 15:20, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    ни с чем не совместимое, а если совместимое, то остальному миру не нужное, и тд ... текст свёрнут, показать
     
     
  • 10.73, YetAnotherOnanym (ok), 19:26, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А что, для королёвской Р7 нужно было сохранить совместимость с боеголовками для ... текст свёрнут, показать
     
     
  • 11.110, Аноним (4), 13:11, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А сейчас что ты работаешь не на боеголовке а на персональном ПК И кушаешь ты хл... текст свёрнут, показать
     
     
  • 12.119, YetAnotherOnanym (ok), 16:38, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, от хлеба требуется только совместимость с моим желудком А что до вычтехники... текст свёрнут, показать
     
     
  • 13.122, Аноним (122), 17:17, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Копирование IBM было единственным нормальным решением в той ситуации Продолжать... текст свёрнут, показать
     
     
  • 14.143, _hide_ (ok), 13:14, 01/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Всё зависит от поставленных целей ... текст свёрнут, показать
     
  • 10.98, Аноньимъ (ok), 07:32, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Себе нужно быть нужным, а не остальному миру Более того, остальному миру особен... текст свёрнут, показать
     
  • 7.109, Аноним (4), 13:10, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Просто ты будешь меньше кушать. Никто ничего создавать не будет.  В Северной Корее что-то ничего своего не сделали.  
     
  • 6.45, YetAnotherOnanym (ok), 14:38, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ни один вменяемый банк не будет работать в Крыму

    Хы... а можете озвучить свои критерии "вменяемости"?

     
     
  • 7.49, Аноним (37), 15:25, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> Ни один вменяемый банк не будет работать в Крыму
    > Хы... а можете озвучить свои критерии "вменяемости"?

    Санкции. Те, на которые вам пофиг, а банкам (присутствующим на международном финансовом рынке) нет.

     
     
  • 8.66, penetrator (?), 18:33, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    единственно верный и адекватный комментарий, доступ к финансовым инструментам и ... большой текст свёрнут, показать
     
     
  • 9.71, YetAnotherOnanym (ok), 19:19, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пц, адекваты подобрались Признак адекватности для них - нахождение под топ... текст свёрнут, показать
     
     
  • 10.79, penetrator (?), 20:33, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    так что ж ты лезешь под гильотину, если на заборе написано осторожно под напряж... текст свёрнут, показать
     
     
  • 11.140, ыы (?), 14:50, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    куда и под какую гильотину лез МФТИ ... текст свёрнут, показать
     
  • 10.111, Аноним (4), 13:13, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Завязывай с телеком это не твоё ... текст свёрнут, показать
     
  • 5.106, drTr0jan (?), 09:17, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Внезапно, у этого крупнейшего банка внутри очень много nginx.
     
     
  • 6.113, Аноним (4), 13:17, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Но сюрприз это не балансировщик перед постгресом, который пытается изображать толи мастера толи маргариту.
     
  • 4.20, An0nim0us (?), 11:36, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Никто не сделает репликацию постгреса лучше чем сами разработчики постгреса И о... большой текст свёрнут, показать
     
     
  • 5.23, Аноним (4), 11:46, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Сразу открою секрет банк будет использовать нормальные базы данных, которые сами всё умеют, а не городить велосипеды непонятно из чего.  
     
     
  • 6.26, ыы (?), 11:53, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, пафосно конечно но глупо.Назовите пожалуйста хотябы две таких СУБД не попадающих под санкции?
     
  • 6.35, An0nim0us (?), 12:39, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тебя что кроме банка никуда больше не берут Почему у тебя техническая дискуссия... большой текст свёрнут, показать
     
     
  • 7.36, ыы (?), 12:49, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    К тому же, товарищу наверное будет любопытно узнать, что под капотом тех решений "которые банки используют" зачастую находятся просто опенсорсные программы, или нечто купленное у нонеймов и слегка допиленное...
     
  • 4.25, ыы (?), 11:51, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    К директору банка прийдет чувак в костюме который расскажет про импортозамещение, sla, ROI....
    И директор банка никогда не узнает что там на самом деле под капотом- всего лишь nginx и штатная репликация постгреса.
    Кстати мастер-мастер репликация в постгресе есть, и доступна в исходных кодах...
     
     
  • 5.112, Аноним (4), 13:15, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Директор выразить свою глубочайшую заинтересованность и продолжит использовать продукт, который работает. А не тот который ему скажут.  
     
     
  • 6.123, Аноним (122), 17:19, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно, видел ли кто-нибудь из участников дискуссии директора банка.
     
  • 3.42, Аноним (44), 14:29, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пожалуйста, озвучьте проверенное решение По тому, что я знаю, мастер-мастер реп... большой текст свёрнут, показать
     
     
  • 4.52, Михрютка (ok), 16:12, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>>Оракл, например, не захотел идти по этому пути и тоже не умеет мастер-мастер.

    вот щас оракл раку стало очень обидно

     
     
  • 5.54, ыы (?), 16:19, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    С чего бы то это ему было обидно? Оракл RAC - это разделяемое хранилище с блочной репликацией. Там нет такой сущности как "самостоятельная нода работающая как мастер или чтото иное". Там все ноды- работают с одной версией БД, которая лежит на распределенном блочном устройстве.
     
     
  • 6.68, Михрютка (ok), 19:07, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    сорьки, я было подумал, что pq dbr это мастер/мастер синхронная репликация, порадовался - ну хоть какое-то подобие рака.

    так-то рак кластер, как вы правильно написали, с шаред хранилищем, и ровно по этой же причине - в репликации блочных устройств не нуждается.

     
     
  • 7.77, ыы (?), 20:20, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    блочное устройство- это не идиома для жесткого диска как вы очевидно думаете. блочное устройство в отличие от символьного - это такая сущность интерфейс которого общается с внешним миром посредством блоков а не символов.
    блок- ключевое понятие в оракле, на нем все держится. и процесс репликации данных в RAC тоже происходит блоками.
    То самое шаред хранилище - вполне себе блочное устройство. которое реплицируется.
     
     
  • 8.81, Михрютка (ok), 21:02, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    куда ... текст свёрнут, показать
     
  • 8.93, x3who (?), 03:09, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    там всё хуже - поскольку хранилище общее, то в принципе к одному блоку ломиться ... текст свёрнут, показать
     
  • 4.59, An0nim0us (?), 16:51, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Про мастер-мастер репликацию никто не упоминал ранее Классическая репликация m... большой текст свёрнут, показать
     
     
  • 5.64, Аноним (44), 18:01, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Оракл, кстати также официально умеет в мастер-мастер и нюансы там примерно такие же как и MySQL

    нет, извините, но всё же не умеет. RAC - это не мастер-мастер данных, а только инстанса.

     
     
  • 6.67, An0nim0us (?), 18:59, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    извиняю, но я не имел ввиду RAC. Я имел ввиду -  https://docs.oracle.com/cd/B28359_01/server.111/b28326/repmaster.htm#BGBGBHFE
     
     
  • 7.69, Аноним (44), 19:10, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Точно, вспомнил теперь. Есть такая штука у Оракла. Когда-то в конце 90-х на модемных линиях её использовали. И это не оценочное суждение, просто факт.
     

  • 1.7, Прохожий (??), 10:43, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мне вот интересно, что такое "типовой сервер", который в заметке упоминается? И сколько на "типовом сервере" можно выжать запросов в секунду на родном протоколе при прочих равных?
     
  • 1.8, морошка ягодка такая (?), 10:46, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Обернуть простую базу данных в dotnet + entity framework - пустяковое дело.

    А для сложных случаев, эту штуковину применять не стану.

     
  • 1.15, axhack (ok), 11:23, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я частный разработчик, разрабатываю веб и программные решения.

    Использую в продакшене -- как бакенд собственной корп CRM, но так же разрабатываю клиентские решения на базе бакенда на Postgrest.
    Postgrest ускорил мою работу в 10 раз, при этом избавив от типичных ошибок и вечного "написания одного и того же ORM кода".

    Не умеете готовить -- ну брыжьте слюной в комментариях дальше :)

     
     
  • 2.16, Dok (??), 11:27, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Покажи пример чем это лучше обычного орб
     
     
  • 3.30, ыы (?), 12:05, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Сходите посмотрите как работает APEX на оракле.
    Вот то что делают для постгреса- это нечто подобное. И это правильно.
     
  • 2.18, anonymous (??), 11:34, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    это настолько абстрактно, что даже толсто
     
  • 2.31, WE (?), 12:05, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    ...рассосались рубцы, вес пришел в норму, прекратилось облысение и кошка стала ходить строго в лоток?
     
     
  • 3.47, Dzen Python (ok), 15:03, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не только! Всего за 999999.99$ для адаптации постгрест под нынешнюю инфраструктуру и 999999999.99$ за миграцию избавили нас не только от проблем на стороне сервера, но ещё и от крыс, мышей, лягушек, блох, клопов, вшей, проверяющих из ОБЭПа, налоговой, военкома для сынка гендира, санкций за работу в Крыму, открыли третий глаз, расшили чакры, дали фуриёку для звания короля шаманов, помогли найти и прочитать сисечный свиток из коробки медаки, вся наша компания прямо таки сплотилась во едином порыве и бухгалтер стал кишечником, менеджер - мускулами, а сисадмин - клоакой! Рекомндую, закажите только сейчас у авторизованного тентакля и получите кучу удовольствия в подарок!
     
  • 2.41, Аноним (41), 14:00, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это что, типа минимизация бэкэнда? вплоть до его обнуления? и обнуления необходимости в бэкэнд-щиках? Другого смысла никакого вроде не просматривается...
     
     
  • 3.80, нонейм (?), 20:47, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Как бы экономическая суть всего IT - обнулить лишние траты. Какой тут смысл ещё может быть? :)
     
     
  • 4.89, Аноним (89), 23:02, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хм, тогда всё равно все бэк-эндовые заморочки во фронт-энд уйдут, а по сети будет больше данных гоняться. Небезопасно, медленно, больше нагрузка на клиентов, врядли сильно дешевле - фронт-эндер будет как два-в-одном.
     
     
  • 5.90, нонейм (?), 23:06, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > все бэк-эндовые заморочки

    не уловил сути. Например что?

     
  • 5.138, axhack (ok), 11:42, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    1. За счёт чего траффика станет больше?
    2. В чём именно выражается небезопасность?
    3. Почему это должно быть медленно и нагружать фронт?
     

  • 1.33, Добрый дядя (?), 12:10, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Поставил себе, поигрался. Вполне годный инструмент, свои задачи выполняет хорошо.
     
  • 1.39, hardworm (?), 13:34, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я так давно не видел простого CRUD приложения, что не представляю зачем такое решение нужно.

    Что бы все делать на front? А есть ли тогда какие-то механизмы защиты и валидации?

    Обычно во многих фреймворка есть что-то готовое, где получить crud можно одной командой. Но это надо в 10% на небольшие таблицы справочники.

     
     
  • 2.40, An0nim0us (?), 14:00, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что бы упростить backend... Это больше актуально для микросервисов, когда отпадает необходимость делать свой api-сервис для взаимодействия с базой. В микросервисах не принято делать что б каждый сервис стучался напрямую в базу в силу многих причин, для этого либо пишут свой api-сервис либо используют что-то готовое типа этого сабжа.
     
     
  • 3.60, Онаним (?), 17:09, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Вспоминая одну старую дискуссию...
    А потом оверхед от всех этих г***прослоек становится таким, что танцорам начинает latency в TCP мешать...
     
     
  • 4.70, An0nim0us (?), 19:15, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У всех разные задачи и разные решения для них. Кто-то до сих пор деплоит раз в 2 года монолит вручную по фтп и ему норм - никаких латенси, но в таких изначальных условиях он может себе это позволить, а кто-то не может...
     
     
  • 5.126, Аноним (126), 18:44, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Угу, смузи скиснет.

     
  • 4.91, нонейм (?), 01:18, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    конкретно сабж даёт дополнительную задержку в норме меньше 10ms

    http_req_duration..............: avg=2.4ms   min=476.37µs med=1.42ms  max=39.1ms   p(90)=5.23ms  p(95)=7.47ms

     
     
  • 5.99, Аноньимъ (ok), 07:42, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > конкретно сабж даёт дополнительную задержку в норме меньше 10ms

    Нехренаж себе.

     
  • 3.96, Аноньимъ (ok), 07:22, 29/11/2021 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.46, Аноним (44), 14:45, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Что бы все делать на front? А есть ли тогда какие-то механизмы защиты и валидации?

    Наоборот. Вся валидация делается схемой базы данных. Т.е. тупо инсерт не пройдет. А фронтэнду нужно только красиво ошибку обработать.

    Суть в том, что валидация делается максимально близко к хранению данных. Фактически в транзакции и никак обойти это не получится. Второй уровень валидации - на фронтэнде тоже можно делать но это уже опционально.

     
     
  • 3.72, An0nim0us (?), 19:19, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    То что вы говорите - это антипаттерн и так делать нельзя. Сабж изначально делался как коробочный апи-сервер для микросервисов для работы с базой и об этом недвузначно намекает картинка в самой новости...
     
     
  • 4.74, pg14 (?), 19:45, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Если не сложно, развейте мысль, пожалуйста.

    Я картинку вставил для общей наглядности из источника, который вообще об DOA был (https://news.ycombinator.com/item?id=29209365). В новости она - это моя спекуляция на тему архитектур и возможного применения.

     
     
  • 5.85, An0nim0us (?), 22:02, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Если так, то тогда и фраза "Архитектурно PostgREST подталкивает к данно-ориентированной архитектуре (Data-Oriented Architecture), где микросервисы не сохраняют состояния сами, а используют для этого единым доступом к данным (Data Access Layer)." также является своего рода манипуляцией.
    Относитесь к моему высказыванию больше как к субъективному мнению еще одного параноика)
    Данный сабж не использую на проектах и свое мнение формировал исключительно из новости и своего понимания того как нужно. Оказывается многие действительно используют и в сценариях описанных выше в качестве альтернативы GraphQL и основные возможности для работы в качестве публичного апи сервера у него действительно есть. Отсюда получается что немного погорячился в выводах, хотя странно что никто меня не исправил)
     
  • 3.97, Аноньимъ (ok), 07:23, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Т.е. тупо инсерт не пройдет.
    >и никак обойти это не получится

    Ха, а ты смешной!

     
  • 3.133, Аноним (133), 00:46, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Предлагаешь логику бэкенда делать на триггерах и хранимках? Ну удачи.
     

  • 1.50, Старший Аноним (?), 16:08, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это ответ на Oracle-овый ORDS но только на Haskel?
    Такое себе, скажу я вам.
     
     
  • 2.57, ыы (?), 16:29, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А почему нет?
     
  • 2.65, Аноним (44), 18:16, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я бы и сам с удовольствием использовал Оракл, но он же много-много денег стоит. Но есть позитивный момент - Oracle JET бесплатный и как раз заточен на REST. Сабж должен хорошо подойти в качестве бэкэнда.
     

  • 1.53, ФФФ (?), 16:12, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Странно это все, для какой-то узкой микросервисной задачи, даже картинку не положить
     
     
  • 2.56, ыы (?), 16:28, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А вы sql запросами картинки часто кладете?
     
  • 2.63, Аноним (44), 17:49, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вот, только что на коленке накидал и проверил. Хоть картинки, хоть что:


    create table api_v5.bloblo (id uuid, le integer, blo bytea);

    create or replace function api_v5.blobhere(bytea) returns void language sql as $$
    insert into api_v5.bloblo (le,blo) values ((select length($1)),$1);
    $$;

    curl -X POST -H "Authorization: Bearer eyXXX" -H "Content-type: application/octet-stream" -v -d '@demo.bin' 'https://api.XXX.de/v5/rpc/blobhere'

    select encode(blo, 'escape') from api_v5.bloblo;

     

  • 1.61, Erley (ok), 17:20, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Не знал про это чудо, спасибо за наводку.

    "Код проекта написан на языке Haskell..."
    Вот уж кому-то действительно надоело писать ORM для каждой задачи, выбор Haskell наводит на мысль что ребята делают проект с умом и душой, делая код простым и гибким.

    Для Big Data это конечно не предназначается, но должно весьма нехило упростить жизнь разработчикам обычных бекендов.

     
  • 1.82, Онаним (?), 21:24, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Только меня вот это смутило?
    "Производительности системы достаточно для обработки до 2000 запросов в секунду на типовом сервере"
     
     
  • 2.83, Онаним (?), 21:26, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Или штo там за типовой сервер, Raspberry Pi 1A штoле?
     
     
  • 3.86, нонейм (?), 22:12, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    vendor_id       : GenuineIntel
    cpu family      : 6
    model           : 60
    model name      : Intel Core Processor (Haswell, no TSX)
    stepping        : 1
    microcode       : 0x1
    cpu MHz         : 2399.996

    запустил $ k6-v0.35.0-linux-amd64/k6 run -d 10s -u 20 ./test-pgrst-local.js

    2 ядра под 100% + 50% сам k6

    Результат:

    http_reqs......................: 18457   1844.250269/s

     
     
  • 4.102, Онаним (?), 07:50, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Благодарю.

    Сфейспалмил.
    Закопать и не выкапывать.

     
  • 3.100, Аноньимъ (ok), 07:47, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Или штo там за типовой сервер, Raspberry Pi 1A штoле?

    Вы вот шутите, а у нас тут финансовая микросервисная система на 300 юзерах укакивается.

    И жива она на проде только потому, что фронтенд всё тротлит. Ну и там мощности aws побольше конечно чем на тесте.

     

  • 1.88, Аноним (88), 22:52, 28/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    2000 запросов это вообще ничего. Будет хотябы 200000 в секунду, будет разговор.
     
     
  • 2.92, нонейм (?), 01:24, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    я так понимаю 1000 запросов на ядро

    всего лишь 200 ядер нужно для указанных вами требований

     
     
  • 3.94, Аноним (94), 06:26, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Т.е. 1 арм-процессора хватит? Там как раз около 200 ядер.
     
     
  • 4.103, Минона (ok), 07:52, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    арм - кака.
    тут нужен Cerebras.
     
     
  • 5.105, Онаним (?), 07:53, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    И ведро смузи. На один рылодень )
     
  • 2.101, Аноньимъ (ok), 07:48, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > 2000 запросов это вообще ничего. Будет хотябы 200000 в секунду, будет разговор.

    Для жава микросервисов 2000 это космос.

     
     
  • 3.104, Онаним (?), 07:53, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не, ну тут задача-то вообще тривиальная.
    Как они смогли???
     

  • 1.108, абв (?), 13:08, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я не очень понял как здесь транзакции запускать/откатывать?

    Допустим, мне нужно сделать 3 инсерта, и если хоть один не прошёл - развернуть всё взад.

     
     
  • 2.114, Аноним (114), 14:02, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Написать хранимку, HTTP is a stateless protocol.
     
  • 2.115, Онаним (?), 14:27, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Транзакции - это слишком сложно :D
     
  • 2.117, нонейм (?), 16:30, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    RESTful API позволит работать с документами, а не базой напрямую. Да, маппинг делается 1:1 к таблицам на все операции CRUD. С вьюхами другое дело - маппинг на CREATE и UPDATE уже автоматически не сделаешь. Поэтому для них нужно отдельно писать before INSERT и before CREATE триггеры.
     
     
  • 3.118, нонейм (?), 16:34, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Таким образом 3 инсерта в разные таблицы пройдут полностью или откатятся все. PostgREST не избавит от необходимости писать такую логику. Она всегда кастомная исходя из бизнес логики. Но во всех других решениях нужно делать то же самое, только здесь это удобней из-за PL/PgSQL. Лаконичней не придумали ещё.
     
     
  • 4.134, Аноним (133), 00:50, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А как версионировать и обновлять туда-обратно триггеры с хранимками? Я просто как-то раз пробовал это через alembic-миграции делать, но удовольствие это было, скажу откровенно, ниже среднего.
     
  • 3.127, абв (?), 20:08, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Я вижу, вы разбираетесь в сабже. Тогда для чего все эти усложнения?Почему нужно использовать это, а не работать с базой напрямую?
    Другими словами - где и в чём выгода?
     
     
  • 4.131, нонейм (?), 22:38, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    разбираюсь в том плане, что использую это, да

    причины, наверное, разные могут быть. В моём случае (1) нужно было провести черту между фронтэнд и бэкэнд разработчиками и, соответственно, OpenAPI спецификация стала единственным местом обсуждения и договора между ними; (2) фронтэнд разработчики без вопросов умеют работать с RESTful API; ну и (3) то, что единый API используется и UI, и программно сервисами которые вообще неподконтрольно пишутся пользователями платформы SaaS.

     
  • 3.132, нонейм (?), 23:33, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    *before INSERT и before *UPDATE* конечно же

     

  • 1.116, kosmonaffft (?), 16:27, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На прошлой работе рассматривали сабж, как вариант для вытаскивания БД в REST, но по некоторым требованиям не зашло. В итоге я за несколько месяцев запилил более-менее аналог, но на других технологиях.
     
     
  • 2.120, нонейм (?), 16:40, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А что не получилось? поделитесь, если не секрет.

    Я стал использовать сабж именно, чтоб самому каждый раз не писать такие прослойки. И пока не столкнулся с ситуацией, чтоб что-то не получилось реализовать из задуманного.

     
     
  • 3.121, kosmonaffft (?), 17:08, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нужна была схема строго в OpenAPI 3.0, а PostgREST умеет только в Swagger 2.0 (по крайней мере на тот момент умел только в нее), плюс возможность дорабатывать что-то, если требования поменяются, а я оказался единственным человеком в команде, кто хоть как-то знаком с хаскеллем (ну то есть на уровне HelloWorld), и не стал бы брать на себя ответственность, что любую фичу там смогу запилить. Плюс это все должно было уйти на сертификацию во ФСТЭК, и как там отнеслись бы к тому же хаскеллю - ХЗ.
    В итоге сделали аналог на JavaEE.
     
     
  • 4.124, нонейм (?), 18:04, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    думаю вы всё правильно сделали.

    меня отсутствие prepared statements смущает больше всего: https://docs.subzero.cloud/postgrest-plus/#prepared-statements

    коммерческий PostgREST+ всего 250EUR/год стоит. Для моего SaaS это копейки. Есть вариант и исходники у них купить этого решения, если очень надо.

     
     
  • 5.125, kosmonaffft (?), 18:20, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ого, то что обычная версия генерит не prepared statement я тогда даже не заметил. Такое точно бы на сертификации завернули.
     
  • 5.128, Steve (??), 20:24, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > меня отсутствие prepared statements смущает больше всего

    Сказанное выше неверно, PostgREST генерирует подготовленные операторы для всех запросов, начиная с версии 8.0.0.

    См. Https://postgrest.org/en/v8.0/configuration.html#db-prepared-statements.

    Также актуально https://github.com/PostgREST/postgrest/issues/1789#issuecomment-817077872

     
     
  • 6.129, Steve (??), 20:36, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Corrected link(had a "." at the end):

    https://postgrest.org/en/v8.0/configuration.html#db-prepared-statements

     
  • 6.130, нонейм (?), 22:15, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    спасибо за уточнения

    особенно вторая ссылка раскрыла ситуацию совсем под другим углом. Я почему-то думал что steve-chavez и есть проект subZero, а он оказывается в supabase

    не сочтите за рекламу:
    https://supabase.com/ - очень круто сделали (и ещё делают). Я просто что-то похожее, но для внутреннего использования строил, поэтому и понравился их подход.

     

  • 1.136, Аноним (136), 09:47, 30/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Объясните любителю вебмамаке , я правильно понимаю сабж предоставляет просто api для фронта?
    А как тогда интересно происходит авторизация обычных пользователей микросервиса?
    Для авторизации на микросервисе нужна отдельная база для доступа к api фронта? Или сабж также предоставляет возможность авторизации обычных пользователх к доступа к базе?
     
     
  • 2.137, Аноним (137), 11:24, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это не первый такой инструмент, например есть hasura https hasura io graphql d... большой текст свёрнут, показать
     
     
  • 3.141, Аноним (141), 17:02, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Мне просто интересен стал вопрос  безопастности в случае доступа к api обычных пользователей. Но если сабж предназначается для совсем блого-новости сервисов,  то тогда подход более менее понятен.
     

  • 1.142, Аноним (142), 05:44, 01/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня назрел вопрос: 2000 запросов в секунду - разве это много?
     
     
  • 2.145, Аноним (145), 23:16, 01/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    смотря каких и смотря на каком сервере. если это одноядерная 2 гиговая балалайка на хецнере, то покатит
     

  • 1.144, Аноним (145), 23:15, 01/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    все было хорошо до слова хаскель и стало понятно почему так мало запросов
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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