Адбыўся рэліз 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.
Крыніца: opennet.ru