系统集成:哪个系统通常在集成中存储 ID?

System Integration: Which system typically stores ids in an integration?

我和另一位开发人员正在集成两个系统,这两个系统对客户来说是私有的,并且具有重复的功能,因此我们希望节省用户将相同数据输入到两个系统的时间。他的系统运行在客户站点的本地主机上,而我的系统运行在云端,所以我们计划让我的系统公开一个 REST API 供他的系统调用。在许多情况下,他的系统会在我的系统上保存数据。例如客户记录。

我看到了两个关于它如何工作的选项:

选项 1:他向我的系统发送一个 ID 以关联新的客户记录 - 例如 {client_name: 'Ballmart', id: 'FD23949fsad293fa2'} 然后在他想引用它时发送相同的 ID - 例如添加新订单时: {orderNumber: 2393, clientId: 'FD23949fsad293fa2'}

选项2:他发送一个没有id的客户记录,我用我的id回应他的请求。他将我的 ID 保存在他的数据库中,并在需要引用客户记录时将其发送过来。所以他会发送{client_name: 'Ballmart'},我会回复{id: 'FD23949fsad293fa2'},然后他会像以前一样发送{orderNumber: 2393, clientId: 'FD23949fsad293fa2'},为客户记录一个新订单。

我的直觉是选项 2 更好,但我正在努力解释原因。

他的系统更大,功能更多。他也是一名全职员工,而我的合同即将到期,届时他将需要承担更多责任来管理我的系统。

我会说负责数据的系统(“主”)是应该创建 ID 的系统(例如,为了避免重复,或者不为已取消的创建预订 ID)

此外,第二个选项看起来更像是一个 REST POST 请求,它现在是理解 API

的一种标准

*** 经过评论讨论:***

如果下一阶段是主系统拥有所有数据,请考虑到这一点来设计解决方案。 选择选项 1,不要在主系统(尤其是数据结构)上进行集成,稍后您必须将其从那里删除。

此外,您描述的交换看起来像是一种单向复制。在这种情况下,我认为目标表上的“来源”或“参考”列是最好的方法,尤其是当主系统必须在其他系统上进行复制时。