Postgres-wasm to projekt, w którym PostgreSQL został przeniesiony do WebAssembly
Niedawno ogłoszono bezpłatny dostęp do postgres-wasm . Jest to serwer PostgreSQL działający w przeglądarce i oferujący pełen zestaw funkcji, w tym trwałość stanu przeglądarki, przywracanie z pg_dump oraz logiczną replikację ze zdalnej bazy danych.
Postgres-wasm to projekt open source, który przeniósł PostgreSQL do WebAssembly . To rozwiązanie zostało opracowane we współpracy Supabase, dostawcy baz danych w chmurze, i Snaplet, firmy specjalizującej się w programowaniu baz danych.
„Dzisiaj uruchamiamy postgres-wasm z naszymi przyjaciółmi w Snaplet” – powiedział inżynier Supabase Mark Burggraf
Dla osób niezaznajomionych z Postgresem: to jeden z najbardziej zaawansowanych systemów zarządzania bazami danych typu open source . Jest bogaty w funkcje, z solidnymi typami danych, zaawansowanym indeksowaniem i szeroką gamą wbudowanych funkcji, które pozwalają uprościć stos danych i pozwalają programistom skupić się na tworzeniu aplikacji. Postgres to coś więcej niż tylko relacyjna baza danych; stał się zaufaną platformą danych.
O Postgres-wasm
Supabase nie jest pierwszym, który uruchomił Postgresa w przeglądarce; ten tytuł należy do zespołu Crunchy Data, który udostępnił swoją wersję na HN miesiąc temu. Chcąc opracować wersję open-source zastrzeżonej wersji Crunchy Data, Supabase nawiązał współpracę ze Snaplet, aby zbudować Postgres-wasm.
Dzięki Postgres-wasm, PostgreSQL można uruchomić bezpośrednio przez przeglądarkę internetową. Osiągnięto to dzięki dystrybucji Linuksa Buildroot, charakteryzującej się wyjątkowo małym rozmiarem, oraz emulatorowi v86, który pozwala na replikację działania terminala x86.
Z drugiej strony , WebAssembly ma umożliwiać tworzenie wysokowydajnych aplikacji na stronach internetowych, ale nie opiera się na założeniach dotyczących wyłącznie stron internetowych ani nie zapewnia funkcjonalności specyficznej dla tych środowisk, dzięki czemu może być używany również w innych środowiskach. Jest to otwarty standard, którego celem jest obsługa dowolnego języka w dowolnym systemie operacyjnym, a w praktyce wszystkie najpopularniejsze języki programowania oferują już przynajmniej pewien poziom wsparcia. Supabase używa v86 do uruchamiania swojej maszyny wirtualnej w przeglądarce.
Uruchamianie Postgresa w przeglądarce jest świetne , ale połączenie z nim za pomocą PgAdmin jest jeszcze lepsze. Niestety, przeglądarki blokują dostęp do sieci TCP maszyny wirtualnej. Aby to obejść, Supabase kieruje ruch przez WebSockets. Wykorzystuje on fork WebSockProxy, który umożliwia emulatorowi komunikację z internetem poprzez konwersję danych przesyłanych przez port WebSocket na pakiety TCP. Fork WebSockProxy dodaje możliwość tunelowania serwera Postgres.
Do najważniejszych cech projektu należą:
- Postgres 14.5, psql, pg_dump itp.
- Zapisz i przywróć stan do/z pliku.
- Zapisz i przywróć stan Postgres do/z pamięci przeglądarki (IndexedDB).
- Szybki rozruch z pliku stanu lub pełny reset emulatora.
- Opcje konfiguracji pamięci od 128 MB do 1024 MB.
- Ustaw rozmiar czcionki dla terminala.
- Prześlij pliki do emulatora (w tym zrzuty CSV i bazy danych).
- Pobierz pliki emulatora.
- Wychodząca łączność sieciowa z emulatora do Internetu.
- Tunel sieci przychodzącej do portu Postgres 5432 wewnątrz emulatora.
Ogólnie rzecz biorąc, cały projekt jest zawarty w jednej migawce o rozmiarze 12 MB, za pomocą której można uruchomić serwer PostgreSQL.
Jak przyznają programiści Postgres-wasm, wydajność środowiska wykonawczego nie jest zbyt wysoka, ale sam cel, jakim jest uczynienie PostgreSQL 14.5 użytecznym z pełnej przeglądarki z interfejsem wiersza poleceń psql, został pomyślnie osiągnięty.
Na koniec, jeśli chcesz dowiedzieć się więcej na ten temat , możesz znaleźć szczegóły pod poniższym linkiem.