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

Кейсы применения и лучшие практики

Greenplum — мощное параллельное хранилище данных (MPP) на основе PostgreSQL, предназначенное для обработки больших объемов аналитических запросов. В этой главе мы не просто перечислим теоретические особенности, но и разберем конкретные кейсы применения, поэтапные подходы к внедрению, типовые архитектурные решения и практические примеры, которые пригодятся новым сотрудникам и командам внедрения. Мы затронем теоретические основы, методологии моделирования данных, техники загрузки и обновления данных, а также рассмотрим риски и ограничения, которые чаще всего возникают на реальных проектах.

 

Что такое Greenplum и почему он подходит для аналитики

  • Архитектура: мастер-серверы и сегменты, сеть между узлами, распределение данных и параллелизм выполнения запросов.
  • Модель хранения: Append-Only (AO) и AO-CO варианты хранения данных, режимы row/column orientation.
  • Распределение данных: выбор ключа DISTRIBUTED BY и влияние на балансировку нагрузки и локальность джойнов.
  • Методы загрузки: ETL/ELT-подходы, внешние таблицы, GPLOAD, копирование данных, параллельные загрузки.
  • Мониторинг и эксплуатация: база системных представлений, gpconfig, vacuum/analyze, параллельные операции и очереди ресурсов.

 

Термины и методологии

  • MPP (Massively Parallel Processing), параллелизм на уровне сегментов, глобальные планы выполнения.
  • Разделение данных по ключу (distribution key) и влияние на пересечение джойнов между сегментами.
  • Включение AO/CO и настройка ориентации хранения.
  • ETL vs ELT: когда лучше использовать ELT внутри Greenplum для минимизации передачи данных и повышения производительности.
  • Моделирование данных: звезда (star) и снежинка (snowflake), фактовые и размерные таблицы, временные диапазоны и версии данных.

 

Рекомендованные методологии внедрения

  • Постепенная миграция: сначала загрузка устаревших массивов, затем потоковая доставка данных и обновления.
  • Конвейеры данных: orchestration через открытые инструменты (Airflow, Luigi) и/или локальные решения.
  • Контроль версий моделей данных и конфигураций среды.
  • Верификация результатов: существование тестов на консистентность, сравнение с существующими источниками.

 

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

Ниже приведены реальные сценарии использования Greenplum в разных бизнес-китах. Каждый кейс сопровождается архитектурными решениями, конкретными техническими подходами и примерами запросов.

 

Кейс 1. Финансовый аналитический склад (KPI дашборды, финансовая аналитика)

Задача: быстрый доступ к финансовым фактам (покупки, возвраты, выручка) за большие периоды времени; агрегации по продуктам, регионам и каналам продаж.

Архитектура: мастер-узел и кластер сегментов; таблицы фактов и размерные таблицы; распределение фактов по ключу region_id и date_key; AOCO-таблицы для ускорения сканирования и агрегаций.

Решение: ELT-подход: данные выгружаются из OLTP-систем и загружаются в Greenplum пакетами; агрегации на уровне фактов и денормализация через представления для BI.

Технические детали:

  • Таблица фактов sales_fact DISTRIBUTED BY (region_id, date_key);
  • Таблица измерений dim_product, dim_region и т. д. с ключами на сохранение пространственных связей;
  • AOCO: ALTER TABLE sales_fact SET (appendonly=true, orientation=column);
  • Загрузка данных: внешние таблицы или GPLOAD, параллельные копирования больших CSV-данных.
  • Пример SQL:
    CREATE TABLE sales_fact (
      sale_id BIGINT,
      product_id INT,
      region_id INT,
      channel_id INT,
      amount NUMERIC(18,2),
      sale_date DATE
    )
    DISTRIBUTED BY (region_id, date_key);

    ALTER TABLE sales_fact SET (appendonly=true, orientation=column);
  • Использование EXPLAIN ANALYZE для мониторинга плана выполнения запросов аналитики.

 

Кейс 2. Интернет-магазин: аналитика поведения клиентов и конверсии

  • Задача: анализ последовательностей кликов и событий пользователей, обработка больших лог-файлов и построение моделей конверсий.
  • Архитектура: внешние таблицы на стадии загрузки логов, затем нормализация в факт‑и‑размерные таблицы; использование частичных обновлений для ежедневных данных.
  • Решение: ELT-архитектура с Airflow как оркестрацией; dbt как слой моделирования данных; использование AO-таблиц для исторических данных.
  • Пример open-source инструментов: Apache Airflow, dbt для визуализации и тестирования моделей, Grafana для мониторинга и визуализации.
  • Примечание: важна корректная настройка распределения по user_id, чтобы минимизировать дисбаланс сегментов.

 

Кейс 3. Российский ритейл: интеграция локальных источников и соответствие регуляторике

  • Задача: связать локальные бухгалтерские данные, данные о платежах и складах, обеспечить доступ к данным через отечественные BI-инструменты.
  • Архитектура: гибридная интеграция с локальными источниками (PostgreSQL/Oracle) через коннекторы; безопасная сеть и контроль доступа с учетом местных требований к хранению данных.
  • Решение: Greenplum как единый центральный хранилищный слой; использование отечественных инструментов мониторинга и интеграции, поддерживающих ГОСТ/регуляторику, с соблюдением принципов безопасности и доступа.
  • Практический аспект: настройка шифрования в покое и при передаче, аудит доступа к данным, зарядка резервных копий и восстановления.

 

Архитектура и конфигурация

  • Master-серверы и сегменты: оптимальная конфигурация зависит от нагрузки и объема данных; примеры: 2 мастера, 10-20 сегментов на мощных серверах, суммарная емкость хранения — в терабайтах.
  • Аппаратные требования: оперативная память на узел, быстрый диск (SSD/NVMe) для временных файлов и журналов, высокоскоростная сеть между сегментами.
  • AO/CO хранение: AOCO-режимы помогают сжатию и ускорением аналитических запросов; настройка параметров orientation и appendonly через DDL.
  • Распределение данных: распределение по региону, дате или другим ключам. Важно избегать数据 skew;
  • Инструменты загрузки: gpload, external tables, COPY, INSERT; параллельные загрузки улучшают сквозную производительность.

 

Обеспечение доступа и безопасность

  • Роли и уровни доступа: создание ролей для аналитиков, BI-разработчиков и администраторов.
  • Секреты и подключение: безопасное хранение паролей, использование сертификатов и VPN/SSH-tunnels для доступа к кластерам.
  • Мониторинг производительности: Prometheus + Grafana, системные таблицы GPDB, ночные нотификации.

 

Мониторинг и эксплуатация

  • gpconfig: настройка параметров ядра GPDB (work_mem,sia, parallelism и др.).
  • Vacuum/Analyze и статистика: регулярное обновление статистик для эффективного планирования запросов.
  • Резервное копирование: gpcrondump/gprestore или альтернативные подходы к резервному копированию данных, поддерживаемые в рамках инфраструктуры.

 

Пример архитектурного шаблона

  • Источники данных: OLTP-системы, логи, внешние файлы.
  • Промежуточный слой: внешние таблицы, стадии подготовки данных.
  • Хранилище: основной Greenplum-кластер с AO/CO-таблицами.
  • BI/анализ: дашборды и отчеты через BI-системы.

 

Примеры SQL и конфигураций

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

    CREATE TABLE sales_fact (
      sale_id BIGINT,
      product_id INT,
      region_id INT,
      channel_id INT,
      amount NUMERIC(18,2),
      sale_date DATE
    )
    DISTRIBUTED BY (region_id, sale_date);

 

Включение AO/CO и колонного хранения

    ALTER TABLE sales_fact SET (appendonly=true, orientation=column);

 

Пример загрузки через внешние таблицы (упрощенный)

    -- Создание внешней таблицы и маппинг к файловой системе
    CREATE FOREIGN TABLE raw_sales_fact (
      sale_id bigint,
      product_id int,
      region_id int,
      channel_id int,
      amount numeric(18,2),
      sale_date date
    ) SERVER flatfile_srv OPTIONS (format 'CSV', delimiter ',', header 'true');
    -- Вставка в целевую таблицу
    INSERT INTO sales_fact
    SELECT * FROM raw_sales_fact;

 

Пример использования EXPLAIN ANALYZE

    EXPLAIN ANALYZE
    SELECT region_id, SUM(amount)
    FROM sales_fact
    WHERE sale_date >= '2024-01-01'
    GROUP BY region_id;

 

Графики и мониторинг через Prometheus и Grafana (примерный подход) - Экспорт метрик GPDB в Prometheus, создание дашбордов для cache hit, query duration, CPU/memory usage.

 

Практические примеры интеграций (open-source)

  • Apache Airflow: оркестрация потоков данных и задач ETL/ELT; пример DAG для загрузки в Greenplum и обновления моделей.
  • dbt: моделирование данных в стиле звездной схемы, тестирование моделей, генерация SQL-моделей и документации.
  • Grafana: мониторинг производительности, SLA и загрузки.
  • Пример конфигурации DAG (кратко):
    from airflow import DAG
    from airflow.operators.bash import BashOperator
    from datetime import datetime

    with DAG('gpdb_load', start_date=datetime(2025,1,1), schedule_interval='@daily') as dag:
        load_raw = BashOperator(task_id='load_raw', bash_command='gpload -f /path/to/config.yaml')
        run_transform = BashOperator(task_id='transform', bash_command='psql -c "SELECT ..." gpdb')
        load_raw >> run_transform
  • Пример использования dbt с Greenplum: настройка профиля, модели и тестов, запуск dbt run/dbt test.

 

Риски и ограничения внедрения

Выбор распределения и балансировка нагрузки

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

 

Управление хранением AO/CO

  • AO/CO включают свои требования к среде и архивированию данных. Необходимо следить за режимами записи и периодами vacuum/analyze.

 

Ограничения масштабирования

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

 

Миграции и совместимость

  • Обновления GPDB могут влиять на совместимость SQL-диалектов и поведение функций; риск слежения за совместимостью версий.

 

Энергетика инфраструктуры и стоимость

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

 

Обеспечение безопасности

  • Регуляторные требования (ГОСТ/ФСТЭК), контроль доступа, шифрование спокойного хранения и передачи, аудит изменений.

 

Мониторинг и обслуживание

  • Необходимость регулярного мониторинга плана выполнения, времени отклика и нагрузки на сервера; простои недопустимы в случае больших дашбордов.

 

Риски проектирования и эксплуатации

  • Неверный подход к моделированию данных, дублирование данных, противоречивые источники, проблемы с консистентностью.

 

Выводы

  • Greenplum как решение для больших аналитических нагрузок предоставляет эффективный параллельный доступ к данным и мощные возможности загрузки и обработки. Однако успех внедрения зависит от правильного проектирования архитектуры, выбора распределения данных, управления AO/CO-хранилищем и грамотного применения инструментов загрузки, оркестрации и мониторинга.
  • Ключевые принципы: начните с четко сформулированной бизнес-цели, спроектируйте звездную схему, выберите стратегию загрузки (ELT чаще всего подходит для аналитических нагрузок), регулярно выполняйте анализ статистик, следите за конвейерами данных и устойчивостью инфраструктуры.
  • В реальных проектах рекомендуется сочетать открытые инструменты (Airflow, dbt, Grafana) с отечественными решениями и защитой данных, если они соответствуют регуляторным требованиям. Важно проводить пилоты, тестировать производительность на реальных сценариях и постепенно масштабировать.

 

FAQ — Вопрос–Ответ

1) Что такое DISTRIBUTED BY и как выбрать ключ distrib?

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

 

2) Что значит AOCO и зачем это нужно?

- AOCO (Append-Only Columnar) — хранение столбцов по принципу колоночного формата и режим добавления без удаления строк. Это уменьшает размер хранения и ускоряет аналитические запросы, особенно для больших, выборочных сканов. В практических сценариях AOCO подходит для исторических данных и больших фактов.

 

3) Какие инструменты лучше использовать для оркестрации и моделирования данных?

- Хорошие парные варианты: Apache Airflow для оркестрации, dbt для моделирования данных и тестирования. Airflow обеспечивает расписания задач, зависимости и мониторинг; dbt помогает поддерживать чистые модели данных, тесты и документацию.

 

4) Какие риски связаны с выбором ключа распределения?

- Если ключ распределения не отражает характер запросов, часть сегментов будет перегружена, другие останутся пустыми, что приведет к узким местам и ухудшению производительности. Аналитикам следует измерять частоту джойнов и фильтров и подбирать DISTRIBUTED BY соответственно.

 

5) Какие примеры практических загрузок можно применить?

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

 

6) Как обеспечить мониторинг и диагностику производительности?

- Рекомендуется сочетать встроенную метрику GPDB (gp_stat*, pg_stat_) и внешние системы мониторинга: Prometheus/Grafana для визуализации, алерты на задержку запросов, нагрузку на сеть и загрузку CPU. Периодически запускайте EXPLAIN ANALYZE и анализируйте узкие места.

 

7) Какие сложности возникают при миграции с OLTP на OLAP в Greenplum?

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

 

8) Можно ли использовать российские решения вместе с Greenplum?

- Да, можно: использовать отечественные инструменты для мониторинга, интеграции и соответствия регуляторным требованиям, а также использовать локальные решения для безопасности и аудита. В рамках инфраструктуры можно применить отечественные средства защиты и соответствия ГОСТ/ФСТЭК, а также локальные BI-решения и коннекторы совместимыми с PostgreSQL-основанными технологиями.

 

9) Какие этапы внедрения вы рекомендуете?

- Формирование бизнес-требований и целевых KPI; проектирование архитектуры (кластер, AO/CO, распределение); выбор инструментов загрузки и оркестрации; пилот на реальном объеме; настройка мониторинга и регламентов резервного копирования; миграция и поэтапное внедрение; обучение сотрудников и поддержка.

 

10) Что важнее на старте: архитектура или процесс загрузки?

- Оба аспекта критичны. Архитектура определяет масштабируемость и устойчивость, а процесс загрузки — скорость поставки данных и актуальность аналитики. Начинайте с базовой архитектуры и минимального набора загрузки, затем добавляйте слои, оркестрацию и оптимизации по мере роста требований.

 

 

Заключение

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

 

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

 

← Предыдущая статья
Тестирование, QA и внедрение в продакшн

Решения

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

Клиенты
  • АО «НСПК» - оператор национальной системы платежных карт, который предоставляет операционные услуги и услуги платежного клиринга операторам платежных систем, в том числе Банку России и кредитным организациям. В задачи АО «НСПК» входит обеспечение бесперебойного доступа к переводам денежных средств в Российской Федерации с использованием платежных инструментов.  Также компания является оператором национальной платёжной системы «Мир» и операционным и платёжным клиринговым центром Системы быстрых платежей (СБП).

  • ПАО АНК «Башнефть» — российская вертикально-интегрированная нефтяная компания, с 2016 года входит в ПАО НК «Роснефть». Главный офис расположен в городе Уфе (Башкортостан). Добыча углеводородов – более 21 млн тонн нефти в год. Объем переработки – более 18 млн тонн нефти в год. Число сотрудников – более 33 тыс. человек.

  • KazanExpress — торговая площадка, на которой представлены товары с бесплатной доставкой за один день в более, чем 70 городах России. Аналитическое решение на базе платформы данных Yandex Cloud позволило компании обеспечить демократизацию данных. Результат — принятие обоснованных решений на всех уровнях, увеличение лояльности партнеров и повышение прозрачности бизнеса.

    Мониторинг ключевых метрик в реальном времени минимизировал недополученную прибыль и обеспечил рост прибыльных направлений, а возможности геоаналитики сервиса Yandex DataLens помогли за короткое время проанализировать локации для открытия более 90 ПВЗ в 25 городах России и заложить основу для роста компании.

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

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