以编程方式合并HSQLDB数据库

时间:2014-02-24 09:57:22

标签: java database merge hsqldb

我正在使用java中的小型游戏编辑器,它允许用户使用我的UI在HSQL数据库中插入/编辑/删除数据。我面临的问题是,我希望能够在不同的机器上处理这样的游戏项目,然后以编程方式合并数据库。

我想提供的另一件事是修改,所以人们应该能够创建mod并使用特定的游戏作为它的“基础版本”。还应该可以同时激活多个mod,至少如果它们不修改数据库中的相同行。在这种情况下,他们只是不相容。

数据库完全脱机,这意味着我不提供任何服务器或类似的东西。该数据库包含大约30个表,包括NPC,项目,地形(...)以及所有这些表之间的链接。

我已经看到了HSQLDB的一些插件:C-JDBC,HA-JDBC和SymmetricDS。它们用于执行群集,但我甚至不确定这是否是我需要的东西,而且我也无法弄清楚它们是否可以从我的代码中自动完成工作,以便不让它最终用户使用任何第三方UI自行合并。

我还想过只是在XML结构中保存“更改集”,但这意味着我必须自己实现整个合并,并且我希望使用现有的解决方案比单独使用它更好

1 个答案:

答案 0 :(得分:0)

您提到的程序:C-JDBC,HA-JDBC不适用于此用途。它们使两台运行HSQLDB的服务器实时同步。 SymmerticDS可能具有您想要的功能。还有其他用于数据库差异和合并的程序,可以与HSQLDB一起使用。做一个搜索。这里有一个例子:http://flywaydb.org/

但你真正需要做的是设计你的数据库,以便它可以存储任何游戏和任何mod的不同版本(mods)。看看CVS如何使用虚线版本。您可以实现相同类型的事情,因此修改后的数据库确实包含基本游戏的所有原始数据行而没有任何更改,但为新版本或mod添加了新行。

将这样的数据库与以前的版本合并是微不足道的,因为您只是向不退出的原始行添加行。