Резервирование удаляемых записей в другую базу

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
molann
Сообщения: 8
Зарегистрирован: 30 мар 2006, 16:29

Резервирование удаляемых записей в другую базу

Сообщение molann » 30 мар 2006, 17:08

Добрый день. Есть такая просьба о помощи к знающим людям.
Как можно забэкапить удаляемые из базы записи в другую базу?
Структура самой базы в принципе заранее известна, меняться вряд ли будет. Цель - простое их сохранение для возможности их дальнейшего просмотра.
Уже много вычитал про сторонние репликаторы, но надо бы программно реализовать на Delphi.
Глобально задача состоит в чистке базы (т.е удаляем из нее все уже ненужное, например пока по времени и еще кое-чего, потом бэкапоресторим ее, бэкапные архивы сохраняем, чтоб их тож можно было посмотреть). Удаляемые записи скидываем в имеющe.cz пустую копию базы и ее тоже бэкапим пока.
Про копирование таблиц в пределах одной базы уже много чего нашел (там все просто, буквально одним инсертом), а вот в другую пока не встречал.
Пока других идей у меня нет, буду делать копирование с перебором поле-запись-таблица через IBTable.
Заранее спасиб, если кто откикнется.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 30 мар 2006, 17:14

через IBTable вообще никакие копирования данных делать нельзя, это написано тут
www.ibase.ru/devinfo/ibx.htm
и тут
www.ibase.ru/devinfo/impexp.htm

"сохранение для дальнейшего просмотра" - это как???
Перенос из одной БД в другую - это понятно, можно использовать двухфазный коммит (но обязательно все делать в транзакции snapshot).
www.ibase.ru/devinfo/ibtrans.htm

molann
Сообщения: 8
Зарегистрирован: 30 мар 2006, 16:29

Сообщение molann » 30 мар 2006, 17:25

За советы спасиб. Особенно за двухфазный, не подумал.
Через тэйбл хотел пробовать, потому что через IBSQL пока не осенило как.
Просмотр: тупо посмотреть потом, что мы удаляли в прошлом.
И еще вопрос: читал топик про нотпускание файла базы после shutdown, решение кроме "ждать" так и не найдено? Потому что с делэями работает через раз, а чаще через много раз. Кто-то еще писал что SYSDBA shutdown пофигу, это ведь чушь?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 31 мар 2006, 08:12

Чтобы "тупо посмотреть потом" необязательно данные выкидывать в отдельную базу. Могут и в этой полежать.
SYSDBA и владелец базы действительно могут подключиться несмотря на shutdown. Это не чушь ибо shutdown как раз для того и сделан чтобы они могли спокойно (от других пользователей) администрировать базу.

molann
Сообщения: 8
Зарегистрирован: 30 мар 2006, 16:29

Сообщение molann » 31 мар 2006, 09:39

В том и смысл, что из текущий базы их надо выкинуть, н необходим их последующий просмотр. Все это будет делаться естественно, когда меньше всего народу, может ночью, может нет, и в принципе, все кто все-таки не отключиться сам после мессаджа, будут нещадно обрублены. А енто работает почему-то периодически. Мне кажется, что это уже винда не отпускает файлик базы, хэндл что ли открытым остается.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 31 мар 2006, 13:14

molann писал(а):В том и смысл, что из текущий базы их надо выкинуть
Ты говоришь что их надо выкинуть, я говорю что нет, так что возникает естественный вопрос: сколько гигабайт занимает твоя база?
molann писал(а):будут нещадно обрублены.
Отсюда возникает второй вопрос: с каких это пор удаление записей (пусть даже массовое) стало требовать монопольного доступа?

molann
Сообщения: 8
Зарегистрирован: 30 мар 2006, 16:29

Сообщение molann » 31 мар 2006, 16:07

Весит-то она не шибко много, проблема в том, что записи лишние появляются очень часто и в больших кол-вах (хранятся типа отсчеты определеныые для аппаратуры и много всег еще), поэтому нужно их периодически жахать оттуда, ну и дырки соответсвенно поубивать. Вот для бэкапарестора и нужен монопольный доступ.
Если несложно, изложи тогда свое мнение, как поступить. А то я так еще долго буду все объяснять.

smu
Сообщения: 39
Зарегистрирован: 29 окт 2005, 10:12

Сообщение smu » 01 апр 2006, 00:28

molann писал(а):Вот для бэкапарестора и нужен монопольный доступ
Для бэкапа монопольный доступ не нужен. Рестор на живую базу никто не делает (если не хочешь неприятных сюрпизов).
molann писал(а): записи лишние появляются очень часто
А почему? Может здесь кроется проблема, которую можно решить?

molann
Сообщения: 8
Зарегистрирован: 30 мар 2006, 16:29

Сообщение molann » 01 апр 2006, 12:51

База бэкапится, архивчик ныкается, если все ок мы ее дропаем и ресторим на ее место старую. Так вот дропается она только периодически.
А с ее засиранием уже ниче не сделаешь, все уже работает достаточно давно и люди не дураки далеко, все что можно оптимизировать уже сделали. Я же говорю, в базу сыпятся необходимые для работы аппаратуры данные и т.д.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 01 апр 2006, 13:24

если все ок мы ее дропаем и ресторим на ее место старую.
я надеюсь - наоборот. сначала рестор, и если он успешен, "дропаем старую базу".

molann
Сообщения: 8
Зарегистрирован: 30 мар 2006, 16:29

Сообщение molann » 01 апр 2006, 13:56

Это-то понятно, но суть не в этом. Еще бы дропалась она потом стабильно.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 03 апр 2006, 08:44

molann писал(а):поэтому нужно их периодически жахать оттуда, ну и дырки соответсвенно поубивать.
Дырки??? В базе нет дырок. Если хочется убивать ненужные данные - убивайте (хотя я бы подумал над тем зачем ненужные данные вообще в базу заносятся). После этого - backup без ключа -g (пофиг что он может идти несколько часов - запустите на ночь) и... все.

molann
Сообщения: 8
Зарегистрирован: 30 мар 2006, 16:29

Сообщение molann » 03 апр 2006, 09:14

Бэкап программный, с ним-то все нормально.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 03 апр 2006, 13:55

Тогда в чем глубинный смысл рестора с заменой базы?

molann
Сообщения: 8
Зарегистрирован: 30 мар 2006, 16:29

Сообщение molann » 05 апр 2006, 18:22

Пока я тут всем пытаюсь объяснить, зачем мне надо так делать, сам уже в принципе все сделал. Осталось только добить то ли винду, то ли IB, чтоб они файл сразу отпускали после шатдауна.
Замена - чтобы у девайсов-клиентов была актуальная, без лишнего устаревшего-ненужного хлама минимальная по размеру база.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 06 апр 2006, 08:10

Клиника. База будет минимальна только сразу после восстановления. Потом начнет расти. Так стоит ли огород городить? По-моему, проще оставить ее сразу большой. По крайней мере сэкономится время на удлинении файла. Еще раз повторяю для тех кто с фокса пришел: в IB базе дырок нет. Сжимать ее не надо!

Ответить