Включение встроенного в платформу механизма "Копии базы данных" и использование "Дата Акселератора". Новый стандартный механизм использования баз OLAP в 1С





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

 

ВСТУПЛЕНИЕ.

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

Как получить лицензию на тестирование выделенной функциональности, описано в статье по этой ссылке http://1c.ru/news/info.jsp?id=25182 в главе «Тестирование выделенной функциональности».

Коротко поясню, что такое база OLAP. База OLAP это копия базы данных изолированная от основной базы (возможно даже расположенная под управлением другой СУБД или на другом физическом сервере) и используемая только для чтения, т.е. для получения отчетов в основном для отчетов, которые сильно нагружают базу данных.

Собственно новый механизм 1с «Копии базы данных» и позволяет средствами платформы создавать и работать с базами OLAP. Возможно два варианта хранения копий базы данных это непосредственно в базе данных под управлением любой из СУБД (Microsoft SQL Server, Oracle Database, PostgreSQL) или же в специальной службе «Дата акселератор» являющейся частью механизма «Копии базы данных», которая загружает выбранные таблицы базы данных в оперативную память сервера, что на много повышает скорость чтения данных.

 

СОЗДАНИЕ КОПИИ БАЗЫ ДАННЫХ МЕХАНИЗМАМИ ПЛАТФОРМЫ 1С.

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

 

 

После активации на сервере дополнительной лицензии на выделенную функциональность в управляемом приложении в стандартных обработках появится обработка «Управление копиями базы данных», также режим совместимости должен быть установлен «Не использовать».

 

 

В обработке необходимо нажать кнопку «Добавить» для того, чтобы создать новую копию базы данных или «Дата акселератор». Одновременно может существовать несколько копий базы данных.

Назначение колонок:

«Имя» — Задается имя копии базы данных, как она будет представляться в 1с.

«Встроенный дата акселератор» — Если колонка имеет значение «ДА» то для копии базы данных будет использоваться служба дата акселератора и остальные колонки дальше заполнять не нужно. Если значение колонки «НЕТ» то копия базы данных будет расположена на SQL сервере.

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

«Сервер баз данных» — Указывает сервер на котором будет расположена база данных.

«Тип СУБД» — СУБД используемая для размещения таблиц-копий, допускается использование какой-либо из следующих СУБД: Microsoft SQL Server, Oracle Database, PostgreSQL. СУБД кластера серверов и копии базы данных могут различаться.

«База данных» — Имя базы данных на сервере.

«Создать базу данных» — Если установлено значение «Да» то база данных будет создана, если пользователь через которых происходит подключение к СУБД обладает соответствующими правами. Если значение «Нет» то будет использоваться существующая база данных.

«Пользователь» — Указывается пользователь СУБД.

«Пароль» — Указывается пароль пользователя СУБД.

 

Справа, в дереве метаданных, необходимо указать те объекты метаданных, для которых будет создана копия.

При нажатии на кнопку «Обновить копию» начнется обновление текущей выделенной копии базы данных. Обновление копии выполняется в синхронном вызове, т.е. клиентское приложение после нажатия кнопки не будет отвечать, пока не будет полностью выполнен перенос данных.

Для того чтобы отчет мог выполниться на копии, необходимо чтобы все таблицы, используемые при формировании отчета, были расположены в копии базы данных. Отчеты могут обращаться к множеству объектов метаданных. В некоторых случаях эти объекты метаданных могут явно не встречаться в тексте запроса на языке "1С", поэтому настройка списка объектов метаданных для размещения в копии может вызывать трудности.

 

 

Для упрощения этой процедуры можно воспользоваться обработкой Подбор таблиц для Дата акселератора с помощью, которой можно подбирать таблицы не только для копии базы данных для службы «Дата акселератор», но и для копии на базы расположенные на SQL сервере. Она позволяет настроить копию несколькими способами:

— По данным технологического журнала анализирует текст запроса к СУБД и получает объекты метаданных.

— По данным текста запроса на языке 1С получает объекты метаданных.

— По данным отчета конфигурации на базе СКД анализирует тексты запросов на языке "1С" и получает объекты метаданных.

По полученным данным обработка выбирает для копирования в копию необходимые объекты метаданных и запускает процесс обновления данных в копии так, чтобы она была готова к выполнению запроса. Единственный выявленный мною ее недостаток, что данная обработка не умеет определять таблицы для добавления в копию, если к ним идет обращение через две точки т.е. через два соединения. К примеру «Договор.Организация.Директор» т.е. таблица типа «Справочники.Сотрудники» на которую ссылается реквизит «Директор» не будет добавлена в копию базы данных ее необходимо будет добавить руками в обработке «Управление копиями базы данных». Так как данное обращение к справочнику сотрудники в запросе не совсем правильно, то можно сказать, что правильные запросы обработка и обрабатывает верно.

Скачать обработку «Подбор таблиц для Дата акселератора» можно по ссылке Подбор таблиц для Дата акселератора

 

ИСПОЛЬЗОВАНИЕ МЕХАНИЗМА ПЛАТФОРМЫ КОПИИ БАЗЫ ДАННЫХ В ОТЧЕТАХ СКД И ЗАПРОСАХ.

Для того, чтобы отчет на СКД стал брать данные из копии базы данных необходимо его слегка доработать.

 

 

В настройках отчета на закладке «Дополнительные настройки» необходимо выставить параметры:

Требуемая актуальность данных – Если значение установлено в «Актуальные» то данные будут получаться только из основной базы данных. При установке значения «Любые» при формировании отчета будут использоваться данные из копии, которая содержит все таблицы, необходимые для выполнения запроса и эти таблицы содержат данные с требуемой актуальностью. Если нужной копии базы данных нет, то запрос будет исполнен в основной базе данных. Если стоит значение «Авто» то решение о работе с копией принимается платформой автоматически.

Требуемое время актуальности данных – Если значение больше 0, то от текущего времени отнимается значение — получается дата в прошлом. Если в основной базе не было изменений после полученной даты, либо все измененные таблицы в копии обновлены после этой даты, запрос будет выполнен в копии. В противном случае запрос будет выполнен в основной базе. Если значение 0, то проверяется наличие не перенесенных изменений. Если таких нет, то запрос может быть исполнен в копии баз данных. В противном случае запрос будет выполнен в основной базе.

В принципе этих двух значений в отчете на СКД достаточно, чтобы отчет стал выполняться на копии базы данных, при соблюдении остальных условий.

 

 

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

ВыводитьАктуальностьДанных — содержит дату и время последнего фактического обновления данных в копии. Для актуальных данных содержит время начала выполнения запроса.

ВыводитьКопиюБазыДанных — содержит имя копии базы данных, которая использована для получения данных.

В нашем конкретном примере отчет формировался в периоде с 01.01.2014 по 01.05.2024 время выполнения следующее:

На основной базе формируется — 15 сек.

На обычной копии БД 5 сек.

На дата акселераторе — 1 сек.

Время выполнение всегда стабильное.

Также и в коде объект «Запрос» может быть выполнен в копии базы данных. Задание требуемой актуальности данных управляется с помощью свойств объекта «Запрос» Запрос.ТребуемаяАктуальностьДанных и Запрос.ТребуемоеВремяАктуальностиДанных аналогичные свойствам параметров вывода компоновки данных, приведенных выше.

После получения данных с помощью объекта «Запрос», платформа предоставляет возможность получить информацию о том, откуда получались данные и насколько они актуальны. Такую информацию можно получить из свойств объекта «РезультатЗапроса»:

ДанныеАктуальны — позволяет определить, актуальны или нет данные, полученные запросом.

ВремяАктуальности — содержит дату и время последнего фактического обновления данных в копии. Для актуальных данных содержит время начала выполнения запроса.

КопияБазыДанных — содержит имя копии базы данных, которая использована для получения данных. 

 

ПОДДЕРЖАНИЕ КОПИИ БАЗЫ ДАННЫХ В АКТУЛЬНОМ СОСТОЯНИИ.

В процессе работы система отслеживает изменения переносимых данных, которые выполнены в основной базе данных, и по команде выполняет передачу этих изменений в каждую копию базы данных. Перенос данных в зарегистрированные копии базы данных выполняется с помощью специального метода программного интерфейса КопииБазыДанных.Обновить(). Это касается только «Дата акселератора» и копии базы данных в которой настройка «Тип репликации» установлена в значение «Стандартная». Во всех остальных случаях актуальность копий базы данных лежит полностью на обслуживающем персонале базу данных. Фактически, при создании копии базы данных, в базе данных копии создаются таблицы, которые являются копиями соответствующих таблиц объектов информационной базы. Состав таблиц копии определяется с помощью свойства «Состав» объекта, описывающего конкретную копию базы данных (объект МенеджерКопииБазыДанных). Обновление копий базы данных можно выполнять асинхронно, например, с помощью регламентного задания (по аналогии с обновлением индекса полнотекстового поиска). Другими словами, копия базы данных становится «настоящей» копией только после того, как в нее перенесены изменения, зафиксированные для переносимых таблиц.

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

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

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

  • Таблицы, фигурирующие в качестве источников запроса.
  • Таблицы, из которых получаются какие-либо данные в запросе (например, при обращении «через точку»).
  • Таблицы, которые задействованы в условиях ограничений доступа к данным (если таковые присутствуют).

2. Актуальность данных копии удовлетворяет требованиям разработчика.

 

НЕ ВСЕ ТАК ГЛАДКО, ОГРАНИЧЕНИЯ ИСПОЛЬЗОВАНИЯ.

Механизм копии базы данных имеет условия выполнения на копии базы данных:

  • Запрос выполняется вне транзакции;
  • Не используется объект встроенного языка "МенеджерВременныхТаблиц".
  • "Требуемая актуальность данных" установлено в значение "Авто" или "Любые".
  • Все таблицы, необходимые для исполнения запроса, имеются в копии баз данных.
  • Актуальность данных в копии удовлетворяет тем требованиям, которые установил пользователь или разработчик. Актуальность данных определяется исходя из значения параметра ТребуемоеВремяАктуальностиДанных.

При соблюдении этих условий запрос или отчет на СКД будет выполнен на копии базы данных.

В свою очередь для того, чтобы отчет на СКД или запрос были выполнены на «Дата акселератор» к выше перечисленным условиями еще необходимо добавить условия:

  • В запросе не используется табличные части
  • В запросе не используется В ИЕРАРХИИ

Также для «Дата акселератора» надо добавить условие, что он работает только в том случае, когда кластер запущен под управлением 64-разрядной операционной системы. Дата акселератор не поддерживает работу под управлением 32-разрядной операционной системы.

И самое главное, ограничение механизма «Дата акселератора» заключается в том, что он оптимизирован для выполнения аналитических запросов, обрабатывающих большие объемы данных в СУБД и возвращающих в качестве результата небольшое количество записей, т.е. запрос или отчет на СКД должен быть приближен к OLAP-кубу. Это является рекомендованным сценарием использования механизма. При использовании Дата акселератора в других сценариях, время исполнения запроса механизмом Дата акселератором может быть больше, чем при использовании основной базы данных.

 

ТРЕБОВАНИЯ К СРЕДЕ ДЛЯ РАБОТЫ СЕРВИСА «ДАТА АКСЕЛЕРАТОР».

Сервис недоступен при использовании режима совместимости 8.3.13 и ниже.
Рекомендуемые системные требования:

  • Операционная система семейства Linux:
    • объем оперативной памяти 512Гб;
    • изменить стратегию управления оперативной памятью – всегда выделять столько памяти, сколько требует приложение. Значение параметра overcommit_memory=1. Устанавливается с помощью команды sudo sysctl -w vm.overcommit_memory=1.
  • Операционная система семейства Windows:
    • объем оперативной памяти 512Гб;
    • использование файла подкачки объемом не менее 512Гб.

 

ЗАКЛЮЧЕНИЕ

Как видно, сервер нужен не слабенький для поддержания работы службы «Дата акселератор», но можно же заливать не всю базу и применим «дата акселератор» на ограниченное число отчетов. Я считаю, для обработки специфического массива данных большого размера «Дата акселератор» подходит отлично при том, что трудозатраты по увеличению быстродействия отчета не большие, а прирост производительности самого отчета очень значительный. Я рад что 1с делает шаги в сторону разработки платформы для высоконагруженных систем и надеюсь, механизм «Копий баз данных» будет со временем только развиваться и будут появляться новые технологии в данном направлении.

 

ИСПОЛЬЗУЕМЫЕ МАТЕРИАЛЫ

https://its.1c.ru/db/v8314doc#bookmark:dev:TI000002104

https://its.1c.ru/db/metod8dev#content:5951:hdoc

27 Comments

  1. YPermitin

    (0) спасибо за обзор!

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

    С учетом того, что это для лицензии КОРП, то я бы посмотрел в сторону стороннего решения от Softpoint — DataCluster http://www.softpoint.ru/solutions/data-cluster/

    Вообщем, идея хорошая, но пока еще сыро. Если читают сотрудники фирмы 1С — без обид 🙂 Просто сравните продукт с ПО от Softpoint.

    Reply
  2. Elf1k

    (1)

    Вообщем, идея хорошая, но пока еще сыро. Если читают сотрудники фирмы 1С — без обид 🙂 Просто сравните продукт с ПО от Softpoint.

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

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

    Для нас например очень критично, что запрос на «Дата акселератор» не может быть выполнен при использовании в запросе табличных частей.

    Reply
  3. YPermitin

    (2) Продолжайте эксперименты!

    Пишите хорошо.

    Reply
  4. starik-2005

    (1)

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

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

    Исходя из этого всегда возникает вопрос: а могут ли 1С-неги сделать реальный роутинг запросов на чтение между кластерами? Вот у тех же Деловых Линий три сервака дали увеличение доступности данных чуть ли не в три раза, что говорит о том, что чтение там сильно превалирует над записью (этим «добрые» люди из софтпоинта отлично пользуются, предлагая SLA с пессимистической оценкой типа на три узла в два раза).

    В общем 1С правильным путем идет, но общая сложность решения увеличится, отсюда ка бы вытекает, что скоро экзамен на эксперта по технологическим вопросам будут сдавать не 1С-ники, а совсем другие люди )))

    Reply
  5. YPermitin

    (4)

    овсем другие люди

    Это точно 🙂

    Reply
  6. Elf1k

    (4)

    Вот у тех же Деловых Линий три сервака дали увеличение доступности данных чуть ли не в три раза, что говорит о том, что чтение там сильно превалирует над записью

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

    Reply
  7. starik-2005

    (6)

    если это действительно так

    Так им вроде бы не особо нужно — они купили датакластер от софтпоинта. А шардинг и все эти вертикальные и горизонтальные масштабирующие технологии — они просто везде есть уже, даже в той самой SAP, а тут нет — непорядок )))

    Единственное плохо — 1С опять не от кейса зашла, а от технологии. Они сделали что-то, теперь все будут придумывать, как это заюзать. До этого они сделали решение уравнений линейных — и кто этим пользуется? РАУЗ до сих пор, ИМХО, на эти рельсы не переписали.

    Reply
  8. Elf1k

    (7)

    Единственное плохо — 1С опять не от кейса зашла, а от технологии.

    Ну а разве от кого то запрос был? Мне кажется если был бы запрос на такую технологию то и 1с бы от технологии зашла, на сколько мне известно 1с всегда открыта к диалогу. А так и правда у всех есть и слава богу 1с хоть так это реализовала.

    Нам вот к примеру нужно чтобы «Дата акселератор» работал с табличными частями и еще бы хотелось, чтобы В ИЕРАРХИИ тоже было доступно на «Дата акселератор».

    Reply
  9. Дмитрий74Чел

    (6) Не думаю, чтоб 1с для Деловых линий делала механизм. Скорее наоборот, прочитали на infostart`e про то как свое решение сделали ДЛ — и решили «да, можно бы и сделать».

    Reply
  10. user618912_redgad

    (7) как же не переписали? в тестовых версиях КА и ЕРП уже есть.

    Reply
  11. starik-2005

    (10)

    в тестовых версиях КА и ЕРП уже есть

    В тестовых — да, полно! )))

    Reply
  12. s22

    (7)

    Единственное плохо — 1С опять не от кейса зашла, а от технологии. Они сделали что-то, теперь все будут придумывать, как это заюзать. До этого они сделали решение уравнений линейных — и кто этим пользуется? РАУЗ до сих пор, ИМХО, на эти рельсы не переписали.

    в erp 2.4.8 есть использование

    Reply
  13. s22

    (8)

    Нам вот к примеру нужно чтобы «Дата акселератор» работал с табличными частями и еще бы хотелось, чтобы В ИЕРАРХИИ тоже было доступно на «Дата акселератор».

    На мой взгляд не нужно.

    Табличные части отчетах использовать бессмысленно.

    ВИЕРАРХИИ нужно устранять.

    Reply
  14. acanta

    Группу в любом справочнике заменит любой реквизит типа другой справочник.

    Reply
  15. starik-2005

    (12)

    в erp 2.4.8 есть использование

    А она уже вышла?

    Reply
  16. s22

    (15) по плану сегодня

    Reply
  17. palsergeich

    Очередное решение нужное единицам компаний, которое можно, и на сколько мне тзвестно вполне себе существуют решения, реализовать и без 1с.

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

    То что может пригодится уже массам, типо конструктора индексов и ТД, попросту игнорируются, так держать.

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

    Reply
  18. palsergeich

    (9) Очень много нового функционала внедряется на базе выявленных потребностей проектов ЦКТП, один из которых ДЛ.

    Возможно не конкретно для ДЛ, а другого проекта, но ИМХО это решение, потребность в котором принципе просто так не могла родиться.

    Reply
  19. Aleksey.Bochkov

    Yay! Сделали пародию на `ApplicationIntent=ReadOnly;` из SQL Server.

    https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-read-only-routing-for-an-availability-group-sql-server?view=sql-server-2017

    А если серьезно, то прогресс все равно приятно видеть.

    Reply
  20. user612295_death4321

    Спасибо за статью, интересный материал.

    Reply
  21. YPermitin

    (19) тоже так подумал.

    Думаю, это опыт неуоторых партнеров повлиял.

    Reply
  22. Aleksey.Bochkov

    (21) лучше бы сделали возможность использования read-only базы данных. Делов-то не много — отменить запись всего того, что платформа сохраняет,(настройки пользователя, логи и т.д.) или перенаправить это на основную базу, что также не выглядит сложно.

    Все СУБД поддерживают вторичные копии БД, которые реплицируются на бинарном уровне. Держать два коннекта на пользователя не так сложно.

    Тогда можно было бы с единой точки доступа роутить пользователей на разные базы и не изобретать колесо.

    Выглядит проще, чем городить огород с новыми сущностями и заранее ущербным подходом.

    Но 1С не ищет лёгких путей, наверное….

    Reply
  23. YPermitin

    (22) это да. Пока приходится изобретать велосипеды, типа таких https://infostart.ru/public/1001204/

    Reply
  24. a.ivanov

    Я всегда думал что OLAP определяется структурой хранения. А оказывается местоположением базы на сервере. Сделал копию для отчетов, уже OLAP-ом можно называть.

    Reply
  25. Elf1k

    (24)

    я отчетов, уже OLAP-ом можно называть.

    В статье выше я же вроде писал, что это не обычная копия базы данных.

    Сразу хочу сказать, что механизм копий базы данных не является инструментом создания резервной копии рабочей базы данных. Созданная копия не является полноценной информационной базой, и работать с ней как с обычной базой данных невозможно.
    Reply
  26. user1028119

    OLAP может называться база определенной структуры ( хотя бы самые известные — звездочка и снежинка ). Именно эта структура и дает возможность уменьшить соединение таблиц. А в 1с этот механизм учитывает принципы построения аналитических баз или структура остается OLTP?

    Reply
  27. myxins1989

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

    И если обработка смотрит по техжурналу запрос к субд, то как она может не увидеть неявного соединения?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *