将Oracle复制到HsqlDB中(并知道更改的内容)

时间:2013-12-26 21:25:18

标签: java oracle jdbc hsqldb

我有兴趣使用Oracle DB并将其“复制”到hsqldb中 - 非常快,接近实时。并且希望也要注意哪些领域发生了变化。 (我需要这个来提高查询持续时间 - 并且看到嵌入式内存模式的HSQLDB比甚至缓存的Oracle快得多。但是,因为oracle授予我持久性,故障转移等等。我仍然想使用它。)

所以,我想了几个可能的方法:

  1. 在我的oracle db中的每个可能的表上使用触发器。触发器将更改写入辅助表。非常糟糕的表现&在我的意见中练习。

  2. 定期为每个表选择所有最新更新(从T中选择*,其中ora_rowscn>?)。 ?=最新的最大行scn。这样做的缺点是不知道删除(即使我们可以通过其他方式删除)。这样做的缺点是必须使用新记录来区分先前的记录以了解更改。该表可以是100个字段,只有一个变化。

  3. 使用自11 / 10g以来可用的Oracle通知 - 使用简单的JDBC链接 - 尽管这有一些限制,例如:您可以获得的已更改的字段数。

  4. 使用“2”方法以及查询sql_text表,以查看哪些字段在最新更新中受到影响,并仅区分最后1分钟内的字段。这实际上也有助于找出删除。

  5. 使用timesten而不是HSQLDB,但这需要花钱。

  6. 你怎么看?什么是最好的方式?

    谢谢

1 个答案:

答案 0 :(得分:1)

您应该探索现有工具,尤其是SymmetricDS(http://www.symmetricds.org),看看是否可以配置或修改它们以支持此功能。

另一种方法是在数据发生变化时在HSQLDB中编写触发器以更新Oracle后端。