Я работаю над высокой системой использования, которая отображает несколько таблиц и представлений «только для чтения». В разные моменты времени мне нужно заменить данные в этих таблицах более новой версией, подключаясь к базе данных извне.Изменения в схеме во время спящего режима
Мы используем postgres 8.3+ и hibernate 3.2.6. Внешний процесс «обновления» будет подключаться к db через PSQL.
Для некоторых небольших таблиц усечение и вставка внутри транзакции должны быть удовлетворительными.
Однако некоторые из таблиц довольно велики, и метод усечения/вставки, вероятно, заблокирует таблицу слишком долго.
В этом случае я рассматриваю как:
1) таблица переименования - т.е. загрузить новые данные в TABLE_B во время спящего режима отображается TABLE_A, а затем выполнить таблицу переименовать table_b-> TABLE_A через PSQL
-или-
2) всегда сопоставляйте спящий режим с представлением, а когда заполняется table_b, переопределяйте представление для маршрутизации в table_b вместо текущей избыточной таблицы_a.
-или-
3) создать и заполнить новую схему, а также изменить пользователь в Hibernate пути поиска раз новой схемы готов
Я не 100% уверены в последствиях этих подходов в hibernate, и хотя я собираюсь протестировать, насколько это возможно, будет сложно протестировать столкновение (т. е. спящий запрос к таблице в момент его переименования), поэтому некоторые теоретические мнения будут высоко оценены.
если кто-то пытались аналогичные подходы или знают о возможных подводных камнях я был бы очень благодарен ..
р.
извиняется за плохой вопрос, который может не иметь ни одного правильного ответа ... – pstanton