Skip to main content
Эта страница не применима к ClickHouse Cloud. Описанная здесь возможность недоступна в сервисах ClickHouse Cloud. Дополнительные сведения см. в руководстве ClickHouse Cloud Compatibility.
Табличная функция s3 и тип диска S3 в ClickHouse совместимы с SeaweedFS — распределённым хранилищем объектов с открытым исходным кодом и S3-совместимым шлюзом. SeaweedFS нативно поддерживает запросы в стиле path-style, поэтому самоуправляемое хранилище работает без wildcard DNS. SeaweedFS также поддерживает таблицы Iceberg: в его бакетах таблиц данные хранятся в виде файлов Parquet, а встроенный REST-каталог Iceberg предоставляет метаданные таблиц. О выполнении запросов к ним через ту же конечную точку см. руководство по каталогу SeaweedFS. Используйте SeaweedFS 4.42 или более новую версию. В более ранних версиях объект может быть удалён, если коммит его записи происходит одновременно с удалением родительской папки как пустой. Сразу после успешной записи это проявляется сообщением Object ... suddenly disappeared.

Запуск SeaweedFS на локальной машине

Для локального тестирования создайте файл s3config.json с учетными данными S3:
Затем запустите весь стек SeaweedFS в одном контейнере — флаг -bucket создаст бакет при запуске:
Конечная точка S3 доступна на порту 8333; прежде чем продолжить, дождитесь ответа:
Дополнительные бакеты можно создать в любое время с помощью команды echo "s3.bucket.create -name mybucket" | docker exec -i seaweedfs weed shell. По умолчанию запись подтверждается после передачи операционной системе. Чтобы перед подтверждением выполнять fsync каждой записи на диск, включите fsync для бакета:

MergeTree с бэкендом S3

Конфигурация MergeTree с бэкендом S3 совместима после внесения незначительных изменений:
Конечная точка содержит имя бакета (clickhouse), за которым следует префикс пути (tables/) для данных таблицы. SeaweedFS не требует указания региона, поэтому соответствующий тег можно оставить пустым. Замените seaweedfs на хост, на котором запущен шлюз S3.
Затем таблицы размещают данные в SeaweedFS с помощью политики хранения:
Чтобы локально кэшировать часто считываемые данные, создайте таблицу с SETTINGS disk = 's3_cache' — определённый выше кэш-диск является обёрткой для S3-диска.

Табличная функция s3

Табличная функция s3 читает и записывает объекты через одну и ту же конечную точку:
Глоб-шаблоны позволяют читать несколько объектов.

Резервное копирование и восстановление

BACKUP и RESTORE поддерживают конечную точку SeaweedFS в качестве пункта назначения S3:
Последнее изменение 18 августа 2026 г.