IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

PostgreSQL : Supabase annone la mise en libre accès de Postgres-wasm,
Un serveur PostgreSQL qui fonctionne dans un navigateur

Le , par Bruno

32PARTAGES

13  0 
Supabase a annoncé la mise en libre accès de postgres-wasm. Postgres-wasm est un serveur PostgreSQL qui fonctionne dans un navigateur. Il offre une suite complète de fonctionnalités, notamment la persistance de l'état dans le navigateur, la restauration à partir de pg_dump et la réplication logique à partir d'une base de données distante. « Aujourd'hui, nous mettons en libre accès postgres-wasm avec nos amis de Snaplet », a déclaré Mark Burggraf, ingénieur chez Supabase dans un post publié le 3 octobre.

Postgres est l'un des systèmes de gestion des bases de données open source les plus avancés. Il est riche en fonctionnalités, avec des types de données robustes, une indexation puissante et un large éventail de fonctions intégrées que peuvent être utilisé pour simplifier la pile de données et permettre aux développeurs de se concentrer sur la création de son application. Postgres est plus qu'une base de données relationnelle, il a évolué pour devenir votre plateforme de données de confiance. Il dispose de :

  • une base de données relationnelle ;
  • une base de données documentaire avec un support JSON complet ;
  • un support géospatial ;
  • partitionnement pour les données de séries chronologiques.


Supabase n’est pas premier à faire fonctionner Postgres dans un navigateur - ce titre revient à l'équipe de Crunchy Data qui a partagé sa version sur HN il y a un mois. Dans son désir de développer une version open source de la version propriétaire de Crunchy Data, Supabase s’est associé à Snaplet pour construire Postgres-wasm. Snaplet fournit aux développeurs des données précises pour la production et des bases de données de prévisualisation sur lesquelles ils peuvent coder, afin qu'ils puissent se concentrer sur l'expédition. Il est possible d’utiliser Snaplet pour cloner les environnements Supabase.

Environnements de clonage de Supabase

Clonez les données de production de Supabase, sans informations personnelles, vers un environnement de développement. La « parité d'environnement » est un terme introduit par la « méthodologie des applications à 12 facteurs » qui demandait aux développeurs de conserver des environnements aussi similaires que possible afin d'avoir la certitude que si cela « fonctionnait sur ma machine », cela fonctionnerait en production.

Si vos environnements de développement, de test et de production sont différents, vous perdez la capacité de prédire avec précision comment votre changement de code va se comporter en production. Cette confiance dans le code destiné à la production est essentielle pour le type de livraison continue et de déploiement rapide qui permet aux applications et à leurs équipes de développement de prospérer dans le cloud. Voici, ci-dessous, une vidéo dans laquelle Peter Pistorius, fondateur de Snaplet, montre le processus :

Snaplet fournit aux développeurs des données précises pour la production et des bases de données de prévisualisation sur lesquelles ils peuvent coder, afin qu'ils puissent se concentrer sur l’essentiel.


Il s'agit de PostgreSQL, exécuté dans une machine virtuelle à l'intérieur du navigateur. Psql, l'outil de ligne de commande PostgreSQL, peut être utilisé pour interagir avec la base de données.

Pour l'exécuter localement :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
# From Snaplet Repo 
git clone git@github.com:snaplet/postgres-wasm.git 
cd postgres-browser/packages/pg-browser 
npx serve 
 
# From Supabase Fork 
git clone git@github.com:supabase-community/postgres-wasm.git 
cd postgres-wasm 
git checkout web 
cd packages/supabrowser 
npx serve
postgres-wasm pèse actuellement environ 30 Mo. Donc, à ce stade, l'exécution de Postgres dans le navigateur n'est pas idéale pour les cas d'utilisation générale. Il y a cependant beaucoup de potentiel. Une machine virtuelle (MV) intégrable est créée à l'aide de Buildroot. La MV est un build Linux avec Postgres installé.

Le but de ce processus de construction est de produire un dossier contenant un système de fichiers Linux complet qui sera monté et servi par v86.

Construire et lancer le conteneur pour exécuter Buildroot

./build.sh
Modifiez la configuration et sauvegardez-la sur l'hôte.

# Linux system config
# Launch menuconfig
make menuconfig
# Save the changes back to the host
cp .config /config/.config

# Linux kernel config
# IMPORTANT: If it's the first time you run this command,
# exit the linux-menuconfig when it opens and copy the host file by running
# cp /pg-browser/board/pg-browser/linux.conf ./output/build/linux-5.17.15/.config
# then you can go back to "make linux-menuconfig" to edit this configuration
# Launch menuconfig
make linux-menuconfig
# Save the changes back to the host
cp output/build/linux-5.17.15/.config /config/board/pg-browser/linux.conf

Construire le dossier du système de fichiers :

makeEnsuite la MV doit être exécutée dans un navigateur. WebAssembly (parfois abrégé Wasm) définit un format de code binaire portable et un format de texte correspondant pour les programmes exécutables ainsi que des interfaces logicielles pour faciliter les interactions entre ces programmes et leur environnement hôte.

L'objectif principal de WebAssembly est de permettre la réalisation d'applications performantes sur des pages Web, « mais il ne fait pas de suppositions spécifiques au Web et ne fournit pas de fonctionnalités spécifiques au Web, il peut donc être utilisé dans d'autres environnements également ». C'est un standard ouvert qui vise à supporter n'importe quel langage sur n'importe quel système d'exploitation et, en pratique, tous les langages les plus populaires ont déjà au moins un certain niveau de support. Supabase utilise v86 pour exécuter sa MV à l'intérieur du navigateur.

Proxy réseau

Exécuter Postgres dans un navigateur est génial, mais s'y connecter avec PgAdmin est encore mieux. Malheureusement, les navigateurs bloquent l'accès au réseau TCP de la MV. Pour contourner cela, Supabase fait passer le trafic par des websockets. Ils utilisent un fork de Websockproxy qui permet à l'émulateur de communiquer avec Internet en convertissant les données envoyées sur un port websocket en paquets TCP. Le fork de Websockproxy ajoute la possibilité de tunneliser le serveur Postgres.

WASM

La première chose à souligner est que la mise en œuvre de Supabase n'est pas purement WASM. Ils ont essayé de compiler Postgres pour WASM directement à partir de la source, mais c'était plus compliqué que prévu. Le post HN de Crunchy a fourni quelques indices sur l'approche qu'ils ont prise, qui était de virtualiser une machine dans le navigateur. Supabase a également suivi cette stratégie et a opté pour v86 qui émule un CPU et un matériel compatible x86 dans le navigateur.

Erreurs de segfault de PostgreSQL 14

Supabase a rapidement fait fonctionner PostgreSQL 13.3 en utilisant une version obsolète de Buildroot. Mais la version PG14+ ne voulait pas démarrer, donnant un segfault pendant l'initialisation. L'équipe à essayé :

  • de copier manuellement les fichiers de construction pour PG14 dans la ou les anciennes versions de Buildroot ;
  • construire avec les (nombreuses) copies plus récentes de Buildroot ;
  • ajustement des paramètres du noyau et de l'environnement, comme la quantité de mémoire allouée à l'émulateur, etc.

Finalement, Fabian, le créateur de v86, a suggéré que l'équipe Supabase désactive la compilation JIT pour v86 et cela a résolu le problème. Il a déterminé qu'il s'agissait d'un bogue dans v86 et a publié une mise à jour qui le corrige. Le passage de Postgres de posix à la gestion de la mémoire sysv a également résolu le problème pour la version actuelle de v86.

Optimisation du temps de démarrage et de la taille des images

Avec PG14 fonctionnant dans l'émulateur, nous nous sommes concentrés sur les performances. La taille de l'image de l'émulateur était trop importante pour un outil basé sur un navigateur. Même avec nos meilleurs efforts, un instantané compressé dépassait les 30 mb - une charge utile assez importante à télécharger avant de pouvoir voir une quelconque interaction. Supabase a résolu ce problème en ne démarrant qu'une image Linux minimale, puis en chargeant dynamiquement le reste de la VM via HTTPS après l'initialisation.

Pour ce faire, Snaplet monte un système de fichiers 9P compressé dans la MV. 9P fournit un script Python qui prend un dossier de système de fichiers, renomme chaque fichier avec un nom à 8 caractères et produit un fichier filesystem.json représentant une structure imbriquée avec des fichiers, des noms de fichiers originaux, des tailles, etc. Nous copions ensuite cette sortie compressée sur la VM. Snaplet a modifié la ligne de commande du noyau et les paramètres de démarrage de v86 pour démarrer directement à partir du système de fichiers 9P, et a même placé le fichier noyau dans le système de fichiers p9. Tous les fichiers non essentiels sont chargés de manière asynchrone par HTTPS dans le navigateur selon les besoins.

Source : Supabase

Et vous ?

Quel est votre avis sur le sujet ?

Voir aussi :

PostgreSQL aurait commencé à travailler sur le support de la compression Zstandard, pour compléter toutes les possibilités de LZ4 que l'on trouve actuellement dans PostgreSQL 14

PostgreSQL 10 est disponible en téléchargement : quelles sont les nouveautés de la dernière version du SGBD libre ?

Disponibilité générale de PostgreSQL 11 : un aperçu des principales fonctionnalités du SGBDRO libre

OpenZFS 2.0 est disponible avec la prise en charge de Linux et FreeBSD et apporte de nouvelles fonctionnalités comme la compression ZStandard

Ubuntu 18.10 est disponible, embarque GNOME 3.30 pour une nouvelle apparence et s'installe plus vite grâce à l'algorithme de compression Zstandard

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de esperanto
Membre émérite https://www.developpez.com
Le 04/10/2022 à 16:47
Tiens donc, toujours pas de message de SQL Pro pour nous expliquer que SQL Server et Oracle font ça bien mieux depuis des millénaires...

Ah ben non c'est vrai, il n'y a pas encore d'équivalent propriétaire de postgres-wasm

Comme quoi ça a du bon le logiciel libre, ça permet d'adapter un logiciel à un nouvel environnement...
6  0 
Avatar de Waldar
Modérateur https://www.developpez.com
Le 05/10/2022 à 16:11
Question (qui n'est pas un troll) : à quoi ça peut bien servir ?
4  0 
Avatar de esperanto
Membre émérite https://www.developpez.com
Le 05/10/2022 à 16:54
Citation Envoyé par Waldar Voir le message
Question (qui n'est pas un troll) : à quoi ça peut bien servir ?
Sur le site même du projet ils parlent d'un moyen de faire des tutoriels ou des démos. En gros tu développes une appli en PostgreSQL, et tu obtiens un moyen de déployer sur un serveur web une version qui va s'exécuter côté client avec des données différentes pour chaque utilisateur, puisque conservées localement.
ça peut servir aussi à une appli web pour conserver des données côté client, mieux que des cookies (limités en volume), puisque les applis web n'ont normalement pas accès au disque local pour des raisons évidentes de sécurité.
Par contre bien sûr ce n'est pas aussi puissant que du PostgreSQL natif, il vaudra mieux que le volume de données reste assez faible quand même.
Et surtout: apparemment il n'est pas encore possible de se connecter à cette base de données depuis une autre application, c'est quand même une forte limitation.

Citation Envoyé par Jeff_67 Voir le message
Disons quand-même que le wasm n'est pas le game changer qui va permettre à pgSQL de dominer le marché.
A l'heure où la mode est à considérer que toute application doit tourner dans le navigateur plutôt que de façon autonome, je n'en suis pas si sûr.
2  0 
Avatar de nickylarson
Membre habitué https://www.developpez.com
Le 06/10/2022 à 22:45
Si tu trouves Sqlite buggé, tu peux contribuer ! C’est la force de l’open source.

Parler de SQLlite alors que le sujet parle de postgresql, c’est quand même aller un peu loin non ?

SQLlite Ayant plutôt conçu pour des systèmes embarqués et / ou légers.

Postgresql a vraiment évolué dans le bon sens , c’est grâce en partie à Mysql qui ne supportait pas les transactions au début. Toutes ces innovations récentes et une stabilité à toute épreuves font de postgresql un système de choix surtout par rapport à Oracle vieillissant, en perte de vitesse qui a raté totalement le virage du Cloud, tout le contraire de M$ par exemple qui avec des base de données dans le cloud azure interrogeables en Sql ou nosql prend des part de marché.

Longue vie à postgres !
2  0 
Avatar de nickylarson
Membre habitué https://www.developpez.com
Le 04/10/2022 à 23:03
Excellent 👌
1  0 
Avatar de
https://www.developpez.com
Le 05/10/2022 à 16:35
Citation Envoyé par esperanto Voir le message
Tiens donc, toujours pas de message de SQL Pro pour nous expliquer que SQL Server et Oracle font ça bien mieux depuis des millénaires...

Ah ben non c'est vrai, il n'y a pas encore d'équivalent propriétaire de postgres-wasm

Comme quoi ça a du bon le logiciel libre, ça permet d'adapter un logiciel à un nouvel environnement...
Disons quand-même que le wasm n'est pas le game changer qui va permettre à pgSQL de dominer le marché. Déjà qu'il devrait y avoir un enfer spécial pour les développeurs qui utilisent SQL Server en mode LocalDB ou pire encore : en mode Express directement installé sur la machine cliente !
1  0 
Avatar de
https://www.developpez.com
Le 05/10/2022 à 19:47
Citation Envoyé par esperanto Voir le message

A l'heure où la mode est à considérer que toute application doit tourner dans le navigateur plutôt que de façon autonome, je n'en suis pas si sûr.
De base, pgSQL est bien trop lourd pour faire office de BDD embarquée. C'est toujours moins pire que SQL Server, mais bon quand-même.

Peut-être que Firebird sera dispo un jour en version Webassembly, qui sait ?
1  0 
Avatar de SQLpro
Rédacteur https://www.developpez.com
Le 06/10/2022 à 18:16
Je vais sous surprendre, mais je suis assez pour ce genre de chose... !

En effet, PostGreSQL n'a pas à remplacer Oracle ou SQL Server pour les grosses bases de données d'entreprise. Mais permettre d'utiliser un SGBD qui interagirait avec la navigateur web, me parait pas si mal que cela à une époque ou de plus en plus d'application sont en mode client léger, ne serait ce que pour gérer ses marques pages ou ses mots de passe...

Évidemment je préférerait que cela soit fait aussi dans Mozilla Thunderbird en remplacement de cette saloperie bugué qu'est la base SQLlite et ses corruptions systématiques....

A +
2  1 
Avatar de SQLpro
Rédacteur https://www.developpez.com
Le 11/10/2022 à 11:21
Citation Envoyé par nickylarson Voir le message
...
Postgresql a vraiment évolué dans le bon sens , c’est grâce en partie à Mysql qui ne supportait pas les transactions au début. Toutes ces innovations récentes et une stabilité à toute épreuves font de postgresql un système de choix surtout par rapport à Oracle vieillissant, en perte de vitesse qui a raté totalement le virage du Cloud, tout le contraire de M$ par exemple qui avec des base de données dans le cloud azure interrogeables en Sql ou nosql prend des part de marché.

Longue vie à postgres !
Je partage assez cette analyse et même si je critique violemment PG, je dois dire que c'est le seul SGBDR un peu sérieux, pour le marché des petites à moyenne bases (jusqu'à quelques centaines de Go, une centaine d'utilisateurs, des requêtes pas trop complexes) et pour les collectivité locale pour l'excellence de la cartouche spatiale... Quand je voit le nombre de comptabilités et de payes sous Oracle ou SQL Server, je me dis que c'est du gâchis....

A +
1  0 
Avatar de esperanto
Membre émérite https://www.developpez.com
Le 12/10/2022 à 12:04
Citation Envoyé par SQLpro Voir le message
même si je critique violemment PG,
N'empêche, la remarque de l'intervenant précédent reste valable: c'est facile de critiquer, mais c'est bien plus compliqué d'apporter soi-même une réponse à ses propres critiques.
Si tu trouves un bug dans Postgres et que tu envoies un patch, je doute qu'ils le refusent.
Si tu n'es pas d'accord avec leurs choix techniques, tu peux faire comme ici et proposer ta propre version. Surtout que tu décris souvent les choix techniques d'Oracle ou de SQL Server, sachant qu'ils ne sont pas brevetés si tu les connais si bien alors tu devrais pouvoir les reproduire.
C'est ça le vrai avantage du libre, même si Oracle ou SQL Server ont des versions gratuites, elles ne pourront jamais faire mieux sur ce point, quelles que soient leurs qualités par ailleurs.
1  0