检测远程系统上的数据库重置

时间:2018-06-08 12:54:55

标签: database reset detection uniqueidentifier

我有一个多层架构,每层都是一个不同的系统。系统与自定义协议连接以进行同步。

Layer 3
|
Layer 2
|
Layer 1

由于原因(硬件缺陷,降级,错误,数据库损坏),较低层上的h2数据库(现在称为第1层)可能会出现重置。在层1上重新启动db序列将破坏为层间同步指定的上层的约束。

虽然可以通过添加另一个约束来避免这种情况,但是如果创建了新数据库则允许检测。为此,我需要为每个创建的数据库提供唯一标识符。默认情况下,h2不知道这样的属性(这是可以理解的)。

我目前的想法:

当我使用flyway进行数据库迁移时,我可以引入一个迁移脚本,它添加了一个随机uuid作为值的属性。在重新连接时将此值与上层同步时,我清楚地可以识别出数据库是否已经重置并对其作出反应。这样我就可以保持同步数据的完整性。

这是一个可行的解决方案,还是有任何重大缺陷我还没想到呢?

0 个答案:

没有答案