Рэліз PostgREST 9.0.0, надбудовы для ператварэння БД у API RESTful

Адбыўся рэліз 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).

Рэліз PostgREST 9.0.0, надбудовы для ператварэння БД у API RESTful

Сярод змен у новай версіі:

  • У кэш схемы захоўвання дададзены секцыянаваныя (партыцыраваныя) табліцы, што дазволіла для падобных табліц убудоўваць аперацыі 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.

Крыніца: opennet.ru

Дадаць каментар