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

SKIP LOCKED — это опция в SELECT ... FOR UPDATE и SELECT ... FOR SHARE, которая позволяет игнорировать заблокированные строки. Это полезно для организации конкурентной обработки данных, когда несколько потоков (или процессов) обрабатывают записи без конфликтов....

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


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

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


Для создания компонента регистрации в 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, поиск единичной записи, как правило, не является его основной сильной стороной, поскольку он оптимизирован для обработки больших объемов данных в аналитических запросах. Тем не менее, эффективность поиска единичной записи зависит от различных факторов, таких как структура таблицы, индексы и тип запроса....

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


В ClickHouse выбор между составным индексом в ORDER BY и пропускающими индексами по каждому полю зависит от того, как именно вы планируете выполнять запросы, какие операции вам нужно ускорить, и какие данные обрабатываются в вашей таблице. Рассмотрим оба подхода и их преимущества. ...

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