@JeanPaulBelmondo

Где хранить данные перед отправкой в Clickhouse?

С кликхаусом ещё только разбираюсь, знакомлюсь.

Но насколько я уже понял, туда не нужно слать данные при каждом запросе. Нужно отсылать пачка по 1000 записей например.

Вопрос, где хранить данные перед их отправкой в Clickhouse?
У меня на ум приходят следующие варианты:
1) Кэш;
2) БД (MySQL, PostgreSQL);
3) Просто файл;
И несколько раз в день, по крону отправлять их в Clickhouse.

Но это всего лишь мои мысли и, возможно, бредовые. Как правильно хранить данные перед отправкой?
  • Вопрос задан
  • 287 просмотров
Решения вопроса 1
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
В очереди. Kafka, rebbit. Это стандарт хранения, хотя если данных не много и не нужен доп функционал очередей, можно писать в файл и избавиться от лишней зависимости, а потом по крону csv файл заливать в клик (можно прям на баше)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Vitsliputsli
Как удобно, так и храните. Брокер сообщений предлагают, потому что, это универсальный вариант, гарантирующий доставку (если, конечно, не в памяти он будет хранить).
Если данные уже лежат в классический СУБД, то есть резон там же организовать очередь и забирать из нее, не вводя дополнительный инструмент.
Т.к. инсертим батчами, то разумеется нужно делать инсерт из файла, это будет эффективнее. Т.е. готовите файл, и через какой-либо промежуток времени заливаете его. И, разумеется, только после заливки помечаете записи как обработанные.
Наверное, можно писать даже прямо в файл для заливки, если архитектура позволяет, главное проработать момент, когда начинаем писать в новый файл, чтобы записи не попали в старый, когда началась процедура заливки в ClickHouse.
Но, при этом остается момент: ваш заливщик умер, когда уже получил подтверждение от Clickhouse, что все записалось, но не успел зафиксировать это в очереди. Соответственно это нужно проверять.
Если у вас не только insert, но и update, то нужно усложнять архитектуру (заодно и решится выше указанная проблема), нужно удалять предыдущие записи для обновляемых.
Ответ написан
Комментировать
llgruff
@llgruff
Scala
Смотрели доклад Алексея Миловидова?
Эффективное использование ClickHouse
Там обзор вариантов вставки, их плюсы и минусы.
Мы пишем в файлы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы