2011-05-01 49 views
0

我正在开发Java,Ejb3.0,WebLogic。同步信息的设计建议

我想建立一个系统设计,告诉你我要开发的功能。 (不是太复杂)

主要目标是建立一个系统,它从几个数据库中获取信息并在它们之间进行同步。

例如:

让我们说我有数据库A,数据库B和数据库C.

,如果我们比较B对C:(B是 DB)

期望的目标:

方案1. A有一条记录在B中缺失。我们采取的行动= B在表格中添加缺失的记录。

方案2. A有记录,B也有记录。我们采取的操作= B正在按照A中所示更新记录信息。

(数据库A与数据库B相同)。

比较方法假设在特定表列信息之间进行比较。

现在我可以把所有东西都放到对象上然后进行比较。 另一方面,我可以做手动同步。

想听听一些设计建议(可能是OOP设计或任何其他模式)。即使这对某些特殊设计来说有点花销。我仍然希望这样做,以便我可以学习新的东西,并且使用这种机制来同步其他系统。

在此先感谢,

ray。

+0

对不起雷,你的要求描述的一部分使我绝对没有意义。我意识到英语不是你的第一语言,但请尝试编辑你的问题,注意尽可能清楚。 – corlettk 2011-05-01 13:30:30

+0

希望这会更好。 – rayman 2011-05-01 14:29:43

回答

1

一个很好的答案取决于数据量。

如果数量很少,只需从所有数据库中获取所有对象并将其放入集合中即可。这是最容易维护的。

由于来自一个数据库的数据量较小,而另一数据库的主要负载较重,因此可能需要将次要数据传递到数据库并让数据库完成工作。

大多数情况下,最佳做法是将应用程序和数据库之间的数据流保持在低位。

也许你能解释一下你的问题多一点...

---编辑---

好细节,让你想都同步到B中间DB。

有几种方法,这取决于你有几个环境参数,两个主要方向将是

  1. 每一次(易于编程和维护,表现很糟糕)
  2. 制作做一个完整的迭代完全同步一次增量更新后(很难达到非常难于维护,性能非常好)

为1)

如果桌子上的所有物品都可以毫无问题地融入您的主内存中,请将其全部放入那里,然后在那里做您的东西。 如果没有,你必须做一堆束。

为2)

一) 为了让让你必须确定更改的项目增量。 对于您可以使用数据库触发器,但是这是非常DB具体,很难维持,

B) 可以引入具有版本号只为您的同步目的表列,您如果一个实体完成了,就算数。

版本号可以更容易地与Hibernate框架一起引入,但是您仍然有更大的代码库来完成您的任务,因为您必须检查版本等。 但是更好的性能会使增量更新最常用的方法。

+0

例如有什么样的细节? – rayman 2011-05-01 13:25:04

+0

您期望的每个数据库的数据量是多少?什么是更重要的可维护性或性能? – Omnaest 2011-05-01 13:29:11

+0

我更喜欢有更好的可维护性和可用性。数据量现在不详。可能来自不同表格的许多记录。 – rayman 2011-05-01 14:30:17

1

这听起来像数据复制,最好由数据库本身处理。请参阅数据库技术文档,应该有多种不同的配置复制的方法。不要重新发明轮子。

+0

我们已经检查了这个选项。问题在于数据库在不同的系统中。 Oracle和SQL SERVER,并且很难在它们之间进行集成。 – rayman 2011-05-02 07:17:57