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 optimize

clickhouse optimize

 

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

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

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

 

Введение

Оптимизация ClickHouse опирается на специфические особенности его архитектуры: колоночное хранилище, агрегацию на лету, мощный движок MergeTree и его варианты, распределенные таблицы, механизм репликации и координацию через ZooKeeper или ClickHouse Keeper. В условиях больших объемов данных и высоких требований к латентности важно понимать, как разные элементы системы взаимодействуют друг с другом: от формата входных данных и скорости загрузки до того, как выбор ORDER BY влияет на prune и скорость ответа.

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

 

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

  • ClickHouse как колоночная СУБД с фокусом на аналитические задачи. Главная особенность - хранение и обработка данных в виде столбцов, что позволяет эффективно сжимать и обрабатывать данные, особенно в условиях больших выборок.
  • Engine и таблицы: MergeTree и его потомки, ReplicatedMergeTree, Distributed, а также специализированные движки для Ingestion и хранителя.
  • ORDER BY и PRIMARY KEY: принципы сортировки данных и их влияние на prune-производительность. Правильный выбор ключевых полей - основа ускорения запросов.
  • Skip indexes (пробросочные индексы): механизмы(skip index) для ускорения фильтрации без полного сканирования больших секций данных.
  • TTL и жизненный цикл данных: управление удалением и обновлением устаревших данных, влияние TTL на хранение и производительность.
  • Materialized views: предсоздание агрегатов и денормализация для ускорения повторяющихся запросов.
  • Distributed и Replicated таблицы: парадигма горизонтального масштабирования и отказоустойчивости через шардирование и репликацию.
  • Ingestion-процессы: использование Kafka, файловых источников, API и конвейеров, где важна последовательность загрузки и консистентность.
  • Архитектурные шаблоны: ELT против ETL, потоковая обработка данных, конвергенция данных и роль данных как продукта.

     

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

  • Top-down подход к оптимизации: начиная с бизнес-целей и требований к latency, затем проектируя архитектуру и потоки данных.
  • Data-driven оптимизация: измерение и построение гипотез на основе метрик latency, throughput, cost; верификация через A/B и Canary-выкатку.
  • Архитектурные принципы для крупных складах: разделение на слои ingestion, storage, processing и presentation; выделение hot и cold зон данных.
  • Паттерны проектирования схемы: использование компактной сортировки, минимизация пересечений и поддержка эффективной prune.
  • Паттерн "clickhouse optimize": концептуальная рамка для ускорения аналитических рабочих нагрузок, включающая сочетание структурной оптимизации, индексирования и денормализации, чтобы давать устойчивые результаты под разнообразные типы запросов.
  • Методы мониторинга и профилирования: tracing запросов, система телеметрии и метрики производительности (latency, QPS, throughput, block cache hit rate).

     

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

  • Архитектура кластера: шардинг, репликация и распределенные таблицы. В ClickHouse возможны конфигурации с несколькими шардами и репликами, что повышает пропускную способность и устойчивость к сбоям.
  • Хранение данных: MergeTree и его варианты. Основной принцип - разбиение данных на «parts» и фоновые задачи Merge-операций для оптимизации хранения и запросов.
  • Ускорение запросов: правильная настройка ORDER BY, использования агрегатов на лету, применение skip-index и TTL, а также материализованных представлений.
  • Ingestion-архитектура: конвейеры через Kafka, файлы Parquet/ORC, коннекторы и трансформации. Важно обеспечить идемпотентность и согласованность загрузок.
  • Координация и консистентность: использование ZooKeeper или альтернативы ClickHouse Keeper для надежной координации кластера.
  • Инструменты мониторинга и наблюдаемости: Prometheus, Grafana, ClickHouse system tables, очередь запросов и-throughput аудит.
  • Интеграции: связь с BI/пользовательскими слоями через ODBC/JDBC, Python/R клиентские библиотеки и собственные API.

     

Пример архитектурной схемы:

  • Ingestion слой: Kafka → RabbitMQ (опционально) → обработчик трансформаций
  • Storage слой: несколько шардированных MergeTree/ReplicatedMergeTree таблиц
  • Processing слой: Distributed таблицы, Materialized views для агрегатов
  • Presentation слой: внешний доступ через BI-инструменты и API

Ключевые технологические решения в рамках российского рынка и распространенных open-source практик:

  • Open-source: ClickHouse (основа), Kafka (интеграция при ingestion), Apache Parquet/ORC (форматы хранения), Apache Spark для преобразований, Apache Arrow для эффективного обмена данными.
  • Российские продукты и практики: базовая платформа ClickHouse и связанные решения широко применяются на российском рынке, включая управляемые сервисы на базе ClickHouse в российских облаках и у системных интеграторов. Также развиты решения на базе Yandex Databases/YDB в рамках экосистемы Яндекс.Облака и локальных инфраструктур.
  • Пример интеграций: ClickHouse + Kafka (для high-throughput ingestion), ClickHouse + Spark (для сложных преобразований), ClickHouse Keeper как компонент координации, выборочно используемые индексы и TTL для жизненного цикла данных.

Пример кода: создание и настройка таблицы MergeTree


CREATE TABLE events
(
    event_date Date,
    user_id UInt64,
    event_type String,
    amount Decimal(10,2),
    country LowCardinality(String)
) 
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, user_id)
TTL event_date + INTERVAL 365 DAY
SETTINGS index_granularity = 8192;

Пример создания распределенной таблицы


## CREATE TABLE events_dist AS events
ENGINE = Distributed(cluster_cluster, default, events, rand());

Пример использования материализованной представления для ускорения агрегаций


CREATE MATERIALIZED VIEW mv_daily_summary
ENGINE = MergeTree()
ORDER BY date_day
POPULATE AS
SELECT
  toDate(event_date) AS date_day,
  count(*) AS cnt,
  sum(amount) AS total_amount
FROM events
GROUP BY date_day;

Паттерн: настройка индексации и prune

  • Skip indexes и их роль в prune: позволяют ClickHouse пропускать целые диапазоны данных без сканирования, если фильтр по скваженным столбцам позволяет геометрически ограничить диапазон.
  • Пример реализации (упрощённый):
    • Добавление skip-индекса по полю country
    • Применение фильтров по event_type и date
  • Практическая рекомендация: используйте skip-indexы для полей, по которым часто делаются диапазонные фильтры, особенно если данные имеют большую вариабельность по этим столбцам.

     

Паттерн: clickhouse optimize

  • Паттерн: clickhouse optimize** - концептуальная рамка, объединяющая структурную оптимизацию, эффективное индексирование, материализованные представления и управление TTL. Он применяется в разных частях цикла жизни данных: от ingestion до исполнения запросов и устойчивого хранения.
  • Практическое применение: сценарии с экономичной хранением данных и быстрыми агрегациями в больших таблицах, где требуется не только скорость чтения, но и оптимизация затрат на хранение.

     

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

  • Управление данными и качество данных: требования к версионированию схем, контроля изменений, совместному доступу и управлению схемами.
  • DevOps и DataOps: процессы развёртывания кластеров ClickHouse, миграции схем, обновления версий и откат.
  • Контейнеризация и инфраструктура как код: использование Terraform/Ansible для развёртывания кластеров, конфигураций и мониторов.
  • SLA и SLI: определение целевых задержек по критическим запросам, план по доступности, резервированию и тестированию отказов.
  • Гибкость архитектурных решений: возможность быстрого масштабирования, тестирования новых паттернов и миграций.

     

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

  • Оптимизация выполнения запросов в ClickHouse:

    • Префильтрация данных на этапе чтения за счёт ORDER BY и индексов.
    • Эффективная агрегация: частые операции через агрегации на лету и частичную агрегацию.
    • Разделение по частям и параллелизм: MERGE-задания внутри кластера и распределение по нодам.
  • Алгоритм проектирования схемы для оптимизации:

    1. Определение бизнес-целей и lat-зависимостей.
    2. Выбор ключевых полей для ORDER BY, чтобы максимизировать prune.
    3. Разделение по партициям и TTL для управляемого хранения.
    4. Добавление Materialized views для часто выполняемых агрегатов.
    5. Включение skip-index для фильтров по часто используемым столбцам.
    6. Настройка ingest-потока и идемпотентности на входе.
    7. Мониторинг и итеративная оптимизация.
  • Пример конфигурации распределенного кластера:

    • Use of ReplicatedMergeTree for resiliency.
    • Use of Distributed table for query routing across shards.
    • Приоритет использования MergeTree-частей, слияния, TTL и материалов.
  • Протоколы и интеграции:

    • Kafka → ClickHouse ingestion: конвейеры с конвертацией форматов (Avro/JSON) и контрольной суммой.
    • API-интеграции: через HTTP/gRPC для загрузки на уровне приложений.
    • Мониторинг: Prometheus экспортёры, system tables ClickHouse, алерты через Grafana.
  • Примеры настройк:

    
    ## пример конфигурации кластера
    clusters:
      - **name**: cluster_cluster
        shard:
          - **host**: 10.0.1.1
            port: 9000
          - **host**: 10.0.1.2
            port: 9000
        replica:
          - **host**: 10.0.2.1
            port: 9100
          - **host**: 10.0.2.2
            port: 9100
    
  • Пример настройки TTL и удаления данных:

    
    ALTER TABLE events MODIFY TTL event_date + INTERVAL 365 DAY;
    
  • Пример настройки Materialized Views и агрегационных паттернов:

    
    CREATE MATERIALIZED VIEW mv_hourly AVG
    ## ENGINE = AggregatingMergeTree()
    ORDER BY (toStartOfHour(event_date), country)
    ## POPULATE AS
    SELECT toStartOfHour(event_date) AS hour, country, count(*) AS cnt
    FROM events
    GROUP BY hour, country;
    

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

  • Неправильный выбор ORDER BY и партиционирования: может привести к слабой prune и большему времени выполнения.

  • Избыточная денормализация: слишком много материалов и сложные MV могут увеличить стоимость обслуживания и задержку при загрузке данных.

  • Неправильная настройка TTL: слишком агрессивное удаление может лишить аналитиков исторических данных.

  • Игнорирование ingestion-баланса: слишком медленные конвейеры могут привести к задержкам в данных и неконсистентности.

  • Недооценка распределенных архитектур: перегрузка отдельных нод, несогласованность между репликами, задержки в синхронизации.

  • Привязка к конкретной версии: обновления ClickHouse могут менять поведение оптимизатора; необходимы регрессионные тесты.

  • Опасности с skip-index: неэффективное использование индексов может создать ложную уверенность в производительности.

     

Заключение

Оптимизация ClickHouse - это системная и устойчиво повторяющаяся дисциплина. В основе лежат архитектура данных, расходование ресурсов и грамотная настройка механизмов чтения. Важнейшее - это баланс между скоростью запросов и затратами на хранение и внедрение, который достигается через последовательную работу: от проектирования схемы до эксплуатации и мониторинга. Практические паттерны, такие как materialized views, TTL, skip indexes и распределенные таблицы, позволяют строить устойчивые решения под крупные аналитические нагрузки в условиях реального рынка.

 

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

  1. Что такое clickhouse optimize и зачем он нужен в проекте аналитики?
  • Clickhouse optimize - это набор практик и паттернов, направленных на ускорение чтения и агрегаций, снижение затрат на хранение и упрощение поддержки больших аналитических систем. Он объединяет архитектурные решения, индексацию, агрегацию на лету, TTL и денормализацию, чтобы обеспечить предсказуемую производительность и экономическую эффективность.
  1. Какие ключевые решения влияют на производительность запросов в ClickHouse?
  • Правильный выбор ORDER BY, использование реплицированных и распределенных таблиц, применение skip-index, настройка TTL, создание материализованных представлений для часто запрашиваемых агрегатов, а также грамотная стратификация ingestion и обработка данных.
  1. Как выбрать подходящие партиции и порядок записи для оптимизации?
  • Партиции должны соответствовать бизнес-логике и фильтрам запросов. Рекомендуется выбирать партиции по полю с высоким карманом фильтрации (например, date) и устанавливать ORDER BY по наиболее частым фильтрам в запросах. Это улучшает prune и снижает количество прочитанных данных.
  1. Что лучше использовать: материализованные представления или агрегаты на лету?
  • Материализованные представления дают предсозданные агрегаты и быструю реакцию на повторяющиеся запросы, но требуют дополнительного хранения и поддержки. Агрегации на лету снижают хранение, но могут потребовать больше вычислений во время выполнения. Часто эффективная стратегия - сочетание MV для горячих запросов и агрегаций на лету для гибких изменений.
  1. Как работать с ingestion-потоками (Kafka, файловые конвейеры) без потери консистентности?
  • Идемпотентность на входе, контроль версий данных, детальная обработка ошибок и повторная обработка. Использование Kafka в связке с ClickHouse с правильной стратегией смещений, подтверждений и сохранения порядка - критично.
  1. Какие риски связаны с skip-index и как их минимизировать?
  • Skip-index ускоряют фильтрацию, но неправильное использование может привести к меньшему выигрышу или даже ухудшению производительности. Рекомендуется оценивать влияние на конкретные запросы через тесты и мониторинг, начиная с наиболее селективных полей.
  1. Как организовать мониторинг производительности и быстро реагировать на проблемы?
  • Используйте системные таблицы ClickHouse, Prometheus/Grafana dashboards, алерты по latency и throughput, регулярные тесты регрессионных сценариев. Важно иметь реальный baseline и план действий по каждому типу проблемы: ingestion bottleneck, slow query, storage saturation.
  1. Какие архитектурные решения применимы в российских продуктах и на открытом рынке?
  • Архитектура распределенных таблиц с репликацией и шардированием, TTL для жизненного цикла данных, skip-indexы, materialized views, а также интеграции с Kafka и Spark. В российской экосистеме широко применяются решения на базе ClickHouse, в том числе управляемые сервисы в российских облачных платформах и локальные реализации, поддерживающие высокую доступность и масштабируемость.
  1. Каковы типичные ошибки проекта склада данных на ClickHouse?
  • Недостаточно продуманная схема, отсутствие prune, чрезмерная денормализация и большое число MV без учета поддержки и обновлений, неправильная настройка TTL, отсутствие мониторинга и тестирования производительности, нереалистичные ожидания по скорости загрузки без соответствующей инфраструктуры.
  1. Какие практические шаги можно взять на вооружение в ближайшую загрузку проекта?
  • Начать с аудита текущей схемы и запросов, определить HOT-слой и cold-слой данных, построить план TTL и partitioning, внедрить материализованные представления для самых нагруженных запросов, настроить skip-index по ключевым столбцам, организовать ingestion через Kafka, и запустить цикл мониторинга с KPI и SLA.
← Предыдущая статья
clickhouse connect driver
Следующая статья →
clickhouse store: Архитектура хранения и принципы реализации

 

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

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

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

loading...

Решения

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

Клиенты
  • Авиакомпания NordStar (АО «АК «НордСтар») – работает под данным брендом с 2008 г. и сейчас входит в топ-15 крупнейших российских авиакомпаний (данные Росавиации) с пассажирооборотом более 1 млн человек в год. АО «АК «НордСтар» выполняет и внутренние, и внешние рейсы, а ее основные хабы - Домодедово, Пулково и Емельяново. С 2021 года компания является базовым перевозчиком аэропорта Норильск.

  • В «Пивоваренной компании «Балтика» аналитическая платформа Loginom применяется для моделирования процессов или построения отчетов, в том числе для формирования рекомендаций по корректировке плана промоактивностей.
     
  • Компания «Бизон-Трейд» является официальным дилером ведущих мировых производителей сельскохозяйственной техники (Fendt, Valtra, Lemken и др.) на Юге России. Входит в состав агрохолдинга «Бизон», основанного в 1994 году. Имеет 8 филиалов в Краснодарском и Ставропольском краях, Ростовской области.

  • «Лента» – первая по величине сеть гипермаркетов и четвертая среди крупнейших розничных сетей страны. Компания была основана в 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 и политикой конфиденциальности.