Java微服务如何处理跨库查询?

最近在做微服务的开发,突然发现一个问题,就是微服务好像是每个服务对应一个数据库,那么,微服务之间如果存在关联查询的话,那怎么做跨库查询呢?

阅读 4.5k
4 个回答

微服务目标是解耦,所以千万别跨库查询!!!

另外微服务拆分是一门艺术活,我先假设你拆的是合理的,且你说的关联查询用数据库解决

比如你的需求是统计报表,那么老老实实再建一个报表服务和包含两个表的数据库,数据库是通过其他服务的表同步过来的,前提是牺牲了一致性和数据时效性,这样的情况下正常关联查询就好

当然根据具体需求应该还有其他更好的方案,具体情况具体分析

Sql表名前加上库名

新手上路,请多包涵

首先,考虑你的微服务拆分是否合理,为什么还会存在这类跨库查询的情况?合并成一个微服务是否更合理?
其次,MongoDB是文档型数据库不是关系型数据库,做关联数据查询它并不擅长,为什么设计时未考虑将关联数据聚合到一条文档记录中,便于查询,而不是分散到多个文档记录中?

最后,如果该业务确实需要用到关联查询等关系型数据库的特性,是否可以考虑将MongoDB文档数据库切换为关系型数据库,会更合适些?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题