В настоящей статье рассматривается проблема обрезки/свёртки больших баз данных 1С на платформе MS SQL Server. Описывается решение этой задачи с применением технологии репликации DBREPLICATION от компании Softpoint.
В крупных компаниях из-за накопления исторических данных зачастую БД разрастается настолько, что это порождает ряд проблем с производительностью, сервисным обслуживанием, доступным дисковым пространством и пр. Сказываются и особенности платформы 1С: возникают проблемы со специфичными для 1С регламентными операциями (как минимум, с обновлением конфигурации), с некоторыми прикладными алгоритмами. С течением времени и дальнейшим ростом БД ситуация усугубляется. Наращивание аппаратной части не всегда даёт достаточный эффект, а если и даёт, то лишь на некоторое время.
Одним из выходов в такой ситуации является свёртка/обрезка базы, то есть удаление из неё не актуальных исторических данных. В БД после этого остаются данные только за некий оперативный период, величина которого чаще всего ограничивается 1-2 годами.
Но проблема в том, что, когда БД имеет размер несколько сотен гигабайт или перешагнула терабайтный рубеж, проделать такую операцию с ней весьма непросто. Неизбежно возникает целый комплекс проблем:
Таким образом, обрезка/свёртка оказывается крайне сложным, длительным, дорогим и рискованным мероприятием. Причем совокупность сложностей и степень рисков таковы, что даже если бизнес-заказчик решится на такой проект и пойдёт на все издержки, мало найдется специалистов, готовых гарантировать полный успех проекта.
Казалось бы, тупик. Но выходы всё же есть. Имеется эффективное решение, которое позволяет распутать весь описанный клубок сложностей и снять риски, оно предполагает использование технологии DBREPLICATION. Коротко суть в следующем:
После завершения обрезки все пользователи переключаются в обрезанный клон, и с этого момента он становится основной базой. А исходная необрезанная база служит архивом исторических данных.
В описанной методике ключевым элементом является технология обмена, которая обеспечивает синхронизацию обрезаемой БД с основной. В принципе, технология обмена может быть любой, если она совместима с платформой бизнес-приложения, в рассматриваемом случае – с 1С. Вопрос в том, насколько та или иная технология эффективная для решения поставленной задачи.
Поскольку речь идет о свертке базы 1С, рассмотрим эффективность применения типового обмена 1С.
В рассматриваемой здесь задаче присутствует несколько ключевых особенностей, критичных с точки зрения системы обмена данными:
Базы данных, между которыми происходит обмен имеют очень большой объём – несколько сотен гигабайт, возможно, несколько терабайт.
Отсутствуют длительные технологические окна, когда в БД не работают пользователи.
В основной БД активно работает множество пользователей (сотни, тысячи).
Объем данных, которые необходимо передавать очень велик.
Базы данных являются высоконагруженными.
В таких жёстких условиях сказывается ограниченный потенциал типового обмена 1С:
Объем данных для обмена велик, а аппаратные ресурсы ограничены, типовой обмен может просто не успевать обрабатывать поток изменений. На больших высоконагруженных базах это является стоп-фактором, из-за которого типовой обмен не применим.
Типовой обмен 1С может создавать многочисленные блокировки, мешая работе пользователей в основной БД и работе механизма обрезки в обрезаемой БД.
Не следует забывать, что разработка и сопровождение самого по себе механизма синхронизации типовыми средствами требует дополнительных издержек.
Можно сделать вывод, что в условиях нашей задачи применение типового обмена 1С практически невозможно.
Не создаёт блокировок и помех пользователям;
Каждый пакет изменений передаётся сразу же после фиксации транзакции, поэтому синхронизация баз данных максимально приближена к онлайн;
Пропускная способность технологии на порядки выше, чем у типового обмена 1С;
DBREPLICATION может работать в режиме двустороннего обмена (то есть можно вводить/изменять данные в обеих БД одновременно) без потери скорости обмена;
Если использовать DBREPLICATION в режиме одностороннего обмена, то направление обмена можно переключать.
Можно выполнять тестовые включения пользователей в обрезанную БД, переключая при этом направление репликации в обратную сторону. Это дает дополнительную безопасность, т.к., если «что-то пойдет не так», можно оперативно переключить пользователей обратно в необрезанную БД без потери введенных данных.
После завершения обрезки и перевода пользователей в обрезанную базу можно оставить необрезанную БД в качестве архива, и при этом поддерживать ее в актуальном состоянии в режиме онлайн с помощью DBREPLICATION. Наличие такой архивной БД, синхронной онлайн с рабочей оперативной БД, может быть весьма ценным ресурсом для компании. Например, как минимум, можно вынести в неё часть нагрузки «на чтение» - тяжёлые отчеты.
Кроме того, наличие технологии DBREPLICATION, освоенной и зарекомендовавшей себя на этапе обрезки БД, открывает новые перспективы для решения и других задач: