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

При использовании параметрических запросов с использованием знака вопроса (?) в 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 и пропускающими индексами по каждому полю зависит от того, как именно вы планируете выполнять запросы, какие операции вам нужно ускорить, и какие данные обрабатываются в вашей таблице. Рассмотрим оба подхода и их преимущества. ...

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


Если у вас миллион записей и в поле может быть только три возможных значения, то использование индекса типа set в ClickHouse может значительно ускорить запросы с точными совпадениями (например, фильтрация по этому полю). В случае такого небольшого количества уникальных значений (три возможных значения), вам нужно подобрать подходящую гранулярность для индекса, чтобы сбалансировать точность......

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


Цифра в скобках в индексе типа set в ClickHouse указывает на параметр "granularity" этого индекса. Этот параметр определяет, с какой частотой будет обновляться индекс и как часто будут записываться данные в индекс....

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


В ClickHouse индексы типа minmax и set — это два типа пропускающих индексов (skip indexes), которые позволяют ускорить выполнение запросов, пропуская блоки данных, которые явно не соответствуют запросу. Эти индексы не являются традиционными индексами (как в реляционных базах данных), а скорее служат для оптимизации обработки больших объёмов данных....

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


Когда речь идет о скорости сортировки в ClickHouse для типов данных DateTime64(3) и Int64, важно учитывать, что оба эти типа являются числовыми и поэтому сортировка по ним будет довольно быстрой. Однако есть несколько ключевых факторов, которые могут повлиять на производительность:...

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


Если поле уже включено в ORDER BY при создании таблицы в ClickHouse, то обычно не имеет смысла создавать отдельный пропускающий индекс (skip index) по этому полю. Вот почему:...

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


В ClickHouse параметр GRANULARITY используется для определения уровня детализации индексов при создании таблиц, особенно когда мы говорим о пропускающих индексах (skip indexes) и индексации данных в движке таблицы, таком как MergeTree....

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


В ClickHouse нет возможности создавать отдельные индексы по каждому полю в традиционном понимании, как это делается в реляционных СУБД (например, отдельный индекс для каждого поля). Вместо этого ClickHouse использует механизмы, которые помогают улучшить производительность запросов с фильтрацией по отдельным полям. В ClickHouse можно создать пропускающие индексы (skip indexes), которые создаются по отдельным полям, а......

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


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

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


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

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