我正在寻找一些关于解决我所负责问题的最佳方法的反馈。有两个系统都有自己的数据库,存储非常相似的业务实体。
对于每个有问题的实体,都需要有一个同步机制,以确保在发生更改时将一个数据库中的更改传送到另一个数据库,并将更改转换为目标表结构。这种翻译意味着复制不是一种选择,但我不想开始编写定制触发器或 View 等来保持它们同步。
这是 BizTalk 或类似产品在初始配置/映射过程后可以处理的事情吗?此外,Biztalk 是否可能矫枉过正,我是否可以使用任何其他方法来实现这一目标?
谢谢,
布莱恩。
最佳答案
这取决于要同步的“系统”(表?)的大小。
EAI一般都是做这个的应用。连接两个无法交互的系统,有效地将一个业务对象映射到另一个业务对象,使用映射将一个业务对象转换为另一个业务对象。 但是这样的工具(例如 webMethods)是企业工具,如果您只需要同步来自两个系统的两个表,EAI 显然是多余的。
无论如何,原则可以帮助您。 EAI 方法是拥有一个通用业务对象,该对象与在两个系统中找到的您要同步的业务对象的所有属性相匹配。然后你将不得不有某种映射来将每个应用程序特定的业务对象与你的通用业务对象进行转换。您的对象不仅应该描述业务数据,还应该描述要执行的操作(创建、更新、删除数据)。
然后你需要一个触发器(或者两个,如果你想同步两种方式)来检测何时发生变化,使用映射将你的触发器获得的数据转换为通用对象(在另一端执行操作) .
最后,您需要一个“更新程序”,它将获取特定的业务对象并在数据库中执行正确的操作(插入/更新/删除)
EAI 提供连接器来负责触发工作流和更新数据库。您仍然需要根据所使用的 EAI 以某种特定方式定义一些映射。 EAI 比仅仅同步两个表要强大得多。连接器有多种类型,可以与各种系统(专有系统)、各种数据库、简单格式(xml、文本)或特定协议(protocol)(ftp、webservices 等)进行交互 EAI 还确保任何修改在最后有效地提交。
希望对您有所帮助。
关于database - 同步来自不同应用程序的数据实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/651228/