title

text

Доклады

  • Иван Муратов
    Иван Муратов ООО "Первая Мониторинговая Компания" Технический директор
    45 мин

    TimescaleDB 2.0 - Time-series данные в распределенном кластере TimescaleDB поверх ОРСУБД PostgreSQL.

    Расширение TimescaleDB позволяет превратить старый добрый Postgres в настоящий распределенный кластер для хранения time series данных с сохранением реляционной модели, удобного SQL и проверенной временем экосистемы. А дополнительные возможности такие, как непрерывные материализованные представления и компрессия данных, позволяют строить поистине мощные телематические хабы.

  • Игорь Косенков
    Игорь Косенков Postgres Professional Инженер
    45 мин

    Что нам стоит КУК построить

    Все прекрасно знают, что такое отказоустойчивый кластер PostgreSQL и как такой кластер защищает от сбоев внутри одного дата-центра. Однако, в последнее время все больше предприятий предъявляют повышенные требования к своим сервисам, эти требования включают и катастрофоустойчивость. Такие кластеры мы называем катастрофоустойчивый кластер - КУК. В докладе я расскажу о разновидностях, принципах и подходах к построению КУКов PostgreSQL на основе кластерного ПО Corosync/Pacemaker.

  • Алексей Фадеев
    Алексей Фадеев Sibedge Старший разработчик .NET, евангелист Postgres.
    90 мин

    Plv8 Framework: разработка на plv8 в IDE, с ES6, отладкой, автотестами и деплоем

    Многие разработчики прикладного ПО не любят выносить логику на сторону БД (в функции) из-за отсутствия удобных средств разработки, особенно командной. С plv8 ситуация осложняется тем, что функция содержит симбиоз кода SQL и JavaScript, популярные IDE такое не поддерживают. На этом мастер классе я представлю свою разработку "Plv8 Framework", позволяющую существенно облегчить создание кода на plv8.

    Суть в следующем: тот же JS-код, который будет выполняться на стороне БД, можно запустить локально, прямо на машине разработчика, с помощью node.js, который работает на основе того же интерпретатора v8. Спецфункция plv8.execute подменяется на функцию из npm-библиотеки pg-native, т.е. происходит обращение к внешней СУБД. Я продемонстрирую авторский набор средств, позволяющий:
    - писать js-код в вашей любимой IDE с подсветкой синтаксиса;
    - отлаживать код в реальном времени (с breakpoint, watch и т.д.);
    - писать автотесты (unit-тесты), с вариантами: постгрес, SQLite, моки;
    - выполнять deploy кода в СУБД;
    - использовать дополнительные npm-пакеты (проблема в том, что весь код функции на plv8 должен находиться в теле этой функции, т.е. в одном файле).

    Инструмент можно использовать независимо от того, на чём вы разрабатываете бэкенд. Но особенную гибкость он придаёт, если вы используете языки со статической типизацией (java, C# и т.д.). Например для задач, где бэкенд является промежуточным слоем между фронтендом и СУБД, логика (или её часть) может быть вынесена в plv8/js с динамической типизацией, что может весьма облегчить процесс разработки.

    Помимо возможности разрабатывать новые функции на plv8, фреймворк предоставляет набор готовых функций для выполнения CRUD-операций. Функции универсальные, не привязаны к структуре конкретной БД и могут работать на любых проектах. Их использование поможет сократить объём бэкенд разработки, на некоторых проектах - значительно.

    Пожалуй, самое сложное с plv8 - установить это расширение. Но у меня хорошая новость: мои коллеги помогли подготовить докер-файлы и докер-образы для PostgreSQL версии 13 с уже установленным plv8! Теперь начать разработку на plv8 просто: нужно лишь развернуть контейнер одной командой.
    Докер-файл: PostgreSQL 13 + plv8 v2.13.15
    Демо-проект для участия в мастер-классе
    Так же для мастер-класса пригодятся:
    Node.js (желательно LTS)
    IDE для js (например, бесплатная Visual Studio Code)
    GraphQL Playground

  • Григорий Смолкин
    Григорий Смолкин Postgres Professional инженер по эксплуатации
    45 мин

    Бекап 1.5K кластеров с помощью pg_probackup

    Без резервного копирования эксплуатация PostgreSQL недопустима. Постоянный рост количества кластеров PostgreSQL в эксплуатации создает всё новые и новые проблемы и вскрывает узкие места в выбранной схеме резервного копирования. Мы обсудим наш опыт эксплуатации pg_probackup в этих условиях.

  • Брюс Момжиан
    Брюс Момжиан EnterpriseDB Senior Database Architect
    45 мин

    Postgres и вызовы будущего

    На протяжении нескольких десятков лет Postgres остаётся динамично развивающимся проектом. Вероятно, его популярность сохранится и в последующих десятилетиях. Тем не менее, как и в случае с любым другим сложным процессом, перед СУБД PostgreSQL появляются вызовы. В настоящем докладе мы исследуем вызовы будущего, которые могут помешать росту популярности Postgres - технические, проектные, конкурентные. Исследуя эти проблемы сегодня, мы сможем избежать их последствий в будущем.

  • А
    Александр Додохов АО "Аладдин Р.Д." Руководитель отдела защиты баз данных
    Алексей Сабанов
    Алексей Сабанов АО "Аладдин Р.Д." Заместитель генерального директора
    22 мин

    Безопасность данных при миграции в условиях импортозамещения

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

  • Федор Сигаев
    Федор Сигаев Postgres Professional технический директор, ведущий разработчик PostgreSQL
    22 мин

    Зачем еще 64-битные значения?

    Когда PostgreSQL только появлялся, значения идентификатора транзакции были выбраны 32х-битными. В то время это казалось запредельным числом - кто в здравом уме будет проводить 4 миллиарда транзакций? Но развитие техники привело к тому, что появились инстансы, где транзакции подбирались к этому пределу. Сообщество разработчиков ответило на это возможностью "оборота" счетчика транзакций (известный как wraparound). Но технический прогресс и рост количества данных поставили PostgreSQL перед новыми вызовами. В докладе я попытаюсь рассказать об этих вызовах, о том, как их можно преодолеть с помощью повышения разрядности счетчика, к каким следствиям это приведет и почему это надо делать сейчас, и почему это не было сделано раньше.

  • Михаил Цветков
    Михаил Цветков Intel Технический директор
    45 мин

    PostgreSQL на новых процессорах Xeon и Optane Persistent Memory

    Масштабируемые процессоры Intel® Xeon® третьего поколения - добавлены новые команды для ускорения DB: vector bit manipulation instructions для сжатия без потерь, векторные инструкции для ускорения протоколов типа TLS и SGX-анклавы для безопасного исполнения кода. И, конечно, новое поколение энергонезависимой памяти Intel® Optane™ 200 серии. Рассмотрим, что эти новые технологии и открытый инструментарий oneAPI могут дать проекту PostgreSQL.

  • Андрей Сальников
    Андрей Сальников Data Egret DBA
    45 мин

    Индексы в помощь приложениям.

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

  • Павел Толмачев
    Павел Толмачев Postgres Professional Специалист образовательного отдела
    22 мин

    Сертификация PostgreSQL: личный опыт сдачи четырех тестов

    В мае 2019 г. компания «Постгрес Профессиональный» запустила программу сертификации по PostgreSQL. Я работаю в этой компании с марта 2020 г. и за год успешно сдал четыре теста по курсам DBA1, DBA2, DBA3, QPT. В этом выступлении я поделюсь своим опытом подготовки и сдачи этих тестов.

  • Дмитрий Васильев
    Дмитрий Васильев Postgres Professional DBA
    45 мин

    Мониторинг PostgreSQL: sampling plan и average active sessions своими руками

    Мы в ОЗОН делаем PostgreSQL as a service. На данный момент у нас уже тысячи кластеров. Мы знаем, какие вопросы мучают разработчиков, вот самые важные из них: как понять насколько нагружена база и почему запрос начал тормозить? В докладе я расскажу как мы помогаем разработчикам ответить на эти вопросы, просто взглянув в дашборд.

  • Сергей Новиков
    Сергей Новиков ЕДИНЫЙ ЦУПИС Lead DBA
    90 мин

    Внедрение партицирования без простоя

    Встроенный механизм партицирования в PostgreSQL активно развивается уже несколько лет, но пока ещё нет волшебной кнопки для превращения обычной таблицы в партицированную. Я расскажу, как внедрить партицирование в production-системе без дополнительного простоя, как правильно подготовить таблицу и приложения, какие ошибки подстерегают DBA. Также будут подробно рассмотрены различные техники переноса данных между партициями, их плюсы, минусы и ограничения.

  • Александра Кузнецова
    Александра Кузнецова Postgres Professional Младший разработчик
    22 мин

    Новые возможности Mamonsu 3.0

    Mamonsu — это активный агент мониторинга для PostgreSQL, исполненный на базе zabbix. Новое мажорное обновление Mamonsu 3.0 включает в себя новые метрики, больше возможностей для визуализации данных с помощью zabbix screens, улучшенный функционал специальных инструментов Mamonsu для взаимодействия с СУБД. Помимо обзора нового функционала в докладе также затронем нюансы обновления на новую версию.

  • Сергей Пронин
    Сергей Пронин Percona Manager, Technical Product Management
    45 мин

    Disaster Recovery PostgreSQL в Kubernetes

    Запуск PostgreSQL в Kubernetes становится привычным делом с распространением операторов. В этом докладе расскажем про запуск отказоустойчивого PostgreSQL кластера в Kubernetes с помощью оператора, покажем, как подготовиться к падению дата центра и запуску hot-standby кластера.

  • Олег Бартунов
    Олег Бартунов Postgres Professional генеральный директор
    45 мин

    Json or not Json. Плюсы и минусы использования Json в PostgreSQL

    Json сейчас является де-факто стандартом для разработчиков стартапов. Почему это происходит и что надо делать — учить разработчиков приложений, как правильно проектировать базу данных согласно канонам реляционной теории (которой Postgres очень хорошо соответствует) или сделать СУБД более дружественной для Json?

  • Антон Дорошкевич
    Антон Дорошкевич ИнфоСофт Руководитель ИТ
    45 мин

    Неравный бой с "распуханием" в реалиях баз 1С

    Данных всё больше, диски всё быстрее, оптимизатор СУБД всё умнее, но проблема "распухания" остаётся крайне актуальной. Хочу поделиться своим опытом и подходом к борьбе с этим эффектом на большом количестве таблиц и данных в них.

  • Павел Лузанов
    Павел Лузанов Postgres Professional Руководитель образовательных программ
    45 мин

    PostgreSQL 14. Финальный обзор

    На протяжении всего релизного цикла 14 версии мне довелось описывать принятые патчи в статьях посвященных каждому из пяти коммитфестов релиза. И даже в первых двух статьях о 15 версии нашлось что добавить про 14-ю. Эти статьи можно найти и прочитать на Хабре (и смело пропустить доклад :-)).

    30 сентября наступил тот день, когда PostgreSQL 14 вышел официально. Больше уже ничего не должно измениться. И теперь совершенно точно можно делать финальный обзор изменений.

    Однако рассказать обо всем новом в одном докладе - дело практически не реальное. Поэтому постараюсь составить свой собственный топ-лист.

  • В
    Виталий Богданов АО «Байкал Электроникс» Директор по развитию
    22 мин
  • Владимир Сурдин
    Владимир Сурдин МГУ доцент
    45 мин

    Мифы и заблуждения о Вселенной

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

  • Никита Дрей
    Никита Дрей OT-OIL Руководитель группы
    22 мин

    Особенности миграции ECM платформы на PostgreSQL

    Доклад раскроет процесс и особенности проекта миграции корпоративной ECM платформы "ЭЛЬДОКА" с ORACLE на PostgreSQL: как был обеспечен объектно-ролевой доступ к данным, какого функционала было недостаточно в "свободной версии", как была организована работа с пространственными данными и как меняли подход в хранении файлового контента. Поделимся опытом, как сэкономили время/ресурсы, обеспечили репликацию данных между узлами и какие результаты в итоге были получены по производительности.

  • Иван Чувашов
    Иван Чувашов ООО Calltouch DBA
    45 мин

    Неожиданности PostgreSQL, которые украдут вашу ночь

    Мы эксплуатируем большие базы данных PostgreSQL, суммарный объем которых превышает 180ТБ. На каждый инстанс кластера приходится нагрузка не менее 15 тыс запросов в секунду. Эти обстоятельства, во-первых, накладывают определенные ограничения на классические подходы накатки изменений в структуре баз данных. А во-вторых, в администрировании баз данных сильно снижается право на ошибку. Ведь небольшая ошибка или неточность может привести к тому, что ближайшая ночь станет бессонной) В своем докладе я расскажу про существующие у нас ограничения на "доставку" изменений в продуктовую среду, про неклассическое поведение базы данных под нагрузкой и вообще про PostgreSQL.

  • Владимир Слинько
    Владимир Слинько Intel менеджер по развитию проектов
    22 мин

    Обзор новых аппаратных возможностей платформы Intel

    Кратко о релевантных технологиях Intel: развитие CPU и в т.ч. возможностей для алгоритмов ИИ, Пирамида памяти скорость/объём > место PMEM, развитие шифрования, Программные инструменты для повышения производительности параллельных вычислений. Пара кейсов внедрения крупных проектов на PG + Intel

  • Олег Бартунов
    Олег Бартунов Postgres Professional генеральный директор
    Никита Глухов
    Никита Глухов Postgres Professional Старший разработчик
    45 мин

    Элегантный поиск ближайших соседей в PostgreSQL

    С необходимостью эффективного поиска ближайших соседей можно встретиться в разных задачах, например, поиск ближайших к заданной точке объектов на карте. Задача, на непрограммистский взгляд кажущаяся тривиальной (действительно, человек довольно легко справляется с ней глядя на карту) , на самом деле не имеет общего и доступного решения, что приводит к головной боли разработчиков, которые придумывают ad hoc решения (вставляют костыли). Эти решения, обычно некрасивые, портят настроение творческой натуры программиста, которому требуется посещение пивной, чтобы пережить когнитивный диссонанс :)

    Действительно, если у человека есть карта, у которой есть определенный масштаб, и характерный размер поля зрения, то у программиста есть только координаты заданной точки и множество точек, которых может быть очень много (миллиарды звезд !), и к которому может идти большое количество конкурентных запросов, причем не только на чтение. Язык SQL позволяет очень красиво записать запрос, но реальный план его выполнения удручает - требуется прочитать всю таблицу, вычислить все расстояния от заданной точки, отсортировать по убыванию и оставить требуемое количество записей. Наличие индексов не спасает, а только приводит к полному обходу поискового дерева и чтения всей таблицы в случайном порядке, что гораздо медленнее простого чтения таблицы.

    В действительности, класс задач, в которых требуется эффективный поиск ближайших соседей, гораздо шире задач пространственного поиска, например, задачи классификации, задачи поиска очепяток, кластеризации, дедупликации данных. Все они могут сильно выиграть от поддержки эффективного поиска ближайших соседей в СУБД, которые являются в настоящее время де-факто стандартом хранения данных. Эффективный поиск означает быстрый, конкурентный, масштабируемый поиск и поддержку различных типов данных (возможно, нестандартных), что и было реализовано 11 лет назад в PostgreSQL. Я расскажу про его реализацию, современное состояние и примеры использования.

  • Руслан Усманов
    Руслан Усманов Федеральное казначейство Заместитель начальника управления
    45 мин

    ПУР КС - подсистема “Электронного бюджета” Федерального казначейства РФ, реализованная на полностью импортозамещённом ПО

    Создание полностью импортозамещенной компоненты государственной информационной системы на примере ПУР КС - подсистемы "Электронного бюджета", ключевой государственной интегрированной информационной системе управления общественными финансами. В презентации представлена архитектура подсистемы, история оптимизации производительности и описание мониторинга. Докладчик расскажет о плюсах и сложностях использования импортозамещённой системы для госсектора, а также о нюансах, которые стоит учесть ведомствам при внедрении open source решений и решений российских разработчиков.

  • Юрий Плотников
    Юрий Плотников ООО «РТК ИТ» Тимлид
    Никита Левченко
    Никита Левченко ПАО «Ростелеком» Старший инженер
    45 мин

    Из Oracle в Postgres по российским рельсам. Неочевидные нюансы

    Поговорим о наших подходах к выбору технических решений при проектировании архитектуры систем. Их преимущества и ограничения. Как менялась наша инженерная культура с учетом требований импортозамещения. История миграции системы с классической трехзвенной архитектурой с БД Oracle на PostgresPro. Большое внимание уделено инструментам переноса данных, а так же нюансам доработки Java/Kotlin приложений и совместимости SQL между двумя СУБД.

  • Иван Фролков
    Иван Фролков Postgres Professional инженер-консультант
    45 мин

    Надежная реализация сложной бизнес-логики с помощью pgpro_scheduler

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

  • Даниил Захлыстов
    Даниил Захлыстов Яндекс.Облако Разработчик
    22 мин

    Сжатие протокола PostgreSQL: текущий статус

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

  • Пётр Девянин
    Пётр Девянин ГК Astra Linux Научный руководитель
    45 мин

    Обеспечение доверия к системному ПО на примере ОС Astra Linux

    Разработка безопасного системного ПО (например, ОС или СУБД), достижение доверия к нему – сложная научно-техническая задача. В докладе будет показано, как ее удается решать для сертифицированной по высшим классам защиты ОС Astra Linux. При этом будут раскрыты основные направления этой деятельности, начиная с участия в формировании профильных национальных стандартов, далее разрабатывая и верифицируя формальную модель управления доступом, как основу составляющего поверхность атаки собственного механизма защиты ОС, затем применяя методы и технологии статического и динамического анализа программного кода, и завершая сбором и аналитической обработкой данных, получаемых в ходе анализа программного кода ОС, с исправлением найденных в нем ошибок в рамках практики непрерывной интеграции.

  • Татьяна Крупеня
    Татьяна Крупеня DBeaver Corp CEO
    Сергей Ридер
    Сергей Ридер DBeaver Corp Технический директор
    22 мин

    Как ускорить загрузку данных в 10 000 раз?

    Что может быть важнее скорости в вопросе загрузки данных в базу? Миграция данных одна из самых востребованных функций в DBeaver, поэтому вопрос производительности стоял для нас очень остро, причем не только в применении для PostgreSQL, но и для Greenplum, Redshift и других баз, основанных на Postgres. Мы готовы поделиться маленькими секретами, как ускорить загрузку данных в 10, 100, 1000 и даже 10 000 раз без всякой магии.

  • Christopher Travers
    Christopher Travers DeliveryHero SE Principle Engineer
    45 мин

    Почему методика Crew Resource Management должна применяться в СУБД-командах?

    Crew Resource Management - методика, которая играет важную роль в тренировке персонала в таких областях, как авиация и атомная энергетика. Тем не менее, в IT-индустрии, эта методика до сих пор широко не внедрялась. В рамках данного доклада мы познакомимся с методикой Crew Resource Management (CRM), с проблемами, которые она решает, и почему её стоит применять во всех СУБД-командах.

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

  • Екатерина Соколова
    Екатерина Соколова Postgres Professional Младший разработчик ПО
    22 мин

    PG_QUERY_STATE: Всё о внутренней жизни ваших запросов

    Отлаживая взаимодействие с базой данных мы регулярно сталкиваемся с зависающими или подозрительно долго выполняющимися запросами. Как узнать степень завершённости, диагностировать ошибки в написании или выполнении, не убивая уже запущенный процесс? Модуль pg_query_state - open source расширение PostgreSQL, позволяющее в реальном времени увидеть план запроса, а также статистику по каждому этапу его выполнения, чтобы своевременно выявить и воздействовать на причину проблемы. Я расскажу про уникальные возможности применения функции pg_query_state, перспективы её использования в сочетании с существующими инструментами мониторинга и создание прогресс бара выполнения запроса на её основе.

  • Василий Пучков
    Василий Пучков ООО Главный эксперт
    45 мин

    Кластер PostgreSQL на Astra Linux для баз 1С

    Тернистый путь к четырём девяткам. Особенности кластеризации Постгрес в виртуальной среде - зачем и как? Почему Corosync/Pacemaker? Что с резервным копированием? Сложности и проблемы, и как их избежать.

  • Александр Никитин
    Александр Никитин ЗАО ЦФТ Администратор баз данных
    22 мин

    Работа с запросами с точки зрения DBA

    Работа с запросами может внести огромный вклад в производительность сервера БД. В своём докладе я расскажу о том, какие инструменты мы используем, а также разберу некоторые примеры, которые встречались в нашей практике. Доклад будет интересен администраторам и разработчикам, которые хотели бы познакомиться с приёмами, которые мы используем в повседневной работе.

  • Алексей Фирсов
    Алексей Фирсов S7 techlab руководитель разработки
    45 мин

    Что такое PostgreSQL для Python-разработчика?

    Я не буду вас учить, как строить БД, как писать запросы и т.д. В этом докладе мы с вами поговорим про драйвера Python, как вообще можно использовать PostgreSQL в Python, какие инструменты для этого есть в синхронном и асинхронном мире, и почему так сложилось. Будем разговаривать про такие библиотеки Python, как: aiopg, psycopg2, asyncpg, pgbouncer, ну и, конечно же, как это все дружит с Postgres.

  • Андрей Бородин
    Андрей Бородин Яндекс.Облако Руководитель подразделения разработки РСУБД с открытым исходным кодом
    45 мин

    Детали реализации CREATE INDEX CONCURRENTLY

    С начала 2021 года я исправляю редкий баг в CREATE INDEX CONCURRENTLY. Настолько редкий, что со времён появления в 8.2 я не нашёл его упоминаний. Тем не менее, наши системы этот баг аффектил часто, и я занялся его починкой. Так началась довольно длинная детективная история, в которой я узнал много интересных деталей и улучшил своё понимание транзакций в PostgreSQL.

  • Андрей Зубков
    Андрей Зубков Postgres Professional Руководитель группы систем мониторинга
    45 мин

    Развитие модуля анализа исторической нагрузки pg_profile/pgpro_pwr

    Расширение pg_profile предназначено для анализа исторической нагрузки в базах данных Postgres. Его главной особенностью является экстремальная простота установки и использования - оно не требует для работы ничего кроме самой СУБД и любого планировщика заданий. Расскажу о новых возможностях расширения pg_profile и о новых статистиках, доступных в Postgres 14. У pg_profile есть расширенная версия, доступная в базах данных PostgresPro, главным образом, она отличается поддержкой расширения pgpro_stats. Расскажу какие дополнительные возможности это дает. Кроме того, обсудим некоторые существующие проблемы и перспективы дальнейшего развития Postgres в части мониторинга потребления ресурсов.

  • Анатолий Анфиногенов
    Анатолий Анфиногенов АО "ВНИИЖТ" Зам. директора научного центра - начальник отдела разработки ПО
    45 мин

    Миграция приложения Oracle PL/SQL на Postgres pl/pgSQL: взгляд два года спустя

    В 2019 распределенное серверное приложение, работающего 24/7 на полигоне 16 железных дорог от Калининграда до Хабаровска плюс несколько БД центрального уровня, было перенесено с Oracle 11g SE на ванильный PostgreSQL 11.9. Прошло почти 2 года, система успешно работает. Доклад посвящен тому, как мы переходили, с какими проблемами столкнулись при переходе и при эксплуатации, а также тому, что сегодня бы мы сделали иначе.