这是我的问题。我构建了一个Web应用程序,并自然地将数据保存在描述该应用程序域的数据库中。后来,我为同一个组织构建了另一个Web应用程序,并使用一个单独的数据库来描述该应用程序的域和存储数据......当然还有几个项目出现了,每个应用程序我都将它的数据隔离到一个数据库。开发方面明智,我认为没关系,因为我可以在应用程序的数据库中维护数据结构和数据的更改。
考虑到这些应用程序属于同一个组织,它们之间往往会复制大量数据,例如部门名称,职位,商店名称等。这些表中的大多数都拥有相同的数据,但并不完全相同在每个数据库中,并不总是被所有应用程序使用。但是,对这些数据的更改需要在所有应用程序中进行更改(有时以不同的方式),从而不断增加管理“麻烦”。
所以我一直想到一种在数据之间获得同步的方法。我希望更轻松的管理 - 在一个应用程序(或中央应用程序)上更新并根据每个应用程序的需要更新所有数据库 - 以及在应用程序之间共享数据的更好方式(例如,可能在新应用程序中混搭来自不同应用程序的数据)为了具体的分析)。我所引用的大部分数据都被用作约束而不是核心域概念,描述组织而不是描述特定域。
我正在寻找一些方法来完成这项工作。
我的第一个想法是抓住comun数据结构,比如我提到的部门名称表,以及在核心数据库中的stick'em。对数据的任何更新都将在此数据库中通过专用的Web应用程序完成,并且我将应用某种Observer或Publisher / Suscriber Pattern进行这些更改 - 应用程序将通知观察应用程序的更改(通过专用的Web服务)发生了更改并允许应用程序获取新数据并根据需要使用它。 GUID可以是用户作为参考,以在整个应用程序中识别相同的数据。此外,我可以为读取和搜索操作构建Web服务,这些操作不需要位于特定应用程序的数据库中,但可能对它有用。
第二个想法是每个应用程序管理自己的数据,应用程序可以相互观察。一个更改可以通知共享相同数据结构的其他人发生更改。我仍然可以使用一些GUID甚至在任何应用程序上构建服务。我认为这在数据重复方面也不会那么过分,但可能更难以管理,因为每个应用程序最终都会与其他应用程序耦合,我想知道如何分配关于哪个应用程序控制哪些信息的责任。 / p>
我真的很好奇这种类型的数据分配和同步会起作用,甚至可以推荐。非常欢迎Opions和其他想法!
答案 0 :(得分:3)
您在此处描述的是“主数据管理”系统的典型案例。 EAI供应商(Oracle,TIBCO,IBM)提供此类产品。它们类似于您的第一个解决方案,即具有同步过程的集中式数据库,检测外部数据源中的更改,获取更改以及将数据同步到其他外部数据库。它们还提供用户界面来直接更改主数据
MDM软件价格昂贵,但您可以实施自定义解决方案 - 至少在初期 - 比购买一个更便宜。您的两种解决方案都具有技术意义,但其可管理性存在差异
第一个是更好的,如果你可以专门负责人/组织来处理它,你的服务的业主可以同意通过这个新的集中式系统进行更改。
第二种解决方案分担了服务所有者之间的责任。这里的艰巨任务是识别每种信息(业务对象)的所有者
如果不了解您的系统和组织,我无法建议解决方案,但我希望我能提出一些想法。