1 pièce(s) jointe(s)
Supabase annonce la mise en libre accès de Postgres-wasm, serveur PostgreSQL qui fonctionne dans un navigateur
PostgreSQL : Supabase annonce la mise en libre accès de Postgres-wasm,
un serveur PostgreSQL qui fonctionne dans un navigateur
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:
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 ?
:fleche: Quel est votre avis sur le sujet ?
Voir aussi :
:fleche: 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
:fleche: PostgreSQL 10 est disponible en téléchargement : quelles sont les nouveautés de la dernière version du SGBD libre ?
:fleche: Disponibilité générale de PostgreSQL 11 : un aperçu des principales fonctionnalités du SGBDRO libre
:fleche: OpenZFS 2.0 est disponible avec la prise en charge de Linux et FreeBSD et apporte de nouvelles fonctionnalités comme la compression ZStandard
:fleche: 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
2 pièce(s) jointe(s)
Supabase Storage prend désormais en charge le protocole S3
Supabase Storage prend désormais en charge le protocole S3, Supabase est une alternative open source à Firebase, avec une base de données Postgres, l'authentification, des API d'instantané et des fonctions Edge
Supabase Storage est maintenant officiellement un fournisseur de stockage compatible S3. C'est l'une des fonctionnalités les plus demandées et elle est disponible dès aujourd'hui en version alpha publique. Les téléchargements avec possibilité de reprise passent également de la phase bêta à la phase de disponibilité générale.
Le moteur de Supabase Storage est entièrement open source et est l'une des rares solutions de stockage à offrir 3 protocoles interopérables pour gérer vos fichiers :
- Téléchargements standards : pour commencer en toute simplicité
- Téléchargements avec reprise : pour reprendre des téléchargements avec des fichiers volumineux.
- Téléchargements S3 : pour une compatibilité avec une pléthore d'outils
Compatibilité S3
Chez Supabase, l'adoption des standards de l'industrie est une priorité. La prise en charge des normes rend les charges de travail portables, un principe clé du produit. L'API S3 est sans aucun doute un standard de stockage, et elle est rendue accessible aux développeurs de différents niveaux d'expérience.
Le protocole S3 est rétrocompatible avec les autres API de Supabase. Si vous utilisez déjà Storage via les API REST ou TUS, vous pouvez aujourd'hui utiliser n'importe quel client S3 pour interagir avec vos buckets et vos fichiers : téléchargez avec TUS, servez-les avec REST et gérez-les avec le protocole S3.
Le protocole fonctionne sur le cloud, le développement local et l'auto-hébergement.
Authentification avec Supabase S3
Pour vous authentifier auprès de Supabase S3, vous avez deux possibilités :
- Les identifiants standards access_key et secret_key. Vous pouvez les générer à partir de la page des paramètres de stockage. Cette méthode d'authentification est largement compatible avec les outils supportant le protocole S3. Elle est également destinée à être utilisée exclusivement côté serveur puisqu'elle fournit un accès complet à vos ressources de stockage. Dans un avenir proche, des clés d'accès à portée limitée seront ajoutées, qui permettront d'accéder à des buckets spécifiques.
- Les identifiants définis par l'utilisateur avec RLS. Cela permet de tirer parti d'un concept bien adopté dans tous les services de Supabase, la sécurité au niveau des lignes (Row Level Security). Il vous permet d'interagir avec le protocole S3 en définissant les opérations de stockage pour un utilisateur ou un rôle authentifié particulier, en respectant vos politiques RLS existantes. Cette méthode est rendue possible par l'utilisation de l'en-tête Session token que le protocole S3 prend en charge.
Intégrations compatibles S3
Avec le support du protocole S3, vous pouvez désormais connecter Supabase Storage à de nombreux outils et services tiers en fournissant une paire d'identifiants qui peuvent être révoqués à tout moment.
Vous pouvez utiliser des outils populaires pour les sauvegardes et les migrations, tels que :
- AWS CLI : le CLI officiel d'AWS
- rclone : un programme en ligne de commande pour gérer les fichiers sur le stockage dans le cloud.
- Cyberduck : un navigateur de stockage dans le cloud pour Mac et Windows.
- et tout autre outil compatible avec S3 ...
S3 pour les ingénieurs de données
La compatibilité S3 offre une primitive intéressante pour les ingénieurs de données. Vous pouvez l'utiliser avec de nombreux outils populaires :
- Des entrepôts de données comme ClickHouse
- Des moteurs de requête comme DuckDB, Spark, Trino, & Snowflake External Table
- Des data loaders comme Fivetran & Airbyte
Dans cet exemple, Tyler, un analyste de données hors pair de Supabase, montre comment stocker des fichiers Parquet dans Supabase Storage et les interroger directement à l'aide de DuckDB :
Téléchargements multipartites dans S3
En plus des téléchargements standard et des téléchargements avec reprise, Supabase Storage prend désormais en charge les téléchargements en plusieurs parties par l'intermédiaire du protocole S3. Cela vous permet de maximiser le débit de téléchargement en téléchargeant des morceaux en parallèle, qui sont ensuite concaténés à la fin.
Les téléchargements avec reprise sont généralement disponibles
Parallèlement à l'annonce de la disponibilité générale de la plateforme, Supabase est ravie d'annoncer que les téléchargements avec possibilité de reprise sont également disponibles de manière générale.
Les téléchargements avec reprise sont basés sur le protocole TUS. Le chemin parcouru pour en arriver là a été immensément gratifiant, en travaillant en étroite collaboration avec l'équipe TUS. Un grand coup de chapeau aux mainteneurs du protocole TUS, @murderlon et @acconut, pour leur approche collaborative de l'open source.
Supabase a contribué à certaines fonctionnalités avancées de l'implémentation Node de TUS Spec, y compris les verrous distribués, la taille maximale des fichiers, l'extension d'expiration et de nombreuses corrections de bugs :
Ces fonctionnalités étaient essentielles pour Supabase, et comme le serveur de nœuds TUS est open source, elles sont également disponibles pour vous. Il s'agit là d'un autre principe fondamental : dans la mesure du possible, Supabase utilise et soutient des outils existants plutôt que de les développer à partir de zéro.
- Transferts entre buckets : Supabase a ajouté la possibilité de copier et de déplacer des objets d'un bucket à l'autre, alors qu'auparavant ces opérations n'étaient possibles qu'à l'intérieur d'un même bucket de Supabase.
- Codes d'erreur standardisés : Les codes d'erreur ont été standardisés pour l'ensemble du serveur de stockage et il sera désormais beaucoup plus facile d'appliquer la logique à des erreurs spécifiques.
- Migrations multi-locataires : Supabase a apporté des améliorations significatives à l'exécution des migrations sur l'ensemble de ses locataires. Cela a réduit les erreurs de migration à travers la flotte et permet d'exécuter des migrations de longue durée de manière asynchrone.
- Dépendances découplées : Storage est entièrement découplé des autres produits Supabase, ce qui signifie que vous pouvez exécuter Storage comme un service autonome.
Source : "Supabase Storage: now supports the S3 protocol" (Supabase)
Et vous ?
:fleche: Quel est votre avis sur le sujet ?
:fleche: Quelles fonctionnalités de Supabase Storage trouvez-vous intéressantes et utiles ?
Voir aussi :
:fleche: PostgreSQL : Supabase annone la mise en libre accès de Postgres-wasm, un serveur PostgreSQL qui fonctionne dans un navigateur
:fleche: PostgreSQL 16 est disponible, la dernière version de la base de données open source apporte des améliorations au parallélisme des requêtes et à la réplication logique
:fleche: Neon PostgreSQL, une nouvelle approche moderne du développement bases de données, est disponible : Autogéré, extensibilité automatique, calculs et stockage séparé pour être plus évolutif