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, выбор подходящих видов партиций, способы их создания и поддержания, влияние на планировщик запросов и практические сценарии внедрения в реальных системах.

 

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

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

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

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

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

  • В заключение приведены ключевые выводы и FAQ, направленные на оперативное применение в командах анализа данных и DevOps.

     

Содержание главы

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

     

Архитектура и принципы партиционирования в StarRocks

Партиционирование в StarRocks строится на идее разбиения исходного множества строк на более мелкие логические единицы, каждая из которых описана своей границей и набором данных. Главные цели - ускорение сканирования за счет снижения объема данных, ускорение загрузки и упрощение архивирования. Архитектурно партиции тесно связаны с механизмами распределения данных по узлам кластера (DISTRIBUTED BY HASH / BUCKETS) и с метаданными в каталоге, которые обеспечивают согласованность между таблицей-источником и физическими сегментами хранения.

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

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

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

     

Взаимосвязь с хранением и загрузкой данных

Структура партиций сопоставляется с физическими сегментами хранения внутри StarRocks. При загрузке новых данных партиционирование влияет на ключевые аспекты: выбор целевой партиции, корректное обновление статистик и минимизация «hot» разделов. В реальных кластерах это означает согласование между процессами загрузки (ETL/CDC) и планированием запросов, чтобы новые данные становились доступными для пробы и анализа с минимальной задержкой.

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

     

Влияние на планировщик запросов

Планировщик StarRocks учитывает границы партиций, чтобы определить минимальные диапазоны для сканирования. Это реализуется через:

  • фильтрацию по диапазону партиций;
  • использование статистики минимальных и максимальных значений;
  • отсечение целевых партиций, если условия запроса противоречат диапазонам.

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

 

Рекомендации по проектированию архитектуры

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

     

Виды партиций и сценарии выбора

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

  • Диапазонные партиции ориентированы на временные ряды и последовательные структуры данных. Они позволяют эффективно ограничивать чтение по временным значениям, например по датам, месяцам, кварталам или годам.

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

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

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

     

Способы создания партиций: декларативные DDL, автоматизация и миграции

Способ создания партиций влияет на скорость внедрения новых разделов в продакшн, а также на возможности оперативной миграции схемы без длительных простоев. В StarRocks это достигается через декларативный DDL и поддерживаемые операции изменения схемы. Ниже рассмотрены практические подходы и принципы, которые применимы в большинстве сценариев.

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

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

  • Эволюционные миграции схемы. В случаях, когда требования к партиционированию меняются (например, переход от диапазонного к хэшированному), допускается миграция схемы с минимальным downtime. Это достигается через безопасную миграцию данных и пошаговую смену политики чтения/записи, сохраняя совместимость существующих запросов.

  • Варианты практической реализации:

    • создание новой таблицы с нужной схемой партиционирования;
    • добавление новой партиции к существующей таблице через ALTER TABLE ADD PARTITION (для альтернативных реализаций);
    • переработка существующих партиций через REPARTITION или переразбивку данных с последующим слиянием.
      CREATE TABLE sales (
        sale_id BIGINT,
        sale_date DATE,
        region STRING,
        amount DECIMAL(18,2)
      ) ENGINE=OLAP
      DISTRIBUTED BY HASH(sale_id) BUCKETS 16
      ## PARTITION BY RANGE(sale_date) (
        PARTITION p_202001 VALUES LESS THAN ('2020-02-01'),
        PARTITION p_202002 VALUES LESS THAN ('2020-03-01'),
        PARTITION p_202003 VALUES LESS THAN ('2020-04-01')
      );
      
  • Важное замечание: выбор конкретной синтаксической формы и поддерживаемых ключевых слов зависит от версии StarRocks и конфигурации кластера. Всегда следует сверяться с актуальной документацией по синтаксису DDL для вашей версии платформы. В процессе эксплуатации целесообразно автоматизировать процедуры добавления партиций, используя CI/CD-процессы и оркестрацию данных, чтобы обеспечить согласованность между схемой и данными.

     

Влияние на планировщик запросов, статистику и эксплуатацию

Правильное размещение данных по партициям напрямую влияет на качество выполнения запросов и стоимость их исполнения. Основные аспекты влияния:

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

  • Поддержка статистики по партициям позволяет планировщику определить наиболее «дорогие» участки данных и распределить нагрузку между узлами. Регулярное обновление статистик является критически важной частью эксплуатации партиционирования.

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

  • При проектировании схемы следует предусмотреть:

    • частоту обновления статистики по партициям;
    • стратегию обновления и удаления устаревших партиций;
    • мониторинг времени выполнения операций prune и времени отклика запросов.

       

Практические аспекты мониторинга

  • Метрики prune: доля пропущенных партиций, среднее время доступа к партициям и доля сканируемых строк.
  • Метрики загрузки: время загрузки данных в новые партиции, влияние на задержку онлайн-запросов.
  • Метрики хранения: распределение данных по партициям, размер каждой партиции, динамика миграций данных между партициями.

     

Советы по эксплуатации

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

     

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

  • Временные ряды по дневной активности: диапазонное партиционирование по дате готово к быстрому prune и архивированию по месяцам. Такой подход позволяет быстро возвращать агрегаты за конкретные месяцы и снижает стоимость сканирования.

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

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

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

     

Key takeaways

  • Партиционирование в StarRocks сочетает архитектурную эффективность и операционную гибкость, позволяя ускорять аналитические запросы и управлять данными во времени.
  • Выбор типа партиции зависит от характера рабочих нагрузок: диапазонные для временных рядов, хэшированные для равномерного распределения и сценариев с высокими нагрузками, списочные - для фиксированных групп значений.
  • Эффективность планирования запросов напрямую связана с точной статистикой по партициям и качеством фильтров, применяемых к ключу партиционирования.
  • Внедрение партиционирования требует продуманной стратегии: от проектирования схемы и определения границ до автоматизации добавления новых партиций и миграций схемы.
  • Практика мониторинга и регулярной оптимизации партиций значительно влияет на производительность и стоимость владения системой анализа данных.
  • В рамках эксплуатации целесообразно внедрять политики архивирования устаревших партиций и контроль за количеством партиций, чтобы избежать перегрузки каталога.
  • Важно сочетать архитектурные решения с операционными процедурами: CI/CD для схем, регламент по обновлению статистик и процессы тестирования изменений.

     

FAQ

  1. Какие основные типы партиций поддерживает StarRocks и как выбрать между ними?
  • В типичной реализации StarRocks поддерживает диапазонные (PARTITION BY RANGE), хэшированные (PARTITION BY HASH) и списочные партиции. Диапазонные партиции эффективны для временных рядов и фильтров по времени; хэшированные обеспечивают равномерное распределение данных и повышают параллелизм при высоких нагрузках; списочные подходят для фиксированных групп значений. Выбор зависит от частоты обновления данных, характера запросов и лимитов по количеству партиций.

 

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

 

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

 

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

 

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

 

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

 

  1. Что особенно важно учесть при проектировании схемы для глобального кластера?
  • В глобальных кластерах разумно сочетать временную партицию по локальному времени и элементы балансировки по региону (хэш-партиции). Это позволяет поддерживать локальный prune и равномерное использование ресурсов. Необходимо предусмотреть различия по часовым поясам и локализации данных.

 

  1. Нужно ли использовать архивирование устаревших партиций?
  • Архивирование устаревших партиций помогает управлять стоимостью хранения и сохранять историю на требуемый период. Подход зависит от бизнес-требований: можно архивировать в дешевые слои хранения или перемещать в внешнее хранилище, сохраняя возможность повторного анализа в рамках политики retention.

 

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

 

  1. Какие существующие open-source или региональные решения стоит учитывать как примеры?
  • В контексте части решений можно взять более широкие подходы к партиционированию из систем анализа данных. В StarRocks полезно ориентироваться на практики Range/Hash партиционирования, типичные для Doris-подобных проектов, а также на современные принципы управления данными в рамках больших аналитических холдингов. Упоминать конкретные проекты следует умеренно и только если это действительно помогает понять смысл.

 

← Предыдущая статья
Партиционирование и распределение данных в StarRocks
Следующая статья →
Индексы в StarRocks

 

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

Решения

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

Клиенты
  • ГК «Агропромкомплектация-Курск» - одна из ведущих в Российской Федерации агропромышленных компаний с полным производственным циклом "от поля до прилавка". За 32 года работы на рынке компания заслуженно завоевала репутацию одного из лидеров страны в производстве свинины и молока.

  • «Восток-Запад» – крупнейший поставщик продуктов в рестораны, кафе, гостиницы, кейтеринговые компании, столовые, комбинаты питания и кондитерские производства. 300+ городов регулярной доставки по всей территории России и странам СНГ; 3500+ товаров профессиональных брендов.

  • Ручная обработка заявок на займы в МФО ДоброЗайм была малоэффективной и приводила к высоким затратам по ФОТ отдела верификации и андеррайтинга. При этом время обработки заявок было высоким, как и количество ошибок под влиянием человеческого фактора. Дополнительные сложности создавал сложный документооборот, обусловленный неконсолидированной кредитной историей и скоринговой оценкой. Все это суммарно мешало масштабированию бизнеса МФО.

  • Российский филиал одного их ведущих мировых производителей и дистрибьютеров косметики Estee Lauder Companies Inc. выбрал аналитическую платформу Loginom для предиктивной аналитики продаж как в офлайн-, так и в онлайн-канале.

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