💻 Я недавно узнал, что PostgreSQL теперь можно запустить прямо в браузере. И вы конечно спросите: нахуя зачем?
PGlite - это полноценная сборка PostgreSQL, скомпилированная в WebAssembly. Она работает внутри браузера, Node.js, Bun или Deno без отдельного сервера, Docker и установленной базы данных. В браузере данные можно сохранять в IndexedDB, поэтому они не исчезнут после перезагрузки страницы. Я сначала не выкупал где и как это можно юзать, но практические кейсы показали применимость в:
1) Офлайн-приложения, для понятного всем примера, CRM, таск-менеджер, приложение для учёта питания или заметок. Пользователь может открывать данные, создавать записи и выполнять поиск даже без интернета. Все запросы выполняются локально, а при появлении соединения данные можно синхронизировать с сервером.
2) Демо и интерактивные документаци, то есть, мы можем дать пользователю настоящий SQL-редактор прямо на сайте. Запрос выполнится в реальном PostgreSQL, но поднимать для каждого посетителя отдельную базу на сервере не придётся. Круто, если есть идея сделать свою обучающую платформу, курсы, для документаций ORM, SQL-песочниц и демонстраций библиотек.
3) Тестирование без Docker, тут вроде все понятно. Перед каждым тестом можно создавать чистую базу в памяти, выполнять миграции, проверять запросы и затем полностью удалять её.
4) Локальная обработка данных, тоже понятно. Вместо отправки файла на сервер его можно импортировать в локальную базу и выполнять фильтрацию, группировку и поиск прямо в браузере.
5) Локальные AI-приложения - это самый интересный вариант, который мне пришел в голову. PGlite поддерживает расширения PostgreSQL, включая pgvector. Поэтому в браузере можно хранить эмбеддинги и выполнять векторный поиск без отдельной облачной базы. Это можно юзать в локальных чатах с документами, браузерных AI-помощниках и приватных RAG-приложениях.
❗️ Но это пока просто интересная штука, у нее куча минусов. Например:
🐱 Но этот проект активно обновляется, я буду следить. Вот GitHub, кстати: https://github.com/electric-sql/pglite?utm_source=chatgpt.com
PGlite - это полноценная сборка PostgreSQL, скомпилированная в WebAssembly. Она работает внутри браузера, Node.js, Bun или Deno без отдельного сервера, Docker и установленной базы данных. В браузере данные можно сохранять в IndexedDB, поэтому они не исчезнут после перезагрузки страницы. Я сначала не выкупал где и как это можно юзать, но практические кейсы показали применимость в:
1) Офлайн-приложения, для понятного всем примера, CRM, таск-менеджер, приложение для учёта питания или заметок. Пользователь может открывать данные, создавать записи и выполнять поиск даже без интернета. Все запросы выполняются локально, а при появлении соединения данные можно синхронизировать с сервером.
2) Демо и интерактивные документаци, то есть, мы можем дать пользователю настоящий SQL-редактор прямо на сайте. Запрос выполнится в реальном PostgreSQL, но поднимать для каждого посетителя отдельную базу на сервере не придётся. Круто, если есть идея сделать свою обучающую платформу, курсы, для документаций ORM, SQL-песочниц и демонстраций библиотек.
3) Тестирование без Docker, тут вроде все понятно. Перед каждым тестом можно создавать чистую базу в памяти, выполнять миграции, проверять запросы и затем полностью удалять её.
4) Локальная обработка данных, тоже понятно. Вместо отправки файла на сервер его можно импортировать в локальную базу и выполнять фильтрацию, группировку и поиск прямо в браузере.
5) Локальные AI-приложения - это самый интересный вариант, который мне пришел в голову. PGlite поддерживает расширения PostgreSQL, включая pgvector. Поэтому в браузере можно хранить эмбеддинги и выполнять векторный поиск без отдельной облачной базы. Это можно юзать в локальных чатах с документами, браузерных AI-помощниках и приватных RAG-приложениях.
❗️ Но это пока просто интересная штука, у нее куча минусов. Например:
- PGlite работает в режиме одного пользователя и одного эксклюзивного подключения;
- база в браузере принадлежит конкретному устройству, а не всему приложению;
- пользователь может очистить браузерные данные и удалить базу;
- для синхронизации с сервером потребуется дополнительная инфраструктура;
- она расходует оперативную память и увеличивает размер фронтенда;
- IndexedDB и файловые API имеют браузерные ограничения;
- это точно не замена Supabase, Neon или обычному PostgreSQL для общего многопользовательского проекта.
🐱 Но этот проект активно обновляется, я буду следить. Вот GitHub, кстати: https://github.com/electric-sql/pglite?utm_source=chatgpt.com