BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по ClickHouse » Энциклопедия ClickHouse » clickhouse csv

clickhouse csv

 

Краткое введение

CSV остается одним из самых распространённых форматов передачи табличных данных между системами. В контексте ClickHouse работа с CSV охватывает как прямой импорт/экспорт, так и интеграцию CSV-данных в сложные ETL-пайплайны: от загрузки файлов в S3 до массовой загрузки в распределённые таблицы. Эта глава фокусируется на особенностях форматов CSV, их применении в ClickHouse, типичных паттернах архитектуры и практических рекомендациях по настройке, верификации и мониторингу загрузок. Мы рассмотрим не только «что» делать, но и «почему так»: как выбор формата CSV и конфигураций импорта влияет на производительность, надёжность и стоимость обслуживания.

 

Введение

CSV как формально простой формат обладает рядом преимуществ: простота, широкая поддержка со стороны источников и инструментов, минимальные требования к схеме, возможность горизонтальной масштабируемости загрузки. Но именно простота нередко скрывает сложности: различия в эквивалентности типов, обработка заголовков и явных/неявных преобразований типов, поведение при экранировании и переносах строк, вопросы детерминированности и идемпотентности загрузок.

ClickHouse предоставляет богатый набор возможностей для работы с CSV: форматы CSV, CSVWithNames и CSVWithNamesAndTypes, таблицы и движки для обработки больших пачек данных, функции чтения из внешних источников (например, S3, URL и локальные файлы), а также инструменты для контроля потока и контроля ошибок. В рамках курса мы рассмотрим, как выбрать подходящий формат CSV, как подготовить данные и как построить устойчивые и повторяемые пайплайны загрузки. В конце главы будут примеры реальных сценариев, включая открытое ПО и отечественные решения, которые дополняют экосистему ClickHouse.

 

Теоретические основы и терминология

  • CSV и его форматы в ClickHouse:
    • FORMAT CSV: базовый формат CSV без заголовков. Данные должны соответствовать порядку столбцов таблицы.
    • FORMAT CSVWithNames: CSV с первой строкой-заголовком, которая задаёт имена столбцов.
    • FORMAT CSVWithNamesAndTypes: CSV, где первая строка - имена столбцов, вторая - типы (часто применяется для точного приведения типов при загрузке).
  • Ключевые параметры обработки CSV:
    • delimiters: основной разделитель полей (зачем нужна настройка format_csv_delimiter).
    • quoting и escaping: правила экранирования кавычек и специальных символов внутри полей.
    • поддерживаемые типы: Date, DateTime, UInt/Int, Decimal, Float и String, и как они конвертируются из строк.
    • обработка заголовков: наличие или отсутствие заголовка влияет на выбор FORMАТ CSVWithNames и CSVWithNamesAndTypes.
  • Уровни абстракций загрузки:
    • Прямой импорт через INSERT ... FORMAT CSV/CSVWithNames: подходит для небольших и средних партий.
    • Массовые загрузки через клиентскую оболочку (clickhouse-client) или драйверы языков.
    • Интеграции в ETL-пайплайны: адаптеры к S3, HDFS, HTTP и локальным файловым системам.
  • Типовые паттерны обработки ошибок:
    • пропуски строк, неверный формат чисел, несоответствие схемы.
    • работа с параметрами allow_errors_num и парсинг-исключениями.
  • Производительность и компрессия:
    • загрузка в пакетах и размер блока вставки (max_insert_block_size, минимизация коллизий с дедупликацией).
    • влияние форматов CSV на векторизацию, применение форматов в сочетании с таблицами MergeTree и др.

       

Методологии и подходы

  • Выбор формата под задачу:
    • Для потоковых загрузок и совместимости - CSVWithNames/CSVWithNamesAndTypes, когда важна точная привязка столбцов и типов.
    • Для простых, чистых данных без заголовков - FORMAT CSV.
    • Для сложной схемы с явными типами - CSVWithNamesAndTypes и предварительная верификация схемы на стороне источника.
  • Проверка качества данных до загрузки:
    • валидировать количество столбцов и соответствие типов.
    • проверки диапазонов значений и конвертации дат.
    • дополнительные проверки на уникальные ключи и дубликаты.
  • Стратегии идемпотентной загрузки:
    • использование уникальных ключей и денормализация ранних этапов ETL.
    • контроль версий CSV-архивов и повторная загрузка с детектированием изменений.
  • Интеграции и совместимость с инструментами:
    • Python-пайплайны (помощь через clickhouse-driver, clickhouse-connect) для подготовки и отправки данных.
    • Open-source инструменты: Apache NiFi, Apache Airflow, Dagster для orchestrating загрузок.
    • Российские альтернативы и локализация процессов: использование отечественных сервисов для логирования и мониторинга, интеграция с отечественными системами безопасности и идентификации данных.

       

Архитектура и технологическая реализация

  • Архитектурные паттерны:
    • Batch-first загрузки: CSV файлы на базе файлового хранения (S3, локальная сеть) загружаются пакетами в таблицу MergeTree или Distributed, с последующим заданием для суррогатного анализа.
    • Lambda/Kappa-подход: периодические загрузки из файлов, дополнения и обновления данных, обработка ошибок и повторные загрузки.
    • Data lakehouse-интеграция: CSV как промежуточный формат в хранилище данных, переходящий в Parquet/ORC для аналитических запросов.
  • Технологическая реализация:
    • Хранилище источников: S3, локальные NAS, HTTP endpoints.
    • Таблица назначения: ClickHouse MergeTree/ReplicatedMergeTree с подходящими ключами сортировки.
    • Инструменты загрузки:
      • clickhouse-client с форматами CSV/CSVWithNames.
      • драйверы языков (Python, Java, Go) и библиотеки для пакетной вставки.
      • интеграция через ETL-инструменты (Airflow, NiFi, Dagster).
    • Интеграция внешних источников:
      • Чтение файлов CSV из S3 через table function s3(...) в ClickHouse.
      • Чтение CSV напрямую по HTTP/FTP/локальной файловой системе через table functions или внешние сервисы.
    • Безопасность и контроль доступа:
      • TLS для клиентских соединений.
      • Роли и политики доступа к данным, аудит загрузок и журналирования ошибок.
  • Пример архитектуры:
    • Источник: пакет CSV на S3.
    • Пайплайн: S3 -> Glue/ETL (перед загрузкой) -> ClickHouse (INSERT INTO ... FORMAT CSVWithNames) -> Materialized View для агрегаций -> BI-инструменты.
    • Мониторинг: внешние сервисы логирования и предупреждений при несоответствиях.

       

Организационные и процессные аспекты

  • Управление схемой:
    • Версионирование схем таблиц.
    • Обновления типа и структуры CSV должны сопровождаться миграциями таблиц и корректировкой ETL-процессов.
  • Контроль качества и тестирование:
    • Регулярные проверки соответствия схемы и данных.
    • Непрерывное тестирование пайплайнов на подвыборках.
  • Документация и воспроизводимость:
    • Чёткое описание источников, форматов, кодировок и ограничений.
    • Скрипты и конфигурации должны быть версиями в репозитории.
  • Мониторинг и операции:
    • Метрики пропускной способности загрузок, доля ошибок, среднее время загрузки.
    • Автоматическое повторение загрузок при временных сбоях.

       

Технические детали реализации (алгоритмы, схемы, протоколы, интеграции)

  • Основные команды и примеры:
    • Создание таблицы:
      CREATE TABLE events_csv
      (
      event_date Date,
      user_id UInt64,
      event_type String,
      value Float64
      )
      ENGINE = MergeTree()

       

ORDER BY (event_date, user_id);

  • Прямой импорт через CLI:

    • Без заголовка:
      clickhouse-client --query "INSERT INTO default.events_csv FORMAT CSV" < data.csv
    • Со с заголовками:
      clickhouse-client --query "INSERT INTO default.events_csv FORMAT CSVWithNames" < data.csv
  • Импорт с заданием формата и типов:

    • CSVWithNamesAndTypes предполагает, что первая строка - имена столбцов, вторая - типы. Пример:

       

      data.csv содержит две строки заголовков

       

      дата, пользователь, тип, значение

       

      DateTime, UInt64,String, Float64

      2021-01-01 12:00:00,12345,click,1.23
      ...

  • Настройки формата и параметры загрузки:

    • Установка разделителя:

       

SET format_csv_delimiter = ',';

 

INSERT INTO default.events_csv FORMAT CSV;

  • Работа с различными разделителями:
    Применение delimiter для файлов CSV с точкой с запятой как разделителем.
  • Контроль заголовков и типов:
    При отсутствии заголовков используйте FORMAT CSV и вручную соответствуйте столбцы.
  • Чтение из внешних источников:
    • Чтение CSV из S3:
      SELECT * FROM s3('https://bucket.s3.amazonaws.com/file.csv', 'CSV', 'ACCESS_KEY', 'SECRET_KEY');
    • Чтение из HTTP/FTP:

       

SELECT * FROM url('http://example.com/data.csv', 'CSV');

  • Верификация и преобразование типов:
    • Предварительная валидация:
      • проверить формат дат, числовые диапазоны.
    • Преобразование типов на этапе загрузки:
      • ClickHouse может преобразовывать строки в Date/DateTime, но рекомендуется указать точные форматы.
  • Эффективность и параллелизм:
    • Разделение крупных CSV на партиями и параллельная загрузка с использованием нескольких клиентов.
    • Настройка max_insert_block_size и использования параллельных вставок.
  • Обработка ошибок:
    • allow_errors_num и related параметры в INSERT для пропуска ограниченного числа некорректных строк.
    • Логирование ошибок и возврат в пайплайн.

       

Риски, ограничения и типовые ошибки

  • Различия в форматах CSV:
    • Непоследовательность заголовков, несоответствие типов, различия в кодировках (UTF-8, Windows-1251).
  • Неполная или некорректная валидация схемы:
    • При несоответствии столбцов загрузка вызывает ошибки конвертации и может привести к частичному добавлению данных.
  • Проблемы с производительностью:
    • Большие CSV-файлы без сжатия или без эффективной параллельной загрузки могут перегрузить сеть или серверы.
    • Неоптимальные ключи сортировки в MergeTree могут увеличить время вставки.
  • Риск дубликатов и неполной идемпотентности:
    • Партии загрузок без контроля дубликатов могут нарушить консистентность.
  • Ограничения внешних источников:
    • Проблемы доступа к S3/HTTP, задержки сети, требования к безопасность и токены доступа.

       

Примеры open-source и российских продуктов

  • Open-source:
    • ClickHouse (основной фреймворк для аналитики и форматов CSV).
    • clickhouse-driver, clickhouse-connect (Python/JavaScript/инструменты для интеграций).
    • Apache NiFi и Apache Airflow (управление и оркестрация ETL-пайплайнов с загрузкой CSV).
    • Pandas + SQLAlchemy для подготовки данных перед загрузкой.
  • Российские решения и локализация:
    • Российские интеграционные сервисы и сервисы мониторинга для потоковой обработки, адаптированные под требования к безопасности и локализации данных.
    • Локальные решения для аудита, логирования и мониторинга загрузок, соответствующие регуляторным требованиям.
  • Рекомендованный набор связей:
    • Пайплайн: локальные CSV -> S3 -> ClickHouse (CSV/CSVWithNames) -> OLAP-выгрузки в BI.
    • Инструменты мониторинга: Prometheus + Grafana, интеграция с отечественными SIEM/лог-системами.

       

Заключение

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

 

Вопрос-Ответ (FAQ)

  1. Что лучше выбрать: FORMAT CSV или FORMAT CSVWithNames?
  • CSV лучше использовать, если у источника отсутствуют заголовки и порядок столбцов известен заранее. CSVWithNames удобен, когда заголовок есть и вы хотите привязать данные к именам столбцов без явной маппинга. CSVWithNamesAndTypes предпочтителен, когда вы хотите зафиксировать типовую спецификацию на входе и избежать догадок ClickHouse при конвертации.
  1. Как обрабатывать заголовки и типы без риска ошибок конвертации?
  • Используйте CSVWithNamesAndTypes, чтобы явно указать имена столбцов и их типы. Это снимает неопределенность и ограничивает ошибки конвертации на стадии загрузки. Если файл не содержит второй строки типов, можно применить явную миграцию типа после загрузки или преобразование в ETL-слое.
  1. Какие способы загрузки наиболее эффективны для больших CSV?
  • Разделение файлов на партии и параллельная загрузка via несколько clickhouse-client с FORMAT CSV или использование ETL-инструментов (Airflow/NiFi) с параллельной вставкой. Также полезно использовать s3(table function) для чтения CSV напрямую из облачного хранилища, если данные уже хранятся там.
  1. Каковы ключевые настройки, влияющие на производительность?
  • max_insert_block_size, format_csv_delimiter, format_csv_allow_duplicates, format_csv_allow_errors_num, и параллелизм загрузки. Правильная настройка блока вставки и параллельной загрузки может значительно снизить время загрузки и нагрузку на сеть.
  1. Как обеспечить идемпотентность загрузок?
  • Заводите уникальные ключи/идентификаторы в данные, используйте Replace/Distinct-merge паттерны, а также поддерживайте версионирование источников CSV. При повторной загрузке данные должны либо обновляться, либо игнорироваться в зависимости от согласованной политики.
  1. Что делать с ошибками конвертации во время загрузки?
  • Включайте allow_errors_num для пропуска ограниченного числа плохих строк, аккуратно логируйте ошибки и обеспечьте обратную связь в пайплайн. После загрузки анализируйте причины ошибок и исправляйте исходные CSV или схему.
  1. Как интегрировать CSV-инфраструктуру с отечественными системами мониторинга и безопасностью?
  • Используйте безопасные каналы передачи (TLS), настройки доступа, аудит и журналирование. Интегрируйте ClickHouse с локальными системами мониторинга и логирования, чтобы отслеживать задержки, ошибки и производительность загрузок, соответствуя требованиям регуляторов.
  1. Какие подводные камни встречаются при загрузке CSV в распределённые таблицы?
  • Необходимо правильно подобрать ключ сортировки (ORDER BY) и настройку репликаций/Distributed-таблиц, чтобы избежать перерасхода дискового пространства и проблем с дедупликацией. CSV-подход может потребовать отдельной обработки для согласования данных между узлами.
  1. Какие примеры кода полезны для старта?
  • Простой импорт без заголовков:
    • Создание таблицы и импорт:

       

CREATE TABLE analytics.event_csv (...)

ENGINE = MergeTree() ORDER BY (event_date, user_id);
clickhouse-client --query "INSERT INTO analytics.event_csv FORMAT CSV" < data.csv
  • Импорт с заголовками:
    • clickhouse-client --query "INSERT INTO analytics.event_csv FORMAT CSVWithNames" < data.csv
  • Чтение CSV из S3:
    • SELECT * FROM s3('https://bucket.s3.amazonaws.com/file.csv','CSV','ACCESS_KEY','SECRET_KEY');
  • Изменение разделителя:
    • SET format_csv_delimiter = ';';
    • INSERT INTO analytics.event_csv FORMAT CSV;
  1. Каковы лучшие практики по документированию и обучению сотрудников?
  • Включайте в документацию схемы таблиц, форматы входных данных, требования к кодировке и примеры команд загрузки. Создайте набор нормативов по обработке ошибок, повторной загрузке и мониторингу. Регулярно обновляйте учебные материалы на основе реальных кейсов и изменений в версиях ClickHouse.

Готовность к внедрению темы в практику показывает умение сочетать базовые принципы CSV с продвинутыми возможностями ClickHouse, а также способность подбирать архитектуру и операции под конкретные бизнес-задачи, поддерживая качество и скорость аналитических пайплайнов.

← Предыдущая статья
clickhouse java
Следующая статья →
Clickhouse password

 

Узнать стоимость решенияЗапросить видео презентацию

Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  •  ООО «ММК-Информсервис» создает высокотехнологичные решения для эффективной работы предприятий. Разрабатывают и внедряют телекоммуникационные и бизнес-приложения, автоматизируют производство, выстраивают и поддерживают корпоративную IT-инфраструктуру.

  • «Лента» – первая по величине сеть гипермаркетов и четвертая среди крупнейших розничных сетей страны. Компания была основана в 1993 г. в Санкт-Петербурге.

    «Лента» управляет 249 гипермаркетами в 88 городах России и 131 супермаркетом в Москве, Санкт-Петербурге, Сибири, Уральском и Центральном регионах с общей торговой площадью около 1 494 тыс. кв. м. Средняя торговая площадь одного гипермаркета «Лента» составляет около 5 500 кв.м, средняя площадь супермаркета – 800 кв.м. Компания оперирует двенадцатью распределительными центрами. Штат компании – около 50, 5 тыс. человек.

  • Компания ООО "Комус" - один из лидеров российского рынка оптовых продаж офисных товаров и техники. Компания поставляет широкий ассортимент продукции - от канцелярских принадлежностей до компьютерной техники и офисной мебели.

  • Компания "Норникель" - лидер горно-металлургической отрасли в России и мире. Она производит металлы, необходимые для развития экологичной экономики и транспорта.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.