Перенос данных на чистую базу (постановка)
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
В данной постановке рассматривается альтернативное решение проблемы [[Полное закрытие периода (постановка)|полного закрытия периода]]. Вместо удаления данных за пределами активного периода предлагается перенести актуальную информацию в чистую БД согласно следующего алгоритма: | В данной постановке рассматривается альтернативное решение проблемы [[Полное закрытие периода (постановка)|полного закрытия периода]]. Вместо удаления данных за пределами активного периода предлагается перенести актуальную информацию в чистую БД согласно следующего алгоритма: | ||
| − | # Создаем чистую БД, только метаданные от исходной БД. | + | # Создаем чистую БД, только метаданные от исходной БД. Присваиваем ей новый DBID. |
# Отключаем все триггеры. | # Отключаем все триггеры. | ||
# Удаляем все ограничения (ПК, ФК). | # Удаляем все ограничения (ПК, ФК). | ||
# Удаляем все индексы. | # Удаляем все индексы. | ||
| − | # Выводим суммарные значения и помещаем их в БД. | + | # Переносим данные (см. комментарий ниже): |
| − | # Переносим документы начиная с определенной даты. | + | ## Выводим суммарные значения и помещаем их в БД. |
| − | # Переносим все справочники согласно заданным критериям: полностью, только используемые записи, только используемые и записи созданные\измененные после определенной даты. | + | ## Переносим документы начиная с определенной даты. |
| − | # Трансформируем и переносим складское движение. | + | ## Переносим все справочники согласно заданным критериям: полностью, только используемые записи, только используемые и записи созданные\измененные после определенной даты. |
| + | ## Трансформируем и переносим складское движение. | ||
# Создаем индексы, ограничения и подключаем тригеры. | # Создаем индексы, ограничения и подключаем тригеры. | ||
В процессе переноса, для каждой перенесенной записи: | В процессе переноса, для каждой перенесенной записи: | ||
| − | # Запоминаем ИД и удаляем его из списка требуемых ИД | + | # Запоминаем ИД и удаляем его из списка требуемых ИД, если он там есть |
# Для каждой ссылки проверяем не перенесен ли уже соответствующий ИД. Если нет, то помещаем в список требуемых ИД вместе с таблицей, куда он ссылается. | # Для каждой ссылки проверяем не перенесен ли уже соответствующий ИД. Если нет, то помещаем в список требуемых ИД вместе с таблицей, куда он ссылается. | ||
Версия 18:40, 30 сентября 2010
В данной постановке рассматривается альтернативное решение проблемы полного закрытия периода. Вместо удаления данных за пределами активного периода предлагается перенести актуальную информацию в чистую БД согласно следующего алгоритма:
- Создаем чистую БД, только метаданные от исходной БД. Присваиваем ей новый DBID.
- Отключаем все триггеры.
- Удаляем все ограничения (ПК, ФК).
- Удаляем все индексы.
- Переносим данные (см. комментарий ниже):
- Выводим суммарные значения и помещаем их в БД.
- Переносим документы начиная с определенной даты.
- Переносим все справочники согласно заданным критериям: полностью, только используемые записи, только используемые и записи созданные\измененные после определенной даты.
- Трансформируем и переносим складское движение.
- Создаем индексы, ограничения и подключаем тригеры.
В процессе переноса, для каждой перенесенной записи:
- Запоминаем ИД и удаляем его из списка требуемых ИД, если он там есть
- Для каждой ссылки проверяем не перенесен ли уже соответствующий ИД. Если нет, то помещаем в список требуемых ИД вместе с таблицей, куда он ссылается.
По окончании переноса проверяем список требуемых ИД и переносим нужные записи (с выполнением п.1 и 2).