Вынесение версий из базы

В базе Розница в течении двух лет использовалось типовое версионирование. Постепенно версии стали занимать очень много место. Последней каплей терпения стала невозможность проведения реструктуризации при переходе с 8.1 на 8.3. Решено было вынести регистр версий в отдельную базу.

 

По замерам в SQL-сервере при общем объеме базы 286 Гб размер таблицы регистра версий стал 129, т.е. 45%.

 

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

 

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

 

Конфигурация базы версий

В конфигурации всего несколько справочников:

 

Регистр версий имеет структуру:

 

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

Объект – это значение типа «Уникальный идентификатор», является ссылкой на объект в исходной базе.

От замысла хранить версии из нескольки баз в одной базе версий отказался – отдельные базы проще в обслуживании.

 

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

 

Заполненный список типов выглядит так:

 

Заполненный список авторов выглядит так:

 

Обработка для переноса

Обработка имеет  простую форму:

Используется обычно по расписанию для запуска из регламентного задания:

 

О = САП.ДатьВнешнююОбработку("Перекачка версий в базу версий");

 

О.ВыбСервер = "server";

О.ВыбБаза = "VersRT";

О.ВыбПользователь = "robot";

О.ВыбПароль = "1111111111111";

 

О.Работа();

 

Перенесенные версии удаляются из базы данных.

Использование в отчетах рабочей базы

Версии использовались только в отчете по показу версий объекта. Вместо обращения к рабочей базе нужно переписать код для обращения к базе версий по COM-соединению. Остальное не меняется. Это просто.

 

Скачать