Skip to main content
Cette page ne s’applique pas à ClickHouse Cloud. La fonctionnalité décrite ici n’est pas disponible dans les services ClickHouse Cloud. Consultez le guide ClickHouse Compatibilité Cloud pour plus d’informations.
La fonction de table s3 et le type de disque S3 de ClickHouse sont compatibles avec SeaweedFS, un stockage d’objets distribué open source doté d’une passerelle compatible S3. SeaweedFS traite nativement les requêtes de type chemin, de sorte qu’un stockage auto-hébergé fonctionne sans DNS générique. SeaweedFS prend également en charge les tables Iceberg : ses buckets de tables stockent les données sous forme de fichiers Parquet, et le catalogue REST Iceberg intégré fournit les métadonnées des tables. Consultez le guide du catalogue SeaweedFS pour les interroger via le même endpoint. Utilisez SeaweedFS 4.42 ou une version ultérieure. Les versions antérieures peuvent supprimer un objet dont l’écriture est validée alors que son dossier parent est supprimé car considéré comme vide, ce qui se manifeste par Object ... suddenly disappeared juste après une écriture réussie.

Exécuter SeaweedFS en local

Pour effectuer des tests en local, créez un fichier s3config.json contenant les identifiants S3 :
Démarrez ensuite l’ensemble de la stack SeaweedFS dans un conteneur : le flag -bucket crée le bucket au démarrage :
Le point de terminaison S3 écoute sur le port 8333 ; attendez qu’il réponde avant de continuer :
Vous pouvez créer d’autres buckets à tout moment avec echo "s3.bucket.create -name mybucket" | docker exec -i seaweedfs weed shell. Par défaut, une écriture est confirmée dès qu’elle est transmise au système d’exploitation. Pour synchroniser chaque écriture sur le disque avec fsync avant de la confirmer, activez fsync sur le bucket :

MergeTree adossé à S3

La configuration de MergeTree adossée à S3 est compatible, moyennant quelques modifications mineures :
L’endpoint contient le nom du bucket (clickhouse), suivi d’un préfixe de chemin (tables/), pour les données de la table. SeaweedFS ne nécessite pas de région ; le tag peut donc rester vide. Remplacez seaweedfs par l’hôte qui exécute la gateway S3.
Les tables stockent ensuite leurs données sur SeaweedFS à l’aide de la storage policy :
Pour conserver localement en cache les données fréquemment lues, créez plutôt la table avec SETTINGS disk = 's3_cache' : le disque de cache défini ci-dessus repose sur le disque S3.

La fonction de table s3

La fonction de table s3 lit et écrit des objets via le même endpoint :
Les motifs glob permettent de lire plusieurs objets.

Sauvegarde et restauration

BACKUP et RESTORE acceptent un endpoint SeaweedFS comme destination S3 :
Dernière modification le 18 août 2026