【发布时间】:2011-12-30 05:26:28
【问题描述】:
我不懂 SOA(面向服务的架构)和数据库。虽然我被 SOA 概念(将可重用的业务逻辑封装到服务中)所吸引,但如果其他服务/系统需要封装在服务中的数据表,我无法弄清楚它应该如何工作——或者 SOA 是否适合 完全在这种情况下?
更具体地说,假设我有两个服务:
-
CustomerService:包含我的Customers数据库表和相关的业务逻辑。 -
OrderService:包含我的Orders表和逻辑。
现在,如果我需要使用 SQL 语句对 JOIN Customers 和 Orders 表进行处理,该怎么办?如果表包含数百万个条目,那么如果我必须使用 SOAP/XML 通过网络发送数据,则会导致无法接受的性能。以及如何执行JOIN?
做了一些研究,我找到了一些建议的解决方案:
- Use replication 在需要的地方制作所需数据的本地副本。但是没有封装,那么使用 SOA 有什么意义呢?对此进行了讨论 on StackOverflow,但没有明确的共识。
- 设置Master Data Service 封装所有数据库数据。我猜它会变得非常大(每个存储过程基本上只有一个 API 调用)并且需要一直更新。在我看来,这似乎与 enterprise data bus 概念有关。
如果您对此有任何意见,请告诉我。
【问题讨论】: