Механизм «Копии баз данных» в 1С:Предприятие 8.3: возможности, настройка и практическое применение для больших баз

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с высоконагруженными системами, где объем информационной базы исчисляется терабайтами, одной из самых острых проблем становится падение производительности при выполнении тяжелых аналитических отчетов. В оперативной базе одновременно работают сотни пользователей: одни выписывают первичные документы (OLTP-нагрузка), другие пытаются построить отчет по продажам за три года (OLAP-нагрузка). В этой статье мы разберем, как встроенный механизм «Копии баз данных» помогает разделить эти потоки и обеспечить стабильную работу системы.

Что такое «Копии баз данных» и для чего они нужны?

Давайте проанализируем суть этой технологии. Механизм «Копии баз данных» — это штатная возможность платформы 1С:Предприятие (начиная с версии 8.3.14), доступная только для лицензий уровня КОРП. Основная идея заключается в том, что мы создаем одну или несколько копий определенных таблиц базы данных на других серверах и перенаправляем туда запросы на чтение. Это позволяет разгрузить основную рабочую базу от ресурсоемких операций.

Рассмотрим ключевые преимущества, которые мы получаем при внедрении этой технологии:

  1. Масштабируемость на чтение: Мы можем вынести построение отчетов на отдельный физический сервер.
  2. Использование разных СУБД: Основная база может работать на Microsoft SQL Server, а копия — на PostgreSQL или даже в памяти (Data Accelerator).
  3. Выборочная репликация: Нам не обязательно копировать весь терабайт данных. Мы можем выбрать только те объекты (справочники, регистры), которые реально нужны для построения конкретных отчетов.

Варианты реализации копий

Выясним, какие типы копий нам предлагает платформа. На данный момент существует два основных направления:

1. Копии на базе классических СУБД. В этом случае мы разворачиваем еще один экземпляр SQL-сервера. Платформа 1С самостоятельно создает там необходимые таблицы и организует перенос данных. Это хорошее решение для очень больших объемов данных, которые не помещаются в оперативную память.

2. Акселератор данных (Data Accelerator). Это собственная разработка фирмы 1С — СУБД типа In-Memory. Она хранит данные целиком в оперативной памяти сервера. Разберем по шагам: Акселератор оптимизирован для аналитических запросов (агрегации, группировки). Если ваш отчет на обычном SQL выполняется 10 минут, то в Акселераторе он может выполниться за несколько секунд. Однако это требует значительных объемов оперативной памяти на сервере копии.

Процесс синхронизации и задержка данных

Проанализируем важный аспект: актуальность данных. В отличие от синхронной репликации на уровне СУБД, механизм 1С работает асинхронно. Это означает, что данные в копии всегда будут немного отставать от основной базы.

Как это работает под капотом? При изменении данных в основной базе (например, проведении документа), платформа фиксирует изменения. Затем специальный фоновый процесс (менеджер копий) передает эти изменения в базу-копию. Задержка может составлять от нескольких миллисекунд до нескольких секунд. Нам важно понимать, что для оперативной работы (например, проверка остатков на складе в момент отгрузки) копии использовать нельзя, так как там может быть неактуальная информация.

Как настроить использование копий в программе

Рассмотрим алгоритм подключения механизма. Настройка выполняется в несколько этапов:

  1. Создание копии: В консоли администрирования кластера или программно через объект МенеджерКопийБазДанных создается описание новой копии.
  2. Выбор состава данных: Мы должны указать, какие именно таблицы метаданных будут копироваться. Для этого используются методы объекта КопияБазыДанных.
  3. Запуск обновления: После включения копии платформа начнет первичную заливку данных, а затем перейдет в режим трансляции изменений.

Посмотрим на пример кода, который позволяет программно проверить состояние копии или настроить ее параметры:


// Получаем менеджер копий и выбираем нужную нам копию по имени
КопияОбъект = ДистанционноеУправлениеЗавершениемРаботы.ПолучитьКопию("АналитическаяКопия");

// Устанавливаем признак использования копии для текущего сеанса
УстановитьИспользованиеКопийБазДанных(Истина, "АналитическаяКопия");

Интеллектуальная маршрутизация запросов

Выясним причину, по которой этот механизм удобнее, чем простое создание «базы для отчетов» средствами SQL. Платформа 1С обладает механизмом автоматического перенаправления запросов. Если в настройках базы указано, что копию можно использовать для определенных отчетов, то разработчику даже не нужно менять код запроса. Система сама проанализирует:

Если все условия соблюдены, запрос уйдет на копию незаметно для пользователя. Однако мы можем управлять этим и принудительно. Рассмотрим пример использования в запросе:


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрНакопления.Продажи.Обороты";

// Явно указываем, что хотим использовать копию базы данных
Запрос.СвойстваУправленияОжиданием.ИспользованиеКопийБазДанных = ИспользованиеКопийБазДанных.Использовать;
Результат = Запрос.Выполнить();

Сравнение с другими методами: РИБ и SQL Replicas

Часто возникает вопрос: почему бы не использовать старый добрый РИБ (распределенные информационные базы)? Давайте проанализируем ситуацию. РИБ требует создания полноценного узла, обмена сообщениями, контроля конфигурации. Это «тяжелый» процесс. «Копии баз данных» работают на уровне платформенного движка, они быстрее в настройке и не требуют изменения бизнес-логики конфигурации.

Если сравнивать с SQL-репликацией (например, AlwaysOn), то преимущество 1С в том, что она «понимает» структуру метаданных. SQL-сервер не знает, какой запрос является «отчетом», а какой «проведением». 1С же может гибко управлять нагрузкой, зная контекст выполняемой операции.

Рекомендации для баз объемом 1 Тб и выше

Если вы столкнулись с тормозами на базе в 1 Тб, проанализируем следующие шаги по внедрению копий:

  1. Выделите только нужные данные: Не пытайтесь скопировать весь терабайт. Обычно для аналитики нужны только обороты регистров и справочники. Это сэкономит дисковое пространство и ускорит синхронизацию.
  2. Используйте 10-гигабитную сеть: Между основным сервером 1С и сервером копии будет идти интенсивный трафик. Обычного гигабита может не хватить, что приведет к росту задержки.
  3. Контролируйте состав таблиц: Если в запросе отчета участвует хотя бы одна таблица, которой нет в копии, весь запрос уйдет на основную базу. Проверяйте планы выполнения и настройки состава копии.
  4. Оцените ресурсы: Для Акселератора данных потребуется сервер с объемом RAM, превышающим объем выбранных таблиц в 1.5–2 раза (с учетом индексов в памяти).

В итоге, механизм «Копии баз данных» — это мощный инструмент для систем уровня Enterprise. Он позволяет не просто «выжить» при росте базы, а обеспечить комфортную работу пользователей, не заставляя их ждать формирования отчетов часами. Несмотря на сложность настройки и требования к лицензиям КОРП, для баз объемом 1 Тб это одно из самых правильных и перспективных архитектурных решений.

← На главную