【问题标题】:Synchronising data entities from different applications同步来自不同应用程序的数据实体
【发布时间】:2009-03-16 16:48:07
【问题描述】:
我正在寻找一些关于解决我所负责的问题的最佳方法的反馈。有两个系统拥有自己的数据库,存储非常相似的业务实体。
对于每个有问题的实体,都需要有一种同步机制,以确保一个数据库中的更改在发生更改时传递给另一个数据库,并将更改转换为目标表结构。这种翻译意味着复制不是一种选择,但我不想开始编写定制的触发器或视图等来保持它们同步。
这是 BizTalk 或类似产品在初始配置/映射过程之后可以处理的事情吗?另外,Biztalk 是否可能会矫枉过正,我可以使用其他方法来实现这一点吗?
谢谢,
布赖恩。
【问题讨论】:
标签:
database
synchronization
biztalk
【解决方案1】:
这取决于要同步的“系统”(表?)的大小。
EAI 是执行此操作的通用应用程序。连接两个无法交互的系统,有效地将一个业务对象映射到另一个业务对象,使用映射将一个业务对象转换为另一个业务对象。
但是这样的工具(例如 webMethods)是企业工具,如果你只需要同步两个系统中的两个表,EAI 显然是矫枉过正的。
无论如何,这些原则可以帮助您。 EAI 方法是拥有一个通用业务对象,该对象与您想要同步的业务对象在两个系统中找到的所有属性相匹配。然后,您将必须有某种映射来将每个特定于应用程序的业务对象与您的通用业务对象进行转换。您的对象不仅应该描述业务数据,还应该描述要执行的操作(创建、更新、删除数据)。
然后您需要一个触发器(或者如果您想同步两种方式,则需要两个)来检测何时发生更改,使用映射将您的触发器获取的数据转换为通用对象(在另一端执行操作) .
最后,您需要一个“更新程序”,它将获取特定的业务对象并在数据库中执行正确的操作(插入/更新/删除)
EAI 提供连接器来处理触发工作流和更新数据库。您仍然需要根据所使用的 EAI 以某种特定方式定义一些映射。
EAI 比仅仅同步两个表要强大得多。连接器有多种类型,可以与各种系统(专有的)、各种数据库、简单格式(xml、文本)或特定协议(ftp、webservices等)交互
EAI 还确保任何修改都在最后有效地提交。
希望对你有帮助。
【解决方案3】:
瑞士公司 Sowatec 有一个名为“datariver”的漂亮工具(几年前我曾在那里工作过。不过我并没有参与过这个产品;只是你知道的)。它旨在将数据从源流到汇(就像河流一样)。
该网站是德文的,但其背后的人很乐意通过邮件用英文回答您的任何问题。
【解决方案4】:
BizTalk 是并且将会是此类问题的理想解决方案。
BizTalk 能做什么?
1. 定义一个代表通用业务实体的模式,这实际上是需要跨多个数据库表同步的所有字段。
定义通信流(编排)和端点(Web 服务),即哪个更新触发什么变化!
使用映射将通用业务实体映射到所需的特定数据元素
由数据库。请注意,biztalk 具有内置适配器以加快开发过程。
必须在设计上花费足够的时间,并且这个系统的结果会非常好。
出于开发目的,请参阅我的文章(谷歌关键字:Biztalk + Karamchetti)