Vincent
Posted on August 22, 2024
Petit disclaimer avant de commencer ce post. L’IA est un outil très puissant d’assistance mais pour le moment nous ne pouvons pas lui déléguer l’entière responsabilité du travail. Alors je vous incite fortement à vérifier tout le contenu généré par une IA. Bonne lecture !
Je viens de découvrir un outil très intéressant qui peut vous assister dans la création de vos schémas de base de données Postgres. Cet outil c’est postgres.new !
Voici le lien vers le repository du projet https://github.com/supabase-community/postgres-newet le lien vers l’interface https://postgres.new/.
postgres.new c’est quoi ?
postgres.new est un outil gratuit de création de base de données PostgreSQL par IA développé par Supabase.
L’interface ressemble à tous les assistant d’IA avec la liste des contextes de génération à gauche, au milieu le contenu qui est généré et à droite la barre de prompt permettant de faire des requêtes.
Comment ça marche sous le capot ?
PostgresNew peut fonctionner uniquement dans le navigateur car il est construit par-dessus PGLite https://pglite.dev/ (développé par ElectricSQL) qui est une version Web Assembly de Postgres offrant une compatibilité navigateur web.
Ainsi, il est possible de créer une base de données Postgres, faire des requêtes et stocker la base de données, tout cela au sein du navigateur. Par défaut, la base est stocker via l’indexedDB du navigateur permettant de persister les données au rafraichissement.
Quelles sont les fonctionnalités ?
Importer des données
Il est possible de drag and drop un fichier CSV dans la console de prompt. L’agent va reconnaitre le fichier, l’importer et créer une table en analysant le contenu du fichier.
Voici un exemple de fichier CSV représentant le taux de natalité en fonction de l’âge des femmes sur la période 2005 / 2022.
Voici un extrait du fichier CSV :
Et voici la table que postgres.new a généré :
Le script de migration qui permet de créer la table est accessible dans l’onglet Migrations
.
Demander des informations sur le jeu de données
Il est possible de faire des requêtes en s’adressant directement à l’agent. Par exemple, je demande la catégorie d’âge qui a le plus d’enfant, l’agent est capable de répondre que c’est la tranche des 30/34ans qui est la plus propice aux naissances.
Représenter des données
Il est possible de demander une représentation graphique des données. Ici, je demande de me représenter les 4 groupes d’âge qui ont le plus d’enfant. L’agent me représente dans un diagramme à barre les données que je lui demande. C’est assez bluffant !
On peut lui demander d’afficher les mêmes données dans un diagramme circulaire.
Créer un schéma from scratch
Il est possible de décrire un besoin ou une fonctionnalité et l’agent se charge de créer un schéma capable de répondre à la demande.
Par exemple si je lui demande de réaliser un schéma qui clone une application telle que Twitter, l’agent me créer le schéma suivant :
On a également une description de toutes les tables.
Ici, on a bien un schéma minimal permettant de reproduire le comportement du MVP de Twitter (ou X).
Voici à quoi ressemble le script de migration :
-- Migrations will appear here as you chat with AI
create table users (
id bigint primary key generated always as identity,
username text unique not null,
email text unique not null,
password_hash text not null,
created_at timestamp with time zone default now(),
bio text,
location text
);
create table tweets (
id bigint primary key generated always as identity,
user_id bigint references users (id) on delete cascade,
content text not null,
created_at timestamp with time zone default now()
);
create table followers (
follower_id bigint references users (id) on delete cascade,
followee_id bigint references users (id) on delete cascade,
primary key (follower_id, followee_id)
);
create table likes (
user_id bigint references users (id) on delete cascade,
tweet_id bigint references tweets (id) on delete cascade,
primary key (user_id, tweet_id)
);
create table retweets (
user_id bigint references users (id) on delete cascade,
tweet_id bigint references tweets (id) on delete cascade,
created_at timestamp with time zone default now(),
primary key (user_id, tweet_id)
);-- Migrations will appear here as you chat with AI
create table users (
id bigint primary key generated always as identity,
username text unique not null,
email text unique not null,
password_hash text not null,
created_at timestamp with time zone default now(),
bio text,
location text
);
create table tweets (
id bigint primary key generated always as identity,
user_id bigint references users (id) on delete cascade,
content text not null,
created_at timestamp with time zone default now()
);
create table followers (
follower_id bigint references users (id) on delete cascade,
followee_id bigint references users (id) on delete cascade,
primary key (follower_id, followee_id)
);
create table likes (
user_id bigint references users (id) on delete cascade,
tweet_id bigint references tweets (id) on delete cascade,
primary key (user_id, tweet_id)
);
create table retweets (
user_id bigint references users (id) on delete cascade,
tweet_id bigint references tweets (id) on delete cascade,
created_at timestamp with time zone default now(),
primary key (user_id, tweet_id)
);
Modifier le schéma généré
Il est possible de modifier le schéma généré en demandant directement à l’agent via la console de prompt, soit en passant par l’interface qui permet quelque manipulation.
Admettons que je veuille que la bio de la table users ne soit jamais nul, alors je peux cliquer sur la colonne et sélectionner “rendre non nul”.
L’agent nous informe que la demande à bien été prise en compte.
Les nouvelles lignes permettant la migration sont ajoutées dans le script de migration.
alter table users
alter column bio
set not null;
Conclusion
Ce post s’appuie sur la vidéo de démonstration de postgres.new. Je vous conseille d’aller la regarder ! https://www.youtube.com/watch?v=ooWaPVvljlU
On commence à banaliser la capacité des IA mais aurait-on cru que tous ces progrès arriveraient si vite ? Personnellement ça me bluff! Toutefois comme je l’ai dit en introduction, il est primordial de vérifier un minimum ce que l’IA fait.
Pour résumé, PostgresNew c’est un assistant de création et de manipulation de base de données Postgres. Il permet de gagner pas mal de temps pour la construction ou l’analyse de données.
De mon côté, je vais continuer de jouer avec et j’ai hâte de voir le futur de ce projet !
Posted on August 22, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.