Перенос данных на чистую базу (постановка)

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

Версия 17:10, 8 февраля 2011

В данной постановке рассматривается альтернативное решение проблемы полного закрытия периода. Вместо удаления данных за пределами активного периода предлагается перенести актуальную информацию в чистую БД согласно следующего алгоритма:

  1. Создаем чистую БД, только метаданные от исходной БД, используя ключ -m утилиты gbak. Присваиваем ей новый DBID.
  2. Запоминаем состояние и отключаем все триггеры.
  3. Удаляем все чеки.
  4. Удаляем все ограничения (ПК, ФК).
  5. Удаляем все индексы.
  6. Переносим данные.
  7. Восстанавливаем индексы и ограничения, подключаем тригеры и чеки.

Содержание

Перенос данных

Перед началом процесса пользователь может выбрать для каждого типа документов или справочников как переносить данные:

  1. Полностью все записи.
  2. Начиная с определенной даты (для документов -- это дата документа, для справочников дата последнего изменения или создания объекта).

В процессе переноса потребуются структуры:

  1. Массив перенесенных идентификаторов.
  2. Cписок массивов требуемых идентификаторов. Каждый массив характеризуется именем таблицы.

Последовательность действий при переносе данных:

  1. Выводим суммарные значения и помещаем их в новую БД.
  2. Переносим документы.
  3. Переносим справочники.
  4. Трансформируем и переносим складское движение.

В процессе переноса, для каждой перенесенной записи:

  1. Запоминаем ИД в массиве перенесенных идентификаторов.
  2. Удаляем ИД из списка требуемых ИД для данной таблицы, если он там присутствует.
  3. Для каждой ссылки в записи проверяем не перенесен ли уже соответствующий ИД. Если нет, то помещаем в список требуемых ИД.

По окончании переноса проверяем список требуемых ИД и переносим нужные записи. Повторяем, пока список требуемых ИД не будет пуст.

Перенос множеств

Перенос таблиц, связанных 1-к-1

Перенос таблиц с дополнительной информацией

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты