clevel
Новичок
BackUp: восстановление конкретных записей
С прошедшим НГ и рождеством
Возникла необходимость не полностью восстанавливать данные, а лишь частично.
Например, есть бекап счетов - который делается каждый день. И вот случайно удалили какой-то из счетов.
Задача - дать визуальный интерфейс -- вывели список счетов - отметили - какие восстановить, они восстановились.
В связи с этим несколько проблем:
1. Счета - эта одна из сущностей конкретно взятой системы. Состоит из данных в 4 таблицах.
В данной системе еще с десяток аналогичных сущностей, со своими наборами зависимостей и своими таблицами.
Получается, что для реализации данной задачи нужно будет писать отдельно библиотечки под каждую из сущностей.
Взять данные из такой то таблички, по списку ID из такого поля вязть данные из такой-то таблички и т.д.
Либо можно это сделать по принципу Vbulleten Import: есть общий класс, которому передаются данные в стандартизированном виде, и он уже вставляет их в базу. И под каждый движок - откуда идет импорт - свой класс/прослойка, который приводит данные к стандартной форме.
В таком случае - под каждый модуль - просто свой конфиг файл
Помимо этого, возникает проблема с автоинкрементными полями: добавили счет - удалили его, потом новый вставили.
ID удаленного (не флаг стоит - удален, а DELETE FROM было) = ID вновь вставленного
2. С течением времени система расширяется, в таблицы добавляются новые поля, у сущностей появляется доп. функционал.
Поэтому бекап 3-х месячной давности по набору полей не совпадает с текущим.
Как при этому дополнять недостающие поля? Просто дефолтным значением в базе - не всегда правильно.
Держать набор скриптов - апдейтеров под каждый сещуственный апдейт, и в самом бекапе держать его версию.
И при вставке в базу -- по очереди запускать эти сркипты, дабы привести базу в надлежащее состояние.
Прошу подсказок, кто сталкивался с аналогичными проблемами: как решали, какие причины в пользу того или иного решения.
Заранее спасибо!
С прошедшим НГ и рождеством

Возникла необходимость не полностью восстанавливать данные, а лишь частично.
Например, есть бекап счетов - который делается каждый день. И вот случайно удалили какой-то из счетов.
Задача - дать визуальный интерфейс -- вывели список счетов - отметили - какие восстановить, они восстановились.
В связи с этим несколько проблем:
1. Счета - эта одна из сущностей конкретно взятой системы. Состоит из данных в 4 таблицах.
В данной системе еще с десяток аналогичных сущностей, со своими наборами зависимостей и своими таблицами.
Получается, что для реализации данной задачи нужно будет писать отдельно библиотечки под каждую из сущностей.
Взять данные из такой то таблички, по списку ID из такого поля вязть данные из такой-то таблички и т.д.
Либо можно это сделать по принципу Vbulleten Import: есть общий класс, которому передаются данные в стандартизированном виде, и он уже вставляет их в базу. И под каждый движок - откуда идет импорт - свой класс/прослойка, который приводит данные к стандартной форме.
В таком случае - под каждый модуль - просто свой конфиг файл
Помимо этого, возникает проблема с автоинкрементными полями: добавили счет - удалили его, потом новый вставили.
ID удаленного (не флаг стоит - удален, а DELETE FROM было) = ID вновь вставленного
2. С течением времени система расширяется, в таблицы добавляются новые поля, у сущностей появляется доп. функционал.
Поэтому бекап 3-х месячной давности по набору полей не совпадает с текущим.
Как при этому дополнять недостающие поля? Просто дефолтным значением в базе - не всегда правильно.
Держать набор скриптов - апдейтеров под каждый сещуственный апдейт, и в самом бекапе держать его версию.
И при вставке в базу -- по очереди запускать эти сркипты, дабы привести базу в надлежащее состояние.
Прошу подсказок, кто сталкивался с аналогичными проблемами: как решали, какие причины в пользу того или иного решения.
Заранее спасибо!