Retour aux questions fréquentes

Comment envoyer des données blockchain dans Postgres ?

Mis à jour en août 2026

Exécutez un sink SQL Substreams vers votre instance Postgres. Vous définissez le schéma de table, écrivez un module qui émet les lignes correspondantes, et pointez le sink sur une chaîne de connexion — il rejoue l'historique puis continue en streaming.

Le sink maintient une table de curseur, de sorte qu'un redémarrage reprend exactement à la bonne position plutôt que de retraiter ou de sauter des blocs.

Dois-je faire tourner le sink moi-même ?

Non. Hosted Sinks s'en charge pour vous — configurez un package et les informations de connexion à votre Postgres sur The Graph Market, et il indexe en continu sans infrastructure de votre côté. Il existe des guides documentés pour Supabase et Neon.

C'est en bêta, et votre base de données doit être accessible depuis internet. Si cela vous exclut, ou si vous voulez que le sink soit co-localisé avec votre base de données, faites-le tourner vous-même comme décrit ci-dessous. Dans les deux cas, le package Substreams est identique.

De quoi ai-je besoin pour la mise en place ?

Un schéma. Un fichier schema.sql définissant vos tables. Le sink ne le devinera pas — les tables doivent exister et correspondre à ce que votre module émet.

Un module. La plupart des packages du registre fonctionnent déjà avec le sink SQL sans rien écrire — vous avez rarement besoin d'écrire le vôtre. Quand c'est le cas, l'agent skill substreams-sql génère à la fois le schéma et le module à partir d'une description de ce que vous voulez.

Un DSN. La chaîne de connexion Postgres. Bien régler le schéma et les paramètres est un obstacle fréquent au démarrage.

Une clé API. Depuis thegraph.market, aucune information personnelle requise.

Quel pattern de sortie dois-je utiliser ?

Changements de base de données (CDC)Mappings relationnels
ÉmetInsertions, mises à jour, suppressions ligne par ligneTables normalisées avec relations
Idéal pourCohérence en temps réel, état mutableRequêtage analytique, jointures
Gestion des reorgsLignes corrigées en placeLignes corrigées en place

Le CDC convient aux données dont les enregistrements changent — positions, soldes, état courant. Les mappings relationnels conviennent aux données événementielles en append que vous interrogerez de façon analytique.

Quelles sont les erreurs courantes ?

Elles reviennent régulièrement en mode Database Changes (CDC) et sont documentées dans le skill de déploiement — le mode mappings relationnels applique son propre schéma et n'a pas ces deux problèmes :

Mauvais type protobuf. En mode CDC, le sink attend un type de sortie précis de votre module. Un décalage échoue immédiatement, ce qui est au moins facile à diagnostiquer.

schema.sql ou tables métier manquantes. En mode CDC, le sink ne crée pas les tables pour vous.

Incohérence de clé primaire. Si votre module émet une clé composite qui ne correspond pas à la définition de la table, les écritures échouent ou entrent silencieusement en conflit. Les données blockchain nécessitent souvent des clés composites — hash de transaction plus index de log, par exemple — et se tromper là-dessus est le problème réel le plus fréquent.

Réglage du flush par batch. Les valeurs par défaut sont prudentes. Pour de gros backfills, régler l'intervalle de flush change sensiblement le débit.

Est-ce que ça fonctionne réellement de bout en bout ?

Oui, et cela a été testé publiquement. Dans l'évaluation publiée de StreamingFast, un agent IA a construit un pipeline Substreams-vers-Postgres complet et prêt pour la production à partir d'un prompt en langage naturel et a exactement correspondu à la référence — en résolvant au passage des problèmes de schéma DSN et de clé primaire composite.

Comment gérer le backfill ?

Indiquez un bloc de départ et laissez le sink s'exécuter. Le traitement historique se fait en parallèle, donc une grande plage se termine bien plus vite que le temps de bloc, et le sink bascule automatiquement en streaming en direct une fois qu'il a rattrapé son retard.

Pour de très gros backfills, chargez dans une table de staging puis basculez, plutôt que d'écrire dans une table qui sert des requêtes en direct.


Questions fréquentes

Les reorgs vont-ils corrompre mes tables ? Non, à condition d'utiliser un sink qui suit les curseurs. Les blocs réorganisés sont signalés et les lignes concernées sont corrigées.

Puis-je utiliser un Postgres managé ? Oui — RDS, Cloud SQL, Supabase et similaires fonctionnent tous. Il vous faut l'accès réseau et les droits d'écriture.

Comment ajouter une colonne plus tard ? Modifiez la table, mettez à jour le module, et relancez depuis le bloc à partir duquel le nouveau champ compte.


Obtenez une clé API sur thegraph.market — aucune information personnelle requise.

Voir aussi : Comment diffuser des données onchain vers une base de données ? · Comment envoyer des données blockchain dans ClickHouse ? · Comment remplir un historique de données blockchain (backfill) ?