这是我的问题。我构建了一个网络应用程序,并且自然地将数据保存在描述该应用程序域的数据库中。之后,我为同一个组织构建了另一个 Web 应用程序,并使用单独的数据库来描述该应用程序的域并存储数据......自然会出现更多项目,并且对于每个应用程序,我将其数据隔离到单个数据库. 开发方面,我认为没关系,因为我可以在应用程序的数据库中维护对数据结构和数据的更改。
考虑到这些应用属于同一个组织,它们之间往往会复制大量数据,例如部门名称、职位名称、商店名称等。这些表中的大多数包含相同的数据,但在每个数据库中并不完全相同,并且并非总是被所有应用程序使用。然而,对这些数据的更改需要在所有应用程序中进行更改(有时以不同的方式),从而造成越来越多的管理“麻烦”。
所以我一直在想一种方法来获得数据之间的一些同步。我想要更轻松的管理 - 在一个应用程序(或中央应用程序)上更新并根据每个应用程序的需要更新所有数据库 - 以及在应用程序之间共享数据的更好方法(比如可能在新应用程序中混合来自不同应用程序的数据下面具体分析)。我所指的大多数数据都被用作约束,而不是核心领域概念,描述组织而不是描述特定领域。
我正在寻找有关完成此任务的一些方法的意见。
我的第一个想法是获取公共数据结构,例如我提到的部门名称表,并将它们粘贴在核心数据库中。对数据的任何更新都将通过专用的网络应用程序在此数据库中完成,并且我会为这些更改应用某种观察者或发布者/订阅者模式 - 应用程序将通知观察应用程序的更改(通过那里的专用网络服务)发生更改并允许应用程序获取新数据并根据需要使用它。GUID 可以作为用户的参考来识别整个应用程序中的相同数据。此外,我可以为不需要在特定应用程序的数据库中但可能对它有用的读取和搜索操作构建 Web 服务。
第二个想法是每个应用程序管理自己的数据,并且应用程序可以相互观察。一个人的变化可以通知其他共享相同数据结构的人发生了变化。我仍然可以使用一些 GUID,甚至可以在任何应用程序上构建服务。我认为这在数据重复方面也不会过多,但可能更难管理,因为每个应用程序最终都会与其他应用程序耦合,而且我想知道如何分配责任,即哪个应用程序控制哪些信息。
我真的很好奇这种类型的数据分发和同步会起作用,甚至会被推荐。非常欢迎提出意见和其他想法!