Недавно об этом стало известно из объявления на бесплатный доступ к postgres-wasm, серверу PostgreSQL который запускается в браузере и предлагает полный набор функций, включая сохранение состояния в браузере, восстановление из pg_dump и логическую репликацию из удаленной базы данных.
postgres-wasm en проект, выпущенный под лицензией Open Source, благодаря которому PostgreSQL был портирован на WebAssembly. Это решение разработано благодаря сотрудничеству Supabase, поставщика облачных баз данных, и Snaplet, компании, специализирующейся на программировании баз данных.
«Сегодня мы запускаем postgres-wasm с нашими друзьями из Snaplet, — сказал инженер Supabase Марк Бургграф.
Для тех, кто не знает постгрес, они должны знать, что является одной из самых передовых систем управления базами данных с открытым исходным кодом.. Он многофункциональный, с надежными типами данных, мощной индексацией и широким набором встроенных функций, которые можно использовать для упрощения стека данных и позволять разработчикам сосредоточиться на создании своего приложения. Postgres — это больше, чем реляционная база данных, она стала вашей надежной платформой данных.
О Postgres-wasm
Supabase — не первая программа, в которой Postgres работает в браузере; этот титул достается команде Crunchy Data, которая поделилась своим мнением о HN месяц назад. Желая разработать версию закрытой версии Crunchy Data с открытым исходным кодом, Supabase заключила партнерское соглашение с Snaplet для создания Postgres-wasm.
Благодаря Postgres-wasm, PostgreSQL можно запускать напрямую через браузер. Для просмотра веб-страниц использовался дистрибутив Buildroot Linux, характеризующийся чрезвычайно уменьшенными размерами, и эмулятор v86, позволяющий воспроизвести работу терминала x86.
Со стороны WebAssembly, это предназначено для создания высокопроизводительных приложений на веб-страницах, «Но он не делает предположений, специфичных для Интернета, и не предоставляет специфичные для Интернета функции, поэтому его можно использовать и в других средах. Это открытый стандарт, целью которого является поддержка любого языка в любой операционной системе, и на практике все самые популярные языки уже имеют хоть какой-то уровень поддержки. Supabase использует v86 для запуска своей виртуальной машины внутри браузера.
Запуск Postgres в браузере — это здорово, но еще лучше подключиться к нему с помощью PgAdmin. К сожалению, браузеры блокируют доступ к сети TCP виртуальной машины. Чтобы обойти это, Supabase направляет трафик через веб-сокеты. Они используют ответвление Websockproxy, которое позволяет эмулятору взаимодействовать с Интернетом путем преобразования данных, отправленных через порт веб-сокета, в пакеты TCP. Форк Websockproxy добавляет возможность туннелирования сервера Postgres.
Внутренние особенности которые выделяются из проекта, упоминаются следующие:
- Postgres 14.5, psql, pg_dump и т. д.
- Сохранение и восстановление состояния в/из файла.
- Сохраняйте и восстанавливайте состояние Postgres в/из хранилища браузера (IndexedDB).
- Быстрая загрузка из файла состояния или полный сброс эмулятора.
- Варианты конфигурации памяти от 128 МБ до 1024 МБ.
- Установите размер шрифта для терминала.
- Загрузить файлы в эмулятор (включая дампы CSV и базы данных).
- Загрузите файлы эмулятора.
- Исходящее сетевое подключение от эмулятора к Интернету.
- Входящий сетевой туннель к порту postgres 5432 внутри эмулятора.
В общем, весь проект содержится в одном снимке размером 12 МБ, с помощью которого можно запустить сервер PostgreSQL.
Как признают разработчики Postgres-wasm, производительность во время выполнения не очень высока, но сама по себе цель сделать PostgreSQL 14.5 пригодным для использования из полноценного браузера с интерфейсом командной строки psql успешно достигнута.
В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.