Visual Studio 17.9 стала общедоступной
Visual Studio 17.9 теперь полностью доступна с поддержкой искусственного интеллекта и улучшенной расширяемостью. Первая предварительная версия 17.10 также стала доступна в режиме предварительного просмотра.
Благодаря WebAssembly мы теперь можем использовать PostgreSQL в браузере, чтобы создавать реактивные приложения, работающие в реальном времени, локальные приложения прямо на Postgres. PGLite собирается сделать это еще проще.
До недавнего времени единственным способом запустить PostgreSQL в браузере было развертывание виртуальной машины, что мы рассмотрели в статье "Запуск PostgreSQL в браузере":
Crunchy Data, создав виртуальную машину v86 на основе образа Alpine Linux и установив на нее Postgres, смогли запустить его в браузере, поскольку v86 эмулирует x86-совместимый процессор и аппаратное обеспечение, транслируя машинный код в WebAssembly во время выполнения.
Однако у такого подхода есть два ограничения: нет доступа к Интернету из виртуальной машины и нет сохранения данных, поэтому изменения теряются при выходе или обновлении страницы.
Последним недостатком воспользовалась компания Cruncy Data, создав на его основе эфемерные игровые площадки, которые позволяют вам практиковать SQL в браузере, а затем просто отпустить их, когда они закончены.
Но благодаря PGlite ситуация скоро изменится. PGlite - это сборка WASM Postgres, упакованная в клиентскую библиотеку TypeScript, которая позволяет запускать Postgres в браузере без необходимости установки каких-либо других зависимостей. То есть Postgres заступает на место SQLite, выступая в роли библиотеки, которая может быть вызвана кодом, с дополнительным бонусом в виде возможности сохранять данные в файловой системе (Node/Bun) или в индексированной БД (Browser).
Кроме того, поскольку PGLite основана на ElectricSQL, она может синхронизироваться с сервером по требованию, что дает возможность создавать действительно реактивные и локальные приложения. Это единственное свойство делает PGLite частью движения за суверенитет данных, которое звучит примерно следующим образом: "Если вы не владеете данными или они не хранятся на ваших собственных устройствах, то они не ваши".
Чтобы наглядно привыкнуть к идее Postgres- как библиотеки, которую мы можем вызывать и использовать из Javascript-кода, мы можем сделать следующее:
import { PGlite } from "@electric-sql/pglite";
const db = new PGlite();
await db.query("select 'Hello world' as message;");
Теперь вы можете выполнять SQL-запросы в Postgres, как раньше в SQLite.
console.log("Создание таблицы...");
await pg.query(`
CREATE TABLE IF NOT EXISTS test (
id SERIAL PRIMARY KEY,
имя TEXT
); `);
console.log("Вставка данных...");
await pg.query("INSERT INTO test (name) VALUES ('test');");
console.log("Выборка данных...");
const res = await pg.query(`
SELECT * FROM test;`);
Это делает PGLite полезным в целом ряде различных сценариев:
Другим преимуществом PGLite по сравнению с порождением виртуальной машины является небольшой размер; он составляет всего 3,7 МБ в gzipped формате, в то время как версия виртуальной машины занимает 30+ МБ.
Все это хорошо, но есть и некоторые ограничения в отличие от полноценного экземпляра PostgreSQL. Поскольку Postgres обычно работает по модели форкинга процессов, каждый раз, когда клиент инициирует соединение, форкируется новый процесс для управления этим соединением.
Однако программы, скомпилированные с помощью Emscripten - компилятора C to WebAssembly (WASM) - не могут создавать новые процессы, и поэтому работают строго в однопроцессном режиме. В результате PostgreSQL не может быть напрямую скомпилирован в WASM для работы в обычном режиме.
К счастью, в Postgres предусмотрен "однопользовательский режим", предназначенный в первую очередь для использования командной строки во время загрузки и восстановления. Опираясь на эту возможность, PGlite предоставляет путь ввода/вывода, который облегчает взаимодействие с PostgreSQL, когда он компилируется в WASM в среде JavaScript.
Кроме того, PGLite не может запускать расширения, пока(?). Возможно, это слишком много, но представьте, что вы запускаете PostGIS на портативном веб-базированном Postgres и с вашими собственными данными.
В общем, PGLite - это последнее дополнение к движению Postgres-for-everything и его цель - перенести PostgresSQL на клиентскую сторону!
Visual Studio 17.9 теперь полностью доступна с поддержкой искусственного интеллекта и улучшенной расширяемостью. Первая предварительная версия 17.10 также стала доступна в режиме предварительного просмотра.
Компания Microsoft снова преследует пользователей Google Chrome на Windows 10 и Windows 11 всплывающей рекламой на рабочем столе, рекламирующей Bing и его платформу Bing Chat GPT-4.
Шестилетнее ядро Linux казалось обреченным, пока не появился альянс CIQ, Oracle и SUSE. Но зачем было затевать все это?
Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!
Только свежие новости программирования и технологий каждый день.
Комментарии