20 points par GN⁺ 2025-12-05 | 2 commentaires | Partager sur WhatsApp
  • PGlite est une solution légère qui permet d’exécuter localement une base de données Postgres complète dans un environnement WASM
  • Avec une taille inférieure à 3 Mo une fois compressée, elle peut être lancée facilement dans un navigateur ou un environnement client
  • Des fonctions intégrées de chargement des données, synchronisation et requêtes en temps réel permettent un traitement réactif des données
  • La solution prend en charge le chargement dynamique d’extensions, y compris pgvector, pour exploiter divers modules d’extension
  • Via database.build, basé sur Supabase, il est possible de créer et déployer des bases de données Postgres avec l’IA, ce qui accroît la flexibilité du développement de bases de données sur le web

Aperçu

  • PGlite est une base de données Postgres embarquée qui s’exécute dans un environnement WASM (WebAssembly)
    • Il est possible d’exécuter une instance Postgres complète en local
    • La solution prend en charge le traitement réactif des données et la synchronisation en temps réel

Principales caractéristiques

  • Légèreté : fournit un build Postgres complet de moins de 3 Mo une fois compressé avec Gzip
    • Peut fonctionner dans un navigateur ou un environnement client léger
  • Extensibilité : le mécanisme de chargement dynamique d’extensions permet d’ajouter diverses fonctionnalités d’extension Postgres
    • L’extension pgvector est prise en charge nativement
  • Réactivité : inclut des fonctions intégrées pour le chargement des données, la synchronisation et les requêtes en temps réel
    • Adapté aux mises à jour de données en temps réel et à la création d’applications réactives

Prise en main et usages

  • La plateforme database.build permet de créer et publier des bases de données Postgres basées sur PGlite
    • Il s’agit d’un outil alimenté par l’IA et développé par Supabase, qui permet aux utilisateurs de créer eux-mêmes leur base de données
  • Il est possible d’exécuter directement une instance Postgres PGlite dans le navigateur
    • Avec pgvector inclus
    • Des extensions supplémentaires peuvent être testées dans l’environnement playground(REPL)

Portée

  • PGlite étend les capacités de Postgres jusqu’au navigateur, rendant possible l’exécution de bases de données centrée sur le client
  • En combinant légèreté, extensibilité et réactivité, la solution attire l’attention comme base de données adaptée au développement des applications web de nouvelle génération

2 commentaires

 
qqq7300 2025-12-10

Après avoir lu cet article, j’ai essayé d’intégrer PGlite de manière expérimentale dans mon projet. Clairement, pour des tests simples, c’était vraiment rapide et très pratique. J’en attends beaucoup pour la suite.

 
GN⁺ 2025-12-05
Avis Hacker News
  • Je travaille dans l’équipe PGlite. Ravi de le voir présenté à nouveau sur HN
    Le nombre de téléchargements hebdomadaires a récemment dépassé les 3 millions et devrait bientôt atteindre les 4 millions — voir la page du package npm
    À l’origine, il a été conçu pour être embarqué dans des web apps, mais aujourd’hui son usage explose surtout dans les outils de développement et les environnements CLI. Google Firebase et Prisma intègrent aussi PGlite dans leurs CLI respectives pour émuler leurs produits serveur

    • Intéressant. Mais je me demande pourquoi vous l’avez fait uniquement pour WASM. J’aurais pensé qu’on commencerait plutôt par en faire une bibliothèque avant de le porter vers WASM, donc j’ai peut-être raté quelque chose
    • Merci pour ce super travail. Je me demande si vous prévoyez de prendre en charge le scénario http-vfs read-only
      Je parle d’une lecture de blocs via des range requests depuis une URL distante, comme avec DuckDB ou sql.js-httpvfs
      Notre labo travaille aussi sur un projet de ce type, mais l’écosystème http-vfs en est encore au stade du prototype, donc il existe très peu de bibliothèques bien optimisées
      Je me demande aussi si les schémas d’accès disque de PostgreSQL sont plus adaptés à http-vfs que ceux de SQLite
    • J’aimerais demander s’il y a un projet de bibliothèque pour Flutter
    • Je me demande si PGlite est plus rapide qu’un Postgres classique en mode mémoire
      Si c’est le cas, ce serait vraiment génial s’il prenait en charge le protocole réseau pour pouvoir être utilisé aussi dans des environnements CI d’autres langages que JS
    • Ça a l’air vraiment excellent. J’aimerais savoir dans quels cas d’usage précis il est pertinent de l’utiliser
      Je me demande si l’objectif est d’en faire une alternative à SQLite ou à DuckDB
  • J’aimerais utiliser PGlite dans un runtime non JavaScript
    Par exemple l’embarquer dans une CLI Go via un runtime WASM pour l’utiliser comme remplaçant de SQLite
    En regardant l’issue #89, on dirait qu’il existe des bindings tiers pour Rust, mais je me demande s’il est prévu de prendre officiellement en charge des bindings pour d’autres langages

    • Oui, la combinaison PGlite + Go aurait vraiment l’air excellente
  • PGlite est vraiment formidable. Je l’utilise en développement comme serveur PostgreSQL dans le navigateur
    Le serveur implémente le protocole PG, et lorsqu’un client se connecte, les requêtes sont transmises au navigateur où PGlite s’exécute en interne
    Au final, on obtient un serveur PG complet dans le navigateurdbfor.dev

  • Ce projet est très intéressant. L’un des défauts de Postgres, c’est qu’il faut toujours mettre en place un serveur, et ça résout ce problème
    Je me demande s’il existe un moyen de le compiler en bibliothèque native. Une partie du code semble réutilisable

    • J’ai essayé à titre expérimental de le compiler pour React Native. Postgres tourne sur iOS et Android — lien vers la PR
    • La bibliothèque native fait actuellement partie de la feuille de route
    • Je suis tout à fait d’accord. Pouvoir passer de l’embarqué au mode réseau sans changer le SQL ni le comportement serait vraiment formidable
  • Je me demande quelles sont les différences entre PGlite et SQLite
    Jusqu’ici, j’ai surtout utilisé SQLite dans des environnements embarqués et côté client dans le navigateur
    L’avantage de SQLite, c’est sa simplicité, mais les nombreuses extensions de PGlite sont intéressantes. J’aimerais savoir quelles sont les différences fondamentales entre les deux bases de données

    • À mon avis, le principal cas d’usage, c’est le test / CI
      On peut lancer des tests rapidement avec SQLite, mais si l’infrastructure réelle repose sur PostgreSQL, la valeur reste limitée
  • Pour les tests unitaires, j’utilise toujours TestContainers pour faire tourner un Postgres basé sur Docker
    Mais grâce à ce type d’alternative, des outils de test Python comme py-pglite sont devenus possibles
    Malgré tout, j’ai davantage confiance dans une approche comme pgserver, qui permet de faire tourner un vrai Postgres léger sous forme de package pip
    Mon avis se limite au point de vue des tests unitaires

    • Je me demande quels sont les compromis entre les deux approches. Ce genre de retour d’expérience est toujours utile
  • Notre équipe a adopté PGlite dans l’environnement de test en créant un nouveau service interne
    Nous avons mis en place un wrapper pour utiliser PGlite pendant les tests et une instance Postgres en exécution réelle, et cela a très bien fonctionné
    En particulier, la fonction .clone() permet de créer des checkpoints de base de données afin de revenir à l’état initial pour chaque test
    Il est aussi devenu très simple d’exécuter 50 suites de tests en parallèle

  • Je l’utilise pour les tests, et ça donne l’impression d’un entre-deux entre SQLite en mémoire et une instance Postgres complète
    Je cherchais quelque chose comme ça depuis longtemps, et je suis satisfait de la vitesse des tests. Jusqu’ici, il y a eu très peu de limitations

  • Il existe aussi Doltgres, un Postgres sous forme d’exécutable unique
    Comme Deno, il suffit de télécharger un seul fichier .exe et de l’exécuter pour avoir immédiatement un Postgres fonctionnel — documentation d’installation de Doltgres