Новый RLS в БСП 3.0 быстрее, проще и перспективней

Содержание

Слайд 2

Старый RLS (в формате БСП 2.0)

Существующий механизм имеет ряд проблем.
Низкая производительность по

Старый RLS (в формате БСП 2.0) Существующий механизм имеет ряд проблем. Низкая
сравнению с полноправным пользователем:
Список документов может открываться слишком долго:
от нескольких секунд в самых хороших случаях,
до многих минут в самых плохих случаях.
Отчеты могут формироваться в 2–10 раз дольше.
Очень сложно создавать ограничения доступа и редактировать их.
Практически невозможно отлаживаться.
Плохая диагностика ошибок нехватки доступа для пользователей.

Слайд 3

Новый RLS (в формате БСП 3.0)

Что хотим достичь?
Существенно повысить производительность под неполноправным

Новый RLS (в формате БСП 3.0) Что хотим достичь? Существенно повысить производительность
пользователем:
Список документов открывается и обновляется за 1 секунду или меньше.
Отчеты формируются не более чем на 30 % медленнее, чем в режиме без RLS.
Упростить процесс создания и редактирования ограничений.
Упростить отладку ограничений.
Сделать более внятную диагностику ошибок нехватки доступа для пользователей.

Слайд 4

Основа решения

RLS в формате БСП 2.0 (старый)
Логика ограничения реализуется на языке запросов:
Сложность

Основа решения RLS в формате БСП 2.0 (старый) Логика ограничения реализуется на
запроса зависит от сложности ограничения.
Производительность почти непредсказуема.
RLS в формате БСП 3.0 (новый)
На языке запросов универсальное ограничение:
Сложность запроса почти неизменна.
Производительность предсказуема.
Логика ограничения:
Описывается в модуле менеджера объекта метаданных на специальном диалекте языка ограничения доступа.
Реализуется путем расчета прав (заполнения специальных регистров в фоновом задании).

Слайд 5

Новый RLS (в формате БСП 3.0)

В РЕЗУЛЬТАТЕ:
Производительность стала выше от 2 до

Новый RLS (в формате БСП 3.0) В РЕЗУЛЬТАТЕ: Производительность стала выше от
1000 раз
За счет того, что права (в сложной части) теперь рассчитываются не в СУБД при каждом запросе, а в фоновом задании 1 раз сразу для всех пользователей (без избыточных расчетов).
Кроме того, реализована гибкая автоматическая адаптация к настройкам администратора (если ограничение отключено по виду доступа, то его как будто не указывал разработчик).
Описание логики ограничения стало проще.
Теперь описание в модуле менеджера 1 раз в 1 месте, а не в виде нескольких точных копий в ролях.
Контроль ошибок в ограничении доступа не хуже, чем у платформы для языка запросов.
Предусмотрена возможность переопределения на встроенном языке (необходимо при использовании библиотек).

Слайд 6

Новый RLS (в формате БСП 3.0)

ДОПУЩЕНИЯ:
Немного замедляется запись в режиме полноправного пользователя

Новый RLS (в формате БСП 3.0) ДОПУЩЕНИЯ: Немного замедляется запись в режиме
(на 0.005-0.05 сек на документ).
При записи требуется обновление прав доступа к документу.
После изменения настроек прав пользователей, изменения вступают в силу не сразу (от 1 сек до 5–20 мин).
Какое-то время выполняется обновление прав в фоновом задании.

Слайд 7

Новый RLS (в формате БСП 3.0)

Полученное ускорение чтения:
ERP, Приходные кассовые ордера (разрешено

Новый RLS (в формате БСП 3.0) Полученное ускорение чтения: ERP, Приходные кассовые
20 из 100 000), MS SQL 2008 R2
в 7 раз - открытие списка: было – 9 сек, стало 1.25 сек
в 46 раз - запрос «Выбрать Разрешенные Первые 1000 Ссылка Из Документ.ПриходныйКассовыйОрдер» было – 2.9 сек, стало 0.063 сек
ERP, Контрагенты (разрешено 6 из 8 000), MS SQL 2008 R2
в 30 раз - открытие списка: было – 3 сек, стало 0.1 сек
в 16 раз - запрос «Выбрать Разрешенные Первые 1000 Ссылка Из Справочник.Контрагенты» было – 0.24 сек, стало 0.015 сек

Слайд 8

Новый RLS (в формате БСП 3.0)

Полученное ускорение чтения (продолжение):
ERP, Реализация товаров и

Новый RLS (в формате БСП 3.0) Полученное ускорение чтения (продолжение): ERP, Реализация
услуг (разрешено 4 из 128 396), MS SQL 2008 R2
в 7 раз – открытие списка: было – 9 сек, стало 1.25 сек
в 36 раз – запрос «Выбрать Разрешенные Первые 1000 Ссылка Из Документ.РеализацияТоваровУслуг» было – 2.8 сек, стало 0.078 сек
ERP, Задачи (без отбора по автору и исполнителю, разрешено 37 из 80 000), MS SQL 2008 R2
в > 300 раз – открытие формы списка: было >10 мин, стало 2 сек
БСП, Взаимодействия по предметам (разрешено 100 из 50 000), Файловая ИБ
в 6.5 раз – открытие списка: было 80 сек, стало 12 сек (без RLS – 9 сек)

Слайд 9

Новый RLS (в формате БСП 3.0)

Побочное небольшое замедление записи:
При параллельной работе пользователей (создание

Новый RLS (в формате БСП 3.0) Побочное небольшое замедление записи: При параллельной
новых документов).
В клиент-серверном режиме без изменилась – активная работа не отличается для нового и старого RLS.
В файловой ИБ при средней активности без изменений, но при высокой конкурентной программной записи возникает взаимоблокировка (решено в более старших версиях платформы).
При массовой загрузке данных (загрузка документов из XML)
В полноправном режиме замедление на 5–50 мс на документ.
Предусмотрен API для временного отключения обновления прав при пакетной обработке данных, чтобы убрать эту задержку.
В неполноправном режиме наблюдается, как ускорение, так и замедление, при этом в среднем, изменения незначительны в обе стороны.

Слайд 10

Новый RLS (в формате БСП 3.0)

Оценка времени, когда права вступят в силу, после

Новый RLS (в формате БСП 3.0) Оценка времени, когда права вступят в
изменения настроек прав пользователей.
ERP (1ГБ .dt), HDD, MS SQL 2008R2 (как и PostgreSQL 10.3.2)
Заполнение (обновление «с нуля») ~ 10 минут, повторное обновление («холостой» ход) ~ 2.5 минут
7.3 тыс. ключей на 1.1 млн объектов и 39 тыс. групп записей регистров, 110 тыс. записей прав наборов групп доступа, 80 тыс. записей прав пользователей
ЗУП (3ГБ .dt), HDD, MS SQL 2008R2 (как и PostgreSQL 10.3.2)
Заполнение (обновление «с нуля») ~ 20 минут, повторное обновление («холостой» ход) ~ 5.5 минут
17.7 тыс. ключей на 0.5 млн. объектов и 1 млн. групп записей регистров, 171 тыс. записей прав наборов групп доступа, 37 тыс. записей прав пользователей
Обновление в 12 потоков, процессор 6 ядер 4.5 ГГц, 32 Гб ОЗУ

Слайд 11

Включение RLS в формате БСП 3.0

По умолчанию включен старый RLS (в формате

Включение RLS в формате БСП 3.0 По умолчанию включен старый RLS (в
БСП 2.0).
Для включения нового RLS (в формате БСП 3.0) нужно через Все функции включить константу Ограничивать доступ на уровне записей универсально и выполнить обновление доступа.

Слайд 12

Формат RLS: как БЫЛО и как СТАЛО

БЫЛО (RLS в формате БСП 2.0):
Логика

Формат RLS: как БЫЛО и как СТАЛО БЫЛО (RLS в формате БСП
ограничения указывалась в правах роли:
СТАЛО (RLS в формате БСП 3.0):
В правах роли указывается только универсальный шаблон:
Логика ограничения указывается в модуле менеджера объекта:

#ПоЗначениям( "Документ._ДемоЗаказПокупателя", "","",
"_ДемоОрганизации", "Организация",
"_ДемоГруппыПартнеров","Партнер", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","")

#ДляОбъекта("")

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Партнер)";
КонецПроцедуры

Слайд 13

Улучшение диагностики ошибок для разработчика

БЫЛО (ошибка RLS в режиме 1С:Предприятия):
СТАЛО (ошибка RLS

Улучшение диагностики ошибок для разработчика БЫЛО (ошибка RLS в режиме 1С:Предприятия): СТАЛО
в режиме 1С:Предприятия):

Слайд 14

Шаблон #ДляОбъекта(…) RLS для ссылочных таблиц


Ключи доступа наборов групп доступа (регистр сведений)

Набор

Шаблон #ДляОбъекта(…) RLS для ссылочных таблиц Ключи доступа наборов групп доступа (регистр
групп доступа (измерение)
Ключ доступа (измерение)

Ключи доступа к объектам (регистр сведений)

Объект (измерение)
Ключ доступа (ресурс)

Набор групп доступа
текущего пользователя

Заказ покупателя (Документ)

Ссылка Организация Контрагент …

Документ ГДЕ ИСТИНА В (
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
ИЗ РегистрСведений.КлючиДоступаКОбъектам КАК КлючиДоступаКОбъектам
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК РазрешенныеКлючи
ПО
КлючиДоступаКОбъектам.Объект = Документ.Ссылка
И КлючиДоступаКОбъектам.КлючДоступа = РазрешенныеКлючи.КлючДоступа
И РазрешенныеКлючи.НаборГруппДоступа В (&РазрешенныйНаборГруппДоступа,
&РазрешенныйПустойНаборГруппДоступа) )

Слайд 15

Шаблон # ДляРегистра(…) RLS для регистров


Ключи доступа наборов групп доступа (регистр сведений)

Набор

Шаблон # ДляРегистра(…) RLS для регистров Ключи доступа наборов групп доступа (регистр
групп доступа (измерение)
Ключ доступа (измерение)

Ключи доступа к регистрам (регистр сведений)

Поле1 … Поле N (измерения)
Ключ доступа (ресурс)

Набор групп доступа
текущего пользователя

Закупки (Регистр накопления)

Организация Склад Партнер …

Регистр ГДЕ ИСТИНА В (
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
ИЗ РегистрСведений.КлючиДоступаКРегистрам КАК КлючиДоступаКРегистрам
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК РазрешенныеКлючи
ПО
КлючиДоступаКРегистрам.Регистр = Значение(Справочник.ИдентификаторыОбъектовМетаданных.<Имя>)
И КлючиДоступаКРегистрам.Поле1 = Регистр.Организация
И КлючиДоступаКРегистрам.Поле2 = Регистр.Склад

И КлючиДоступаКОбъектам.КлючДоступа = РазрешенныеКлючи.КлючДоступа
И РазрешенныеКлючи.НаборГруппДоступа В (&РазрешенныйНаборГруппДоступа,
&РазрешенныйПустойНаборГруппДоступа) )

Слайд 16

Переход на версию БСП 3.0

Для конвертации старого RLS в новый формат предусмотрен инструмент

Переход на версию БСП 3.0 Для конвертации старого RLS в новый формат
разработчика ПереходНаВерсию301.epf
Обработка анализирует роли делает вставку в переопределяемый модуль и модуль менеджера объекта:
Если конвертация не удалась, тогда вставляется комментарий с ограничением из роли и отметкой «todo» для конвертации вручную. В ERP только 2 % конвертировано вручную из > 1000 * 3 ограничений.

Процедура ПриЗаполненииСписковСОграничениемДоступа(Списки) Экспорт
Списки.Вставить(Метаданные.Документы._ДемоЗаказПокупателя, Истина);
КонецПроцедуры Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Партнер) ";
КонецПроцедуры

Слайд 17

Поддержка нового и старого RLS

Некоторое время в типовых решениях будут использоваться оба варианта

Поддержка нового и старого RLS Некоторое время в типовых решениях будут использоваться
RLS (старый и новый). Они будут изменяться синхронно.
Для этого в ролях RLS будет построен через условие:
А в модуле менеджера логика нового RLS будет точно совпадать с логикой старого RLS, указанного в ролях (во второй части условия):

#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениям( "Документ._ДемоЗаказПокупателя","","",
"Организации","Организация", "ГруппыПартнеров","Партнер", "","", …)
#КонецЕсли

"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Партнер) ";

Слайд 18

Разработка RLS в БСП 3.0.1 в новом формате

Описания синтаксиса нового формата ограничения доступа

Разработка RLS в БСП 3.0.1 в новом формате Описания синтаксиса нового формата
приведено в документации к БСП 3.0.1
Инструмент разработчика УправлениеДоступом.epf теперь позволяет следующее.
С помощью вкладки Разработка ограничения доступа можно отладить синтаксис ограничения доступа в новом формате.
С помощью вкладки Контроль изменения текстов RLS можно сравнить тексты RLS текущей конфигурации с текстами, сохраненными при предыдущем сравнении, или с текстами указанной (старой) конфигурации.

Слайд 19

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0

Выбор таблицы для разработки

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0 Выбор таблицы для разработки ограничения
ограничения

Слайд 20

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0

Ввод ограничения (можно скопировать

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0 Ввод ограничения (можно скопировать имеющееся).
имеющееся).

Слайд 21

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0

Анализ найденных ошибок.

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0 Анализ найденных ошибок.

Слайд 22

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0

Исправление найденных ошибок.

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0 Исправление найденных ошибок.

Слайд 23

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0

Перенос в конфигурацию (кнопка

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0 Перенос в конфигурацию (кнопка Текст для вставки).
Текст для вставки).

Слайд 24

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0

Перенос в конфигурацию.

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0 Перенос в конфигурацию.

Слайд 25

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0

Перенос в конфигурацию.

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0 Перенос в конфигурацию.

Слайд 26

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0

Проверка разработанного ограничения в режиме

Отладка синтаксиса ограничения доступа в новом формате БСП 3.0 Проверка разработанного ограничения
1С:Предприятия.
Добавить роль с правами на документ в профиль и настроить группу доступа, если это не было сделано ранее.
Войти под администратором, открыть инструмент разработчика и нажать Обновить доступ:
После завершения обновления можно запустить сеанс под пользователем с RLS и посмотреть разрешенные документы.

Слайд 27


Анализ изменений в текстах RLS

Анализ изменений в текстах RLS
Имя файла: Новый-RLS-в-БСП-3.0-быстрее,-проще-и-перспективней.pptx
Количество просмотров: 25
Количество скачиваний: 0