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