Эта страница не применима к 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:
-bucket создаст бакет при запуске:
-admin.port=12646 обеспечивает, чтобы административный порт gRPC, который SeaweedFS на его основе определяет, находился ниже диапазона эфемерных портов Linux, иначе при запуске его первым могло бы занять соединение.
Конечная точка S3 доступна на порту 8333; прежде чем продолжить, дождитесь ответа:
echo "s3.bucket.create -name mybucket" | docker exec -i seaweedfs weed shell.
По умолчанию запись подтверждается после передачи операционной системе. Чтобы перед подтверждением выполнять fsync каждой записи на диск, включите fsync для бакета:
MergeTree с бэкендом S3
SETTINGS disk = 's3_cache' — определённый выше кэш-диск является обёрткой для S3-диска.
Табличная функция s3
s3 читает и записывает объекты через одну и ту же конечную точку:
Резервное копирование и восстановление
BACKUP и RESTORE поддерживают конечную точку SeaweedFS в качестве пункта назначения S3: