大型数据列表的微服务和连接

时间:2016-06-22 20:00:38

标签: sql jpa join microservices

虽然我发现微软服务技术在许多方面都非常引人注目和有价值,但我遇到的一个挑战是传统上你会根据JPA编写一个可以通过地址加入客户的查询(这只是一个例子)。

问题是,我们需要返回许多客户记录(例如每次100个),其中每个地址都分配给客户(让我们假设一对一的关系)。

使用Join和JPA很容易解决这个问题,但在微服务中,基本上我们需要2个微服务,一个用于客户,一个用于地址。问题是,我们可能首先获取客户记录,但是我们如何返回与每个客户相关的所有地址记录,因为地址记录依赖于被查询的客户?

我不认为我们可以在每个微服务中使用单个查询来返回每个地址,除非我们使用第一个结果中的每个客户ID,因为这在很多方面都很糟糕。

由于查询的标准可能与两个微服务都不相关(例如:如果我们按姓氏搜索),我们没有一个标准值,我们可以在两个微服务中使用,这将使我们能够轻松地映射网关中的数据一起。

那我们该怎么做?

1 个答案:

答案 0 :(得分:1)

如果你发现自己经常被要求返回大型的报告式列表(因为想要更好的术语),那么答案可能就是提供一个"搜索"微服务。

如果两个实体肯定不属于同一个(你可以从你的例子中争论,那个地址只是Customer的一个属性,那么它们在两个不同的地方做了什么),然后保持某种非规范化,或者ViewModel-友好,两个实体的代表在一起似乎是合理的。