【发布时间】:2017-09-22 14:20:24
【问题描述】:
我正在学习微服务,我将使用微服务架构构建一个项目。
问题是,我的一个队友想要为所有服务使用一个数据库,共享所有表以便“数据不会重复”,每个服务都将使用不同的框架和语言构建,例如 django 和 rails 使用非常不同的 ORM 标准。
什么是正确的方法?因为我认为使用一个数据库会涉及大量“破解” ORM 以使其正常工作。
【问题讨论】:
-
你为什么需要“破解”orms?仅仅因为它们具有不同的语法并不意味着它们最终基本上不会做同样的事情,查询数据库。
-
这不是见仁见智,你可以使用共享数据库;但您只需要为独占访问权限分离访问权限即可强制执行数据所有权。 Cars 表可以归 Cars 服务所有。这已经很有用了,但有趣的是,编排服务可以通过只读视图加入 Cars 表。视图可以维护服务合同。 (不幸的是问题已经结束,所以我不能详细说明)
-
你可以,但你不应该。或者更确切地说,如果您要共享数据库,为什么还要为微服务烦恼?
标签: database database-design orm architecture microservices