IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

1. Что такое ClickHouse и для каких задач он подходит? ClickHouse — это колоночная СУБД, оптимизированная для аналитических запросов (OLAP). Она предназначена для обработки больших объемов данных с высокой скоростью. Подходит для задач, где требуется агрегация, фильтрация и анализ больших данных, например, аналитика веб-приложений, логов, метрик и т.д. 2. Какие основные преимущества ClickHouse?......

продолжить чтение


Для создания отказоустойчивого кластера RabbitMQ с помощью Docker Compose, нужно будет настроить несколько контейнеров для RabbitMQ с необходимыми конфигурациями для кластера, а также обеспечить нужные параметры для взаимодействия между контейнерами....

продолжить чтение


oneof в Protobuf позволяет включать несколько типов данных в одно поле, но в один момент времени будет иметь значение только один из этих типов. Это полезно, когда нужно моделировать поле, которое может принимать разные типы данных, но не одновременно....

продолжить чтение


Для создания компонента регистрации в etcd с использованием Go, который позволяет сервису зарегистрировать себя в реестре и гарантировать, что информация будет доступна другим сервисам, можно использовать библиотеку etcd в Go....

продолжить чтение


В etcd, механизм watch отслеживает изменения в реестре данных, включая как добавление, так и удаление данных. Когда вы используете watch с префиксом или конкретным ключом, etcd будет уведомлять вас не только о добавлении (PUT) или изменении значений, но и об удалении (DELETE) данных....

продолжить чтение


Transactional Outbox — это шаблон для надёжной передачи событий из базы данных в брокер сообщений (Kafka, RabbitMQ, NATS и т. д.). Он помогает избежать проблем с "двойной записью" (Dual Write Problem), обеспечивая атомарность базы данных и брокера сообщений....

продолжить чтение


Для реализации механизма обнаружения сервисов с использованием watch в etcd можно использовать подход, при котором каждый сервис регистрирует себя в etcd при старте, а другие сервисы следят за изменениями в реестре с помощью watch и соответствующим образом реагируют на эти изменения....

продолжить чтение


Оба подхода, CAST(val, 'String') и toString(val), используются для преобразования значения в строку в ClickHouse. Однако между ними есть отличия в функциональности, производительности и применении. Рассмотрим их различия:...

продолжить чтение


Потребитель в группе может читать сообщения из нескольких разделов одновременно. Как именно распределяются разделы между потребителями зависит от следующих факторов:...

продолжить чтение


В Kafka при использовании потребителя нужно явно помечать сообщения как обработанные (committed). Это называется фиксацией смещения (offset commit). В контексте пакетной обработки сообщений это можно делать одним из двух способов:...

продолжить чтение


При использовании параметрических запросов с использованием знака вопроса (?) в SQL-запросах через библиотеку clickhouse-go или другие библиотеки в Go, такие параметры безопасно обрабатываются, и в большинстве случаев предотвращают SQL инъекции....

продолжить чтение


Библиотека migrate (из пакета github.com/golang-migrate/migrate) поддерживает ClickHouse как источник данных для миграций. Чтобы использовать migrate.New или другие методы для миграции в ClickHouse, параметры подключения задаются через строку DSN....

продолжить чтение


DateTime64(N) — это расширенный тип данных в ClickHouse, предназначенный для хранения даты и времени с высокой точностью, вплоть до микросекунд и даже наносекунд. Этот тип особенно полезен для систем, где требуется высокая точность временных меток, например, в финансовых приложениях, логах или telemetry....

продолжить чтение


Вот пример на Go с использованием библиотеки Sarama, где происходит вычитывание большого количества записей (например, 10,000), их обработка и ручной коммит оффсетов после успешной обработки....

продолжить чтение


В ClickHouse атомарность вставки пакета записей работает на уровне всей операции: либо весь пакет будет записан, либо не будет записан вообще, если произошла ошибка. Давайте разберемся, как это работает....

продолжить чтение


В ClickHouse нет полноценной поддержки транзакций в традиционном смысле, как в реляционных базах данных (например, в MySQL или PostgreSQL). Однако есть определенные механизмы, которые обеспечивают атомарность операций записи и чтения, что может частично заменить транзакции в некоторых сценариях....

продолжить чтение


Когда в поле хранится строковый UUID, выбор индекса для поиска единичной записи зависит от нескольких факторов. Рассмотрим, как различные индексы и подходы могут повлиять на производительность запросов....

продолжить чтение


В ClickHouse, поиск единичной записи, как правило, не является его основной сильной стороной, поскольку он оптимизирован для обработки больших объемов данных в аналитических запросах. Тем не менее, эффективность поиска единичной записи зависит от различных факторов, таких как структура таблицы, индексы и тип запроса....

продолжить чтение