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 на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » Производительная аналитика в StarRocks: оптимизация запросов и хранения » Индексация и статистика для оптимизатора

Индексация и статистика для оптимизатора

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

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

  • Краткое содержание главы
  • Архитектура индексации и статистики в StarRocks и их место в процессе выполнения запросов.
  • Форматы статистик столбцов, их сбор, обновление и настройка точности.
  • Как статистики влияют на планировщик: оценка селективности, кардинальности и выбор плана.
  • Практические сценарии внедрения: настройка сборки статистик, мониторинг и корректировка параметров для разных типов таблиц.
  • Рекомендации по мониторингу и управлению изменениями в распределении данных.

     

Архитектура индексации и статистики

Индексация в StarRocks реализована с ориентацией на колоночную модель хранения и эффективную фильтрацию на ранних этапах выполнения. Основной принцип состоит в использовании структур, опережающих чтение данных и ускоряющих отбор нужных фрагментов, а не в создании полноценных традиционных B-деревьев для каждой колонки. Ключевые элементы архитектуры включают:

  • Колонно-ориентированное хранение и зона-метаданные: каждый сегмент данных содержит минимальные и максимальные значения, а также статистическую информацию по диапазонам значений. Эти данные позволяют быстро отсечь нерелевантные участки данных на уровне чтения и минимизировать проход по файлам.
  • Индексоподобные механизмы: в StarRocks применяются концепции, близкие к сортированным ключам, проекциям и фильтрационным структурам на уровне сегментов. Они позволяют ускорить диапазонные запросы и фильтры по нескольким колонкам, минимизируя объем сканирования.
  • Привязка к планировщику запросов: статистика и индексные структуры доступны планировщику еще до начала выполнения и играют роль в оценке затрат. Планировщик формирует первичный план на основе оценок селективности фильтров, кардинальности джойнов и стоимости агрегаций.
  • Интеграции с хранением и чтением: сбор статистик тесно связан с механизмами обновления метаданных в каталоге. Это обеспечивает согласованность между физической раскладкой данных и логикой планирования.
  • Протоколы обновления и инкрементальности: обновление статистик может происходить по расписанию или по событию (например, после загрузки новых данных). Инкрементальные подходы позволяют поддерживать актуальность без повторного анализа всего набора.

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

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

Стратегии работы с индексацией и статистикой тесно связаны с компонентами, которые реализуют их в StarRocks и, в меньшей мере, с аналогами в смежных системах, таких как Apache Doris или ClickHouse. В рамках курса целесообразно рассматривать эти сравнения как ориентиры: они помогают понять типовые ограничения и распространённые решения в индустрии, но ключевые принципы StarRocks остаются уникальными в части взаимодействия с планировщиком и механизмами обновления метаданных.

 

Что важно знать о связанных протоколах и интеграциях

  • Метаданные и каталог: данные об индексации и статистика хранятся в централизованном каталоге, что обеспечивает согласованность между планировщиком и исполнением.
  • Прозрачность для разработки: разработчик SQL-слоя задаёт фильтры и агрегации, а система на уровне выполнения и планирования превращает это в эффективный физический план за счет используемых статистик.
  • Взаимодействие с Open-Source и аналогами: современные кластеры часто реализуют схожие принципы с некоторыми разными оптимизациями. Например, Doris и ClickHouse предлагают продвинутые механизмы статистик и фильтрации, и их анализ может быть полезен для проектирования аналогичных решений в StarRocks - но окончательные реализации зависят от архитектуры StarRocks.

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

 

Статистики столбцов и форматы данных

Статистики столбцов - это основа для оценок затрат планировщика. Они позволяют определить селективность фильтров, приблизительную кардинальность джойнов и стоимость агрегаций без полного сканирования данных. В StarRocks применяются следующие типы статистик и их форматы:

  • NDV (Number of Distinct Values): приблизительное число уникальных значений в столбце. NDV особенно полезен для оценки селективности равных условий и для планирования джоинов по ключам.
  • Минимум/максимум (min/max): диапазоны значений, часто применяемые для раннего отсечения и prune по диапазону. Они служат быстрым способом определения, перекрывается ли фильтр с существующими данными.
  • Null-ability: доля NULL-значений в столбце. Влияние NULL-значений на селективность и на выбор операторов агрегации.
  • Гистограммы: распределение значений по диапазонам. Они формируются как последовательности бакетов (bucket) с частотами и иногда дополнительной информацией об уникальности внутри бакета. Гистограммы являются критическим элементом для оценки селективности диапазонных условий и агрегатных операций.
  • Статистики по строковым данным: распределение по длине, частоты встречаемости длинных префиксов и т. п., когда это поддерживается реализацией. Это полезно для планирования фильтров по LIKE и префиксным условиям.
  • Инкрементальные обновления: сбор статистик может быть частичным - если данные добавляются по партийно, статистики могут обновляться инкрементально, поддерживая актуальность без повторной обработки всей таблицы.

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

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

Примеры типовых подходов к сбору статистик:

  • Полная сборка статистик: вычисление NDV, min/max и полных гистограмм для ключевых столбцов. Этот подход обеспечивает максимальную точность, но требует времени и ресурсов, особенно на больших таблицах.
  • Инкрементальная сборка: обновление статистик только для добавленных данных. Эффективна для потоков загрузки, но требует корректной обработки случаев удаления и обновления существующих значений.
  • Гибридный режим: сочетание полноты для критических столбцов и инкрементальности для остальных. Подходит в сценариях, когда часть колонок определяется как решающие для планирования, а другая часть менее чувствительная.
    -- Пример SQL-запроса на сбор статистик (универсальная форма)
    ANALYZE TABLE sales_view COMPUTE STATISTICS;
    

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

     

Применение индексов и статистики в оптимизаторе

Оптимизатор в StarRocks опирается на статистики для оценки затрат каждого элемента плана. Ниже рассмотрены ключевые принципы и механизмы, через которые статистики формируют решения планировщика:

  • Оценка селективности фильтров: NDV и гистограммы позволяют определить, какие фильтры принесут наименьшее количество затронутых строк. Фильтры с высокой селективностью получают больший вес в раннем применении и в перестановке порядка выполнения операторов.
  • Оценка кардинальности джойнов: базируется на NDV и распределении значений по столбцам-соединителям. Неправильная оценка может привести к неоптимальному выбору типа джойна (hash join vs. merge join) и к перерасходу памяти.
  • Стоимость агрегаций: на основе статистик по столбцам и объемов данных планировщик делает выводы о выгодности группировок, параллелизма и порядков обработки. Гистограммы помогают определить, какие агрегаты потребуют дополнительных этапов обработок.
  • Фильтрация и ранняя отсечка: зона карты и фильтры позволяют избежать сканирования больших участков таблиц, что особенно важно в привязке к группам по ключам и диапазонам значений.
  • Прогнозирование выполнения и план-выбор: оптимизатор может выбирать между несколькими альтернативными планами, оценивая их на основе статистических оценок. В условиях изменений конфигураций и обновления статистик возможна динамическая переоценка плана в ранних стадиях выполнения.
  • Взаимодействие с кэшированием и материализованными представлениями: статистики используются не только для базовых запросов, но и для принятия решений о применении материалов, проекций и кэширования. В некоторых случаях материализованные представления могут существенно снизить затраты за счет повторного использования уже отсчитанных частичных результатов, если статистика подтверждает высокую селективность запросов к ним.

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

 

Практические сценарии внедрения

Этапы внедрения индексации и статистик в реальном кластере StarRocks часто проходят по схеме:

  1. Определение критичных столбцов и фильтров
  • Выбор колонок, по которым чаще всего выполняются фильтры, диапазонные условия и группировки. Именно им следует уделить внимание при сборке и обновлении статистик.
  • Выделение ключевых столбцов для создания индексацоподобных структур и точной гистограммной поддержки.
  1. Конфигурация сбора статистик
  • Выбор уровня точности: какие столбцы имеют полную гистограмму, какие - инкрементальные.
  • Настройка частоты обновления статистик в зависимости от режиме загрузки данных: пакетная загрузка и потоковая обработка требуют разных стратегий.
  • Определение порогов изменений для инициирования пересчета статистик (например, изменение NDV на X% требует обновления).
  1. Мониторинг влияния на планы и производительность
  • Регулярный мониторинг скорости выполнения запросов до и после обновления статистик.
  • Анализ случаев, когда планы изменяются после обновления статистик, и коррекция политик обновления.
  • Введение пороговых значений для отклонения в планировании и автоматическое уведомление команд по эксплуатации.
  1. Интеграции с инструментами мониторинга
  • Связка с системами наблюдения для выявления аномалий в селективности и времени выполнения.
  • Корреляция изменений в статистиках с изменениями в нагрузке и данных.
  1. Практические рекомендации по настройке
  • Для больших таблиц с высоким кардинальным распределением возможно разумно устанавливать более детальные гистограммы для критических столбцов, сохраняя инкрементальные обновления для остальных.
  • При большом количестве маленьких таблиц настройка автоматического обновления статистик может быть более экономичной, чем ручная и частая инкрементальная обработка.
  • В случаях частых изменений распределения данных, целесообразно применять адаптивные алгоритмы обновления, чтобы не перегружать систему повторными полными вычислениями.

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

-- Пример последовательности команд для обновления статистик
## ANALYZE TABLE sales COMPUTE STATISTICS;
ANALYZE TABLE customers COMPUTE STATISTICS;

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

 

Key takeaways

  • Индексация и статистика работают в связке с архитектурой хранения и планирования; их задача - снизить объем сканирования и подобрать наиболее благоприятный план выполнения.
  • NDV, min/max и гистограммы являются основными статистиками столбцов, определяющими селективность фильтров и стоимость джойнов.
  • Точность статистик напрямую влияет на качество планирования; баланс между точностью и стоимостью обновления критичен для выдержанных нагрузок.
  • Инкрементальные и адаптивные стратегии обновления статистик позволяют поддерживать актуальность без чрезмерной траты ресурсов.
  • Практический подход к внедрению должен включать определение критичных столбцов, настройку обновления статистик, мониторинг влияния изменений и тесную координацию с процессами загрузки данных.

     

FAQ

  1. Какие статистики являются наиболее критичными для оптимизатора в StarRocks?
  • Наиболее значимы NDV (число уникальных значений) и гистограммы по ключевым столбцам, а также диапазон min/max и доля NULL. Эти данные влияют на оценку селективности фильтров и кардинальность джойнов, что в свою очередь формирует выбор плана выполнения.

 

  1. Как часто следует обновлять статистики?
  • Рекомендовано сочетать полную сборку статистик для критично важных столбцов и инкрементальное обновление для остальных. Частота обновления зависит от скорости изменений данных и требований SLA. В потоковых конвейерах логично обновлять статистику по мере загрузки и проводить периодическую полную переработку в периоды меньшей активности.

 

  1. Что делать, если планировка стала менее эффективной после обновления статистик?
  • Сначала проверить точность статистик на соответствующих столбцах. Затем рассмотреть временное снижение точности для менее критических столбцов, перераспределение веса гистограмм, а также возможно изменение политики обновления. Важно зафиксировать влияние на конкретные запросы и при необходимости откатиться к прежним статистикам.

 

  1. Можно ли использовать внешние источники статистик для оптимизации?
  • В рамках некоторых сценариев можно опираться на внешние данные об распределении значений, особенно для долгосрочных проектов, где данные распределения редко изменяются. Однако основным источником остаются локальные статистики, синхронизированные с данными кластера. Прямое использование внешних статистик может привести к рассогласованию и снижению эффективности.

 

  1. Какую роль играют гистограммы в планировании?
  • Гистограммы позволяют оценить селективность диапазонных условий и более точно предсказывать количество строк, попадающих под фильтры. Чем более детальные и точные гистограммы, тем точнее оценки стоимости операций фильтрации и агрегаций.

 

  1. Что важно учитывать при настройке обновления статистик для больших таблиц?
  • Для больших таблиц целесообразно использовать инкрементальные обновления и ограничить полноту статистик критическими столбцами. Важно контролировать ресурсы, чтобы обновление статистик не конкурировало с основными задачами выполнения запросов и загрузкой данными.

 

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

 

  1. Какие примеры open-source решений полезны для сравнения?
  • Apache Doris и ClickHouse являются распространёнными аналогами в индустрии; изучение их подходов к статистикам и индексации может помочь в понимании типовых решений и компромиссов. Однако реализация StarRocks имеет уникальные детали интеграции статистик с планировщиком и механизмами обновления метаданных.

 

  1. Как интегрировать статистики в процессы CI/CD и регрессионного тестирования?
  • Включить этапы проверки актуальности статистик после загрузки данных, автоматическое выполнение ANALYZE TABLE и проверку влияния на планы выполнения тестовых запросов. Регрессионное тестирование должно фиксировать различия в планах и производительности при изменении данных и конфигураций.

 

  1. Какие сигналы мониторинга указывают на необходимость пересмотра политики статистик?
  • Растущие времена выполнения запросов без изменений в данных, частые перерасчеты планов, увеличение количества сканируемых сегментов, снижение эффективности фильтрации по критичным столбцам - все это сигнализирует о возможной необходимости обновления статистик и пересмотра порогов обновления и точности гистограмм.

 

← Предыдущая статья
Оптимизация запросов: предикатное проталкивание, проекция и выбор соединений
Следующая статья →
Материализованные представления и кэширование результатов

 

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

Решения

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

Клиенты
  • Русклимат
    Русклимат — международный торгово-производственный холдинг, концентрирующий опыт ведущих мировых производителей индустрии климата, мощный потенциал конструкторских бюро и лабораторий индустриального дизайна.
     
    Компания образована в 1996 году. За более чем двадцатилетнюю историю Русклимат прошел путь от локальной компании до мощной вертикально-интегрированной многопрофильной структуры.
     
  • ЭГИС - международная фармацевтическая компания, основанная в 1907 году в Венгрии. Компания имеет представительства более чем в 60 странах мира, в том числе в России. Компания ЭГИС является одним из ведущих производителей дженерических лекарственных средств в Центральной и Восточной Европе. Её деятельность охватывает все звенья производственно-сбытовой фармацевтической цепочки.

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

  • MoneyCare — кредитная платформа и сервис для ПОС-кредитования в магазинах, установленная в более чем 18 тысячах трейдинговых точек и сотрудничающая с 11 главными банками России.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • 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 и политикой конфиденциальности.