Retour aux questions fréquentes

Comment diffuser des données onchain vers une base de données ?

Mis à jour en août 2026

Définissez un module Substreams décrivant les données que vous voulez, puis exécutez un sink qui écrit sa sortie dans votre base de données. Le sink gère la connexion, le regroupement par lots, et — surtout — la persistance du curseur pour que les redémarrages reprennent exactement là où ils s'étaient arrêtés.

Le même pipeline effectue le remplissage historique puis continue à diffuser en direct, vous n'avez donc pas à construire un chemin distinct pour chaque cas.

À quoi ressemble le pipeline ?

Quatre éléments :

Source — Firehose fournit les données blockchain, historiques et en direct.

Transformation — votre module Substreams extrait et façonne ce dont vous avez besoin. Réutilisez-en un depuis le registre, ou générez-en un avec les compétences d'agent.

Sink — un binaire qui consomme la sortie du module et l'écrit vers votre destination.

Destination — Postgres, ClickHouse, Kafka, PubSub, des fichiers, ou votre propre service.

Quels sinks sont disponibles ?

DestinationÀ utiliser pour
PostgreSQLDonnées applicatives, charges transactionnelles
ClickHouseAnalytique, séries temporelles, agrégations volumineuses
Kafka / PubSubDiffusion vers plusieurs consommateurs, systèmes pilotés par les événements
Fichiers (CSV, Parquet)S3 ou GCS, chargement d'entrepôt de données
WebhookLivraison HTTP vers votre propre point de terminaison
Streaming directConsommer en Go, JavaScript, Python ou Rust

Comment définir le bon schéma ?

C'est là que se trouve la majeure partie du vrai travail. Les données blockchain sont profondément imbriquées et votre base de données veut des tables plates et indexées — la correspondance entre les deux est une décision de conception, pas une traduction mécanique.

Deux approches. Les database changes (CDC) diffusent des changements individuels ligne par ligne, ce qui convient à la cohérence en temps réel. Les mappings relationnels transforment la sortie en tables normalisées avec des relations correctes, ce qui convient aux requêtes analytiques.

La compétence d'agent substreams-sql couvre les deux approches, y compris les stratégies d'indexation Postgres et les vues matérialisées ClickHouse. Si vous ne savez pas quelle forme vous voulez, c'est le moyen le plus rapide d'obtenir un schéma de départ sensé.

Que se passe-t-il en cas de redémarrage ?

Le sink persiste un curseur — sa position exacte dans le flux, y compris le contexte de fork. Au redémarrage, il reprend depuis ce curseur. Rien n'est manqué, rien n'est écrit en double, et si la chaîne s'est réorganisée pendant que le sink était arrêté, le flux signale ce qui a été annulé afin que le sink puisse corriger les lignes plutôt que d'en laisser des périmées.

C'est la partie fastidieuse à bien construire soi-même, et celle où les pipelines faits maison ont généralement des bugs subtils.

Dois-je exécuter le sink moi-même ?

Non. Hosted Sinks est un service géré sur The Graph Market qui exécute le sink pour vous — vous configurez un package et votre propre base Postgres ou ClickHouse dans un portail, et il indexe en continu. Actuellement en bêta, et votre base de données doit être joignable depuis internet.

Exécutez-le vous-même quand vous avez besoin d'une destination que Hosted Sinks ne couvre pas — Kafka, PubSub, des fichiers, ou un consommateur personnalisé — ou quand votre base de données ne peut pas être publiquement joignable. substreams-sink-deploy couvre ce chemin : choix du sink, formats de DSN, remplissage historique puis suivi en direct, supervision, et sécurité des redémarrages. Les modes de défaillance courants — mauvais type de protobuf, schéma manquant, incompatibilité de clé primaire, purge de lot mal réglée — sont documentés plutôt que laissés à découvrir.

Les deux utilisent le même package Substreams, c'est donc un choix de déploiement, pas un choix d'architecture.


Questions fréquentes

Puis-je remplir l'historique et diffuser en direct avec la même configuration ? Oui. Spécifiez un bloc de départ ; le sink traite l'historique en parallèle puis continue en diffusion en direct.

Que se passe-t-il si ma base de données tombe en panne ? Le sink cesse de faire avancer son curseur. Quand la base de données revient, il reprend depuis la dernière position validée.

Dois-je écrire le sink moi-même ? Non. Des binaires de sink existent pour les destinations courantes. Vous écrivez le module ; le sink n'est que de la configuration.


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