Применение DBREPLICATION при обрезке/свёртке баз данных 1С на MS SQL Server

Введение

В настоящей статье рассматривается проблема обрезки/свёртки больших баз данных 1С на платформе MS SQL Server. Описывается решение этой задачи с применением технологии репликации DBREPLICATION от компании Softpoint.

Проблематика

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

Одним из выходов в такой ситуации является свёртка/обрезка базы, то есть удаление из неё не актуальных исторических данных. В БД после этого остаются данные только за некий оперативный период, величина которого чаще всего ограничивается 1-2 годами.

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

  • Предстоит удалить очень большой объем данных - сотни гигабайт, это очень ресурсоёмкая операция, на выполнение которой нужно много часов или дней.
  • Требуется не просто физически удалить часть данных, но также требует множество сопутствующих ресурсоемких операций: различные проверки, отборы, свёртки. Из-за этого процесс обрезки еще более удлиняется.
  • Технологического окна достаточной длительности, когда не работают пользователи, для выполнения свертки просто нет.
  • Выполнять обрезку непосредственно в продуктивной БД параллельно с работой пользователей крайне затруднительно, или вовсе невозможно из-за высокой дополнительной нагрузки и блокировок, создаваемых процессом обрезки.
  • Можно попробовать выполнять обрезку итерационно небольшими порциями – насколько хватает имеющихся технологических окон. Но этот путь также зачастую неприменим, поскольку, во-первых, процесс обрезки растягивается на неприемлемо длительный срок (много месяцев), во-вторых, резко возрастают сложность разработки механизма обрезки, трудозатраты на него, совокупные издержки на обеспечение бесперебойного процесса обрезки в течение столь длительного срока, сильно возрастают риски проекта в целом.

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

Решение с использованием DBREPLICATION

Казалось бы, тупик. Но выходы всё же есть. Имеется эффективное решение, которое позволяет распутать весь описанный клубок сложностей и снять риски, оно предполагает использование технологии DBREPLICATION. Коротко суть в следующем:

  • Создаётся клон базы, настраивается односторонний обмен данными между клоном и основной базой посредством DBREPLICATION.
  • В клоне пользователи не работают, и там запускается процесс обрезки. Поскольку процесс обрезки никому не мешает, он может длиться столько времени, сколько ему требуется.
  • Всё это время пользователи без помех работают в основной БД. А технология DBREPLICATION автоматически с высокой скоростью передаёт все изменения из основной БД в обрезаемую. Таким образом, клон находится в актуальном состоянии с точки зрения оперативных данных.
  • После завершения обрезки все пользователи переключаются в обрезанный клон, и с этого момента он становится основной базой. А исходная необрезанная база служит архивом исторических данных.

  • Затем, если есть необходимость поддерживать архивную БД в актуальном состоянии, можно переключить репликацию в другую сторону – передавать изменения уже из обрезанной БД в архивную.


 
Рис.1. Принципиальная схема обрезки БД с применением технологии DBREPLICATION.

Невозможность применения типового обмена 1С

В описанной методике ключевым элементом является технология обмена, которая обеспечивает синхронизацию обрезаемой БД с основной. В принципе, технология обмена может быть любой, если она совместима с платформой бизнес-приложения, в рассматриваемом случае – с 1С. Вопрос в том, насколько та или иная технология эффективная для решения поставленной задачи.

Поскольку речь идет о свертке базы 1С, рассмотрим эффективность применения типового обмена 1С.

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

  • Базы данных, между которыми происходит обмен имеют очень большой объём – несколько сотен гигабайт, возможно, несколько терабайт.

  • Отсутствуют длительные технологические окна, когда в БД не работают пользователи.

  • В основной БД активно работает множество пользователей (сотни, тысячи).

  • Объем данных, которые необходимо передавать очень велик.

  • Базы данных являются высоконагруженными.

В таких жёстких условиях сказывается ограниченный потенциал типового обмена 1С:

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

  • Типовой обмен 1С может создавать многочисленные блокировки, мешая работе пользователей в основной БД и работе механизма обрезки в обрезаемой БД.

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

Можно сделать вывод, что в условиях нашей задачи применение типового обмена 1С практически невозможно.

Преимущества применения DBREPLICATION

Технология DBREPLICATION может успешно применяться в жёстких условиях нашей задачи, благодаря нескольким ряду важнейших преимуществ относительно типового обмена 1С:
  • Не создаёт блокировок и помех пользователям;

  • Каждый пакет изменений передаётся сразу же после фиксации транзакции, поэтому синхронизация баз данных максимально приближена к онлайн;

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

Также обратим внимание ещё на два важных свойства:


  • DBREPLICATION может работать в режиме двустороннего обмена (то есть можно вводить/изменять данные в обеих БД одновременно) без потери скорости обмена;

  • Если использовать DBREPLICATION в режиме одностороннего обмена, то направление обмена можно переключать.

Благодаря этим свойствам DBREPLICATION открываются дополнительные возможности для более эффективной и надежной реализации обрезки БД:
  • Можно выполнять тестовые включения пользователей в обрезанную БД, переключая при этом направление репликации в обратную сторону. Это дает дополнительную безопасность, т.к., если «что-то пойдет не так», можно оперативно переключить пользователей обратно в необрезанную БД без потери введенных данных.

  • После завершения обрезки и перевода пользователей в обрезанную базу можно оставить необрезанную БД в качестве архива, и при этом поддерживать ее в актуальном состоянии в режиме онлайн с помощью DBREPLICATION. Наличие такой архивной БД, синхронной онлайн с рабочей оперативной БД, может быть весьма ценным ресурсом для компании. Например, как минимум, можно вынести в неё часть нагрузки «на чтение» - тяжёлые отчеты.

Кроме того, наличие технологии DBREPLICATION, освоенной и зарекомендовавшей себя на этапе обрезки БД, открывает новые перспективы для решения и других задач:

 
  • Резервирование и отказоустойчивость.
  • Балансировка нагрузки.
  • Контролируемый переход на новые версии ПО (MS SQL, 1C).
  • Подключение филиальных БД к общему контуру онлайн обмена на основе DBREPLICATION.