могу найти ничего релевантного, у меня вот какой вопрос по поводу использования clickhouse.Clickhouse клиента (который OpenDirect() возвращает)
метод WriteBlock(block) для блока разрушающий - после того как его один раз записали, он все свои буфера сбрасывает и повторно его нельзя использовать, хотя это, на самом деле, было бы полезным - например, если кх вернул ошибку, попытаться записать тот же блок в другой шард, или же наоборот, записать один и тот же блок в большинство членов одного шарда чтобы как-никак гарантировать exactly once
Я глубоко пока не лазил, но мне интересно - там какая-то принципиальная проблема или это просто эффект от использования bytes.Buffer под капотом блока? Обсуждался уже такой вопрос?
А иначе получается так, что если приложенька сидит на каком стриме и пишет его батчами в кх, то получаем двойную буферизацию - сначала надо набрать со стрима данных, и потом из них уже блок сделать, а было бы удобно сразу из стрима класть в блок и потом спокойно его переиспользовать если потребуется (запись в кх не удалась или хочется в несколько кх слать).
не помню такого обсуждения Основной Мантейнер сейчас активно пишет v2 https://github.com/ClickHouse/clickhouse-go/pull/452 можно создать issue в github и потегать его, может быть ответит еще можно посмотреть альтернативные реализации https://github.com/vahid-sohrabloo/chconn и https://github.com/go-faster/ch
Обсуждают сегодня