Перенос данных на чистую базу (постановка)
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
В данной постановке рассматривается альтернативное решение проблемы [[Полное закрытие периода (постановка)|полного закрытия периода]]. Вместо удаления данных за пределами активного периода предлагается перенести актуальную информацию в чистую БД согласно следующего алгоритма: | В данной постановке рассматривается альтернативное решение проблемы [[Полное закрытие периода (постановка)|полного закрытия периода]]. Вместо удаления данных за пределами активного периода предлагается перенести актуальную информацию в чистую БД согласно следующего алгоритма: | ||
| − | # Создаем чистую БД, только метаданные от исходной БД. Присваиваем ей новый DBID. | + | # Создаем чистую БД, только метаданные от исходной БД, используя ключ -m утилиты [[gbak]]. Присваиваем ей новый DBID. |
| − | # | + | # Запоминаем состояние и отключаем все триггеры. |
| + | # Удаляем все чеки. | ||
# Удаляем все ограничения (ПК, ФК). | # Удаляем все ограничения (ПК, ФК). | ||
# Удаляем все индексы. | # Удаляем все индексы. | ||
| − | # Переносим данные | + | # Переносим данные. |
| − | ## Выводим суммарные значения и помещаем их в БД. | + | # Восстанавливаем индексы и ограничения, подключаем тригеры и чеки. |
| − | + | ||
| − | + | === Перенос данных === | |
| − | + | ||
| − | + | Перед началом процесса пользователь может выбрать для каждого типа документов или справочников как переносить данные: | |
| + | |||
| + | # Полностью все записи. | ||
| + | # Начиная с определенной даты (для документов -- это дата документа, для справочников дата последнего изменения или создания объекта). | ||
| + | |||
| + | В процессе переноса потребуются структуры: | ||
| + | |||
| + | # Массив перенесенных идентификаторов. | ||
| + | # Cписок массивов требуемых идентификаторов. Каждый массив характеризуется именем таблицы. | ||
| + | |||
| + | Последовательность действий при переносе данных: | ||
| + | |||
| + | # Выводим суммарные значения и помещаем их в новую БД. | ||
| + | # Переносим документы. | ||
| + | # Переносим справочники. | ||
| + | # Трансформируем и переносим складское движение. | ||
В процессе переноса, для каждой перенесенной записи: | В процессе переноса, для каждой перенесенной записи: | ||
| − | # Запоминаем ИД | + | # Запоминаем ИД в массиве перенесенных идентификаторов. |
| − | # Для каждой ссылки проверяем не перенесен ли уже соответствующий ИД. Если нет, то помещаем в список требуемых ИД | + | # Удаляем ИД из списка требуемых ИД для данной таблицы, если он там присутствует. |
| + | # Для каждой ссылки в записи проверяем не перенесен ли уже соответствующий ИД. Если нет, то помещаем в список требуемых ИД. | ||
| + | |||
| + | По окончании переноса проверяем список требуемых ИД и переносим нужные записи. Повторяем, пока список требуемых ИД не будет пуст. | ||
| + | |||
| + | === Перенос множеств === | ||
| + | |||
| + | === Перенос таблиц, связанных 1-к-1 === | ||
| − | + | === Перенос таблиц с дополнительной информацией === | |
[[Category:Постановка]] | [[Category:Постановка]] | ||
Версия 17:10, 8 февраля 2011
В данной постановке рассматривается альтернативное решение проблемы полного закрытия периода. Вместо удаления данных за пределами активного периода предлагается перенести актуальную информацию в чистую БД согласно следующего алгоритма:
- Создаем чистую БД, только метаданные от исходной БД, используя ключ -m утилиты gbak. Присваиваем ей новый DBID.
- Запоминаем состояние и отключаем все триггеры.
- Удаляем все чеки.
- Удаляем все ограничения (ПК, ФК).
- Удаляем все индексы.
- Переносим данные.
- Восстанавливаем индексы и ограничения, подключаем тригеры и чеки.
Содержание |
Перенос данных
Перед началом процесса пользователь может выбрать для каждого типа документов или справочников как переносить данные:
- Полностью все записи.
- Начиная с определенной даты (для документов -- это дата документа, для справочников дата последнего изменения или создания объекта).
В процессе переноса потребуются структуры:
- Массив перенесенных идентификаторов.
- Cписок массивов требуемых идентификаторов. Каждый массив характеризуется именем таблицы.
Последовательность действий при переносе данных:
- Выводим суммарные значения и помещаем их в новую БД.
- Переносим документы.
- Переносим справочники.
- Трансформируем и переносим складское движение.
В процессе переноса, для каждой перенесенной записи:
- Запоминаем ИД в массиве перенесенных идентификаторов.
- Удаляем ИД из списка требуемых ИД для данной таблицы, если он там присутствует.
- Для каждой ссылки в записи проверяем не перенесен ли уже соответствующий ИД. Если нет, то помещаем в список требуемых ИД.
По окончании переноса проверяем список требуемых ИД и переносим нужные записи. Повторяем, пока список требуемых ИД не будет пуст.