pgrust — klon PostgreSQL na Rust, przechodzący wszystkie testy regresyjne

Opublikowano projekt pgrust z realizacją systemu zarządzania bazą danych PostgreSQL, przepisanym w języku Rust z użyciem kompilatora c2rust i asystenta AI. Zgłoszono, że projekt nie jest jeszcze gotowy do użytku w projektach roboczych, ale już z powodzeniem przechodzi wszystkie testy regresyjne PostgreSQL, jest zgodny z formatem przechowywania danych PostgreSQL 18.3 i może korzystać z katalogu danych PostgreSQL 18.3. Kod projektu jest dystrybuowany na licencji AGPLv3, w przeciwieństwie do oryginalnego PostgreSQL, który jest dostarczany na licencji permissive, zbliżonej do licencji BSD i MIT. Dostępna jest online-demonstracja możliwości, oparta na wersji w WebAssembly, a także obraz docker do szybkiego uruchamiania.

Jako cel rozwoju podano osiągnięcie pełnej zgodności z PostgreSQL 18.3, a także przeprowadzenie eksperymentów nad zmianą wewnętrznej struktury i stworzeniem wersji PostgreSQL, pozbawionej ograniczeń architektonicznych, których nie można wyeliminować z powodów historycznych. Projekt pomyślnie przechodzi zestaw składający się z ponad 46 tysięcy testów regresyjnych PostgreSQL, ale na razie jest niezgodny z rozszerzeniami PostgreSQL, nie zapewnia pożądanych optymalizacji wydajności i nie realizuje w pełni języków proceduralnych PL/Python, PL/Perl i PL/Tcl.

Plany na przyszłość:

  • Przejście na wielowątkową wewnętrzną architekturę.
  • Realizacja puli połączeń.
  • Optymalizacja dla procesów roboczych intensywnie wykorzystujących JSON.
  • Możliwość tworzenia kopii i rozgałęzień elementów bazy danych w trybie Copy-on-Write bez kopiowania danych.
  • Eksperymenty z architekturą, która nie wymaga przeprowadzenia operacji VACUUM.
  • System ograniczeń zapytań SQL, pozwalający na blokowanie nadmiernego zużycia zasobów podczas wykonywania nieefektywnych zapytań.
  • Ochrona przed przełączeniem optymalizatora na mniej efektywne plany wykonania zapytań.

Według autora projektu, obecnie trwają prace nad nową wersją pgrust, w której zamiast puli wątków wprowadzono model wielowątkowy przetwarzania połączeń, a także zastosowano dodatkowe optymalizacje, takie jak przetwarzanie wsadowe w tabelach i wstępne ładowanie danych. W testach przeprowadzonych narzędziem percona-tpcc, nowa wersja pgrust okazała się szybsza od standardowego PostgreSQL o 50% podczas przetwarzania transakcji oraz o 300 razy podczas przetwarzania zapytań analitycznych.

Podczas tłumaczenia na Rust zastosowano hybrydowe podejście, w którym kod PostgreSQL został najpierw przetworzony za pomocą translatora c2rust, generującego unsafe-reprezentację Rust, zbliżoną strukturą do pierwotnego kodu w C. Po przetworzeniu w c2rust stworzono około 1000 paczek crate, które równolegle były tłumaczone na idiomatyczny Rust za pomocą modelu AI Claude oraz narzędzia Conductor do rozdzielania zadań między jednocześnie uruchamianymi subagentami.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster