【发布时间】:2010-10-25 05:01:05
【问题描述】:
我正在开发一个高使用率系统,该系统映射一些“只读”表和视图。在不同的时间点,我需要通过外部连接到数据库来将这些表中的数据替换为更新的版本。
我们使用的是 postgres 8.3+ 和 hibernate 3.2.6。外部“更新”进程将通过 PSQL 连接到数据库。
对于一些较小的表,事务中的截断和插入应该是令人满意的。
但是有些表非常大,truncate/insert 方法可能会锁定表太久。
在这种情况下,我正在考虑:
1) table rename - 即在hibernate映射到table_a时将新数据加载到table_b中,然后通过PSQL从table_b->table_a执行表重命名
-或-
2) 始终将 hibernate 映射到视图,并且当 table_b 被填充时重新定义视图以路由到 table_b 而不是现在冗余的 table_a。
-或-
3) 创建并填充新架构,并在新架构准备好后更改休眠用户的搜索路径
我不能 100% 确定这些方法在休眠中的影响,尽管我将尽我所能进行测试,但很难测试冲突(即在此时对表进行休眠查询)被重命名),所以一些理论意见将不胜感激。
如果有人尝试过类似的方法或知道潜在的陷阱,我将非常感激..
p.
【问题讨论】:
-
对可能没有一个正确答案的问题表示歉意...
标签: hibernate postgresql