Bijušais Heap vadītājs Malkolms Matiss (GitHubā — malisper) 9. jūlijā paziņoja, ka viņa projekts pgrust — PostgreSQL, kas no jauna uzrakstīts Rust valodā — iztur visus 46 000 vaicājumu PostgreSQL 18.3 regresijas testu komplektā. Rezultāts ir 100%. Vairāk nekā 450 000 koda rindu lielāko daļu ģenerēja astoņi paralēli AI kodēšanas aģenti.
Projekts nav pieteikums nomainīt PostgreSQL ražošanā. Matiss pats to sauc par v0.1 un brīdina, ka kods nav gatavs produkcijai un nav optimizēts ātrumam. Vērtīgākais te ir tapšanas veids un tas, cik tālu ir tikusi mašīnu rakstīta datubāze.
Ko pgrust patiešām dara
pgrust startē no esošas PostgreSQL 18.3 datu direktorijas bez konvertēšanas — diska formātā tas ir saderīgs ar oriģinālo Postgres. Papildus regresijas testiem tas iztur arī izolācijas testus, kas pārbauda darījumu vienlaicīgumu. Kā oraklu Matiss izmanto pašas PostgreSQL testus: uzvedībai jāpaliek Postgres formā, un īstie Postgres testi izšķir, vai tā ir. Vairāku mediju pārskati, tostarp LinuxCompatible, apstiprina 100% caurlaides rezultātu.
Regresijas komplekts nav tikai vaicājumu saraksts. Tas pārbauda datu tipus, indeksus, transakciju uzvedību, kļūdu ziņojumu tekstus un malas situācijas, kas Postgresā uzkrātas gadu desmitos. Izolācijas testi papildus pārbauda, kā datubāze uzvedas, kad vairāki savienojumi vienlaikus raksta tos pašus datus. Iziet abus komplektus nozīmē, ka pgrust atkārto gan oriģināla bāzes funkcijas, gan tā smalkās uzvedības īpatnības.
“100% no regresijas komplekta. Tie ir 46 000 vaicājumu. Diskā saderīgs ar Postgres 18.3.” — Malkolms Matiss
Astoņi aģenti par 1600 dolāriem mēnesī
Kodu rakstīja astoņi maksas Codex konti, kas strādāja vienlaikus. Rēķins bija aptuveni 1600 dolāru mēnesī. Paralēlās sesijas Matiss koordinēja ar rīku Conductor, vadot 10–20 sesijas reizē. Repozitorijs GitHubā savācis ap 1000 zvaigžņu, licence ir AGPL-3.0.
Matisa loma bija plānot un pārskatīt, nevis pašam rakstīt katru rindu. Tāda darba organizācija maina to, ko viens cilvēks var uzņemties: sistēmas līmeņa datubāze parasti prasa komandu un gadus. Šeit lielāko koda apjomu saģenerēja aģenti, bet pareizuma pārbaude palika pie oriģinālā Postgres testu komplekta.
Kāpēc pavedieni procesu vietā
Oriģinālais PostgreSQL katram savienojumam iedala atsevišķu operētājsistēmas procesu. pgrust pāriet uz modeli, kur katram savienojumam ir viens pavediens (thread-per-connection). Postgresā procesu izolācija pasargā vienu savienojumu no otra atmiņas kļūdām; pgrust to vietā paļaujas uz Rust atmiņas drošības garantijām. Pavediens ir vieglāks par procesu, tāpēc šī izvēle var samazināt savienojuma izmaksas — ar nosacījumu, ka Rust drošības modelis izturēs slodzi. Šeit ir arī risks: atsevišķu procesu modelī viena savienojuma avārija neskar pārējos, bet pavedienu modelī koplietotās atmiņas kļūda var ietekmēt visu procesu. Rust šo virzienu sašaurina, taču neizslēdz pilnībā.
Veiktspēja: dažviet ātrāk, ClickBench lēnāk
Matisa vēl nepublicētie mērījumi rāda šādus skaitļus. Uz Percona-TPCC darījumu slodzes pgrust esot par 50% ātrāks nekā Postgres. Analītiskajās slodzēs starpība sasniedzot līdz 300 reizēm. Regulāro izteiksmju operācijās tas esot 10 reizes ātrāks, ko autors skaidro ar Rust regex dzinēju. ClickBench testā pgrust pagaidām ir 2 reizes lēnāks nekā ClickHouse.
Šos skaitļus vērts uztvert piesardzīgi. Tie nāk no paša autora, kods nav optimizēts, un v0.1 nav neatkarīgi pārbaudīts. Analītiskās slodzes 300 reižu pieaugums parasti norāda uz atšķirīgu datu izkārtojumu, nevis uz vienādu darbu, kas izpildīts ātrāk. Tā kā kods ir publisks, neatkarīga atkārtošana uz tā paša aparatūras parādīs, vai skaitļi turas.
Licence: AGPL, nevis Postgres atļauja
Licences izvēle ir būtiska atšķirība. PostgreSQL izmanto atļaujošo PostgreSQL License, kas ļauj kodu iekļaut slēgtos komercproduktos bez pienākuma atklāt izmaiņas. pgrust ir zem AGPL-3.0 — copyleft licences, kas prasa atvērt avota kodu arī tad, ja programmu piedāvā kā tīkla pakalpojumu. Uzņēmumam, kas gribētu pgrust likt SaaS pamatā, tas nozīmē pienākumu publiskot atvasināto kodu. Tāpēc, pat ja pgrust tehniski kļūtu par aizstājēju, daudzi mākoņpakalpojumu sniedzēji to nevarēs lietot tāpat kā parasto Postgres.
Kur pgrust vēl neder
pgvector un TimescaleDB — divi bieži lietoti Postgres paplašinājumi — ar pgrust pagaidām nestrādā. Bez tiem daudziem projektiem migrācija nav iespējama. Matisa mērķis arī nav aizstāt Postgres. Viņš to apraksta kā veidu, kā padarīt Postgres vieglāk maināmu no iekšpuses: saglabāt Postgres uzvedību, turēt īstos testus kā pārbaudi un ar Rust plus AI izmēģināt dziļākas servera izmaiņas.
Kā šī pieeja izskatās praksē, sīkāk apraksta Developers Digest. Kods un testu rezultāti ir publiski GitHubā, tāpēc apgalvojumus par caurlaidi un ātrumu var pārbaudīt katrs, kam ir Rust rīkkopa un Postgres 18.3 datu direktorija.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.