Как архивировать старые данные в базе данных Sybase?
Я работаю над приложением, которое построено на Struts как серверная Java-технология, а Sybase ASE 15 используется в качестве базы данных для хранения данных для приложения. Теперь таблицы в Sybase заполнены огромным массивом данных, поэтому высшее руководство хочет, чтобы данные старше на несколько лет (скажем, на 3 года) архивировались и удалялись из таблиц базы данных, но эти архивные данные должны иметь возможность восстанавливаться при необходимости.
Мы также должны иметь возможность автоматически определять зависимость между таблицами, а затем определять порядок таблиц, в которых должны архивироваться данные.
Нам также необходимо хранить формат таблицы вместе с данными, чтобы процесс поиска данных был простым.
Я парень из JAVA и ничего не знаю об архивировании данных из базы данных. Также я работал в основном с Oracle и очень плохо знаком с Sybase.
Пожалуйста, сообщите мне, есть ли какие-либо инструменты / процедуры, доступные для архивирования данных из базы данных Sybase. Любая помощь / руководство / указатели по этому вопросу будут очень полезны.
Я читал о достижении этого путем разделения данных в базе данных. Текущая база данных уже разбита методом циклического разбиения. Можно ли достичь раздела базы данных на основе метки времени на уже разбитой на части базе данных. Также все таблицы не содержат столбцы меток времени.
Я также читал, что если разбиение невозможно, архивирование данных также может быть достигнуто путем создания представлений. Я хотел знать, возможен ли этот вариант, и если да, как его можно достичь?
2 ответа
Если вас просят, чтобы данные в простых файлах использовали bcp
утилита для извлечения данных. Я обычно использую эту утилиту извлечения со следующими параметрами:
bcp <database>..<tablename> out /path/<tablename>.out -U<username> -P<password> -S<servername> -c
Смотрите подробную документацию по всем параметрам и опциям в SybBooks.
Когда у вас есть все эти плоские файлы, содержащие ваши данные, вы можете обрезать все таблицы и начать заново с чистой и пустой базы данных, пока вам не понадобится архивировать снова. если вам не нужно извлекать всю таблицу из файла, я рекомендую сделать следующее:
- создать временную таблицу с той же схемой
- выберите в эту таблицу данные, которые вы хотите заархивировать.
- удалить данные с тем же предложением where в исходной таблице
- используйте описанную выше команду bcp out, чтобы получить данные, извлеченные в плоский файл
Простой и дешевый способ сделать это - создать вторую базу данных на том же сервере, которая называется архивом. В базе данных должна быть включена опция "Выбрать в". Теперь вы генерируете запрос "Выбрать в", который вводит данные из вашей обычной базы данных в архив БД. Если это произошло, вы можете выполнить запрос на удаление с теми же условиями, что и команда "выбрать в", чтобы избавиться от данных в вашей основной базе данных. если ваша таблица не меняется со временем, вы всегда можете использовать одну и ту же таблицу в базе данных архива. если он изменится, вы, вероятно, захотите каждый раз создавать таблицу и называть ее как-то так: tablename-year-month
,