共享数据的服务?

时间:2010-10-25 15:35:44

标签: web-services architecture

想象一个拥有许多部门和系统的组织,其中许多部门和系统必须共享数据。例如,一个部门/系统负责更新客户数据,但许多部门/系统必须能够读取客户数据并将其与自己的数据相关联。在这种情况下,您对使用Web服务跨多个系统共享此核心业务数据有何看法?

似乎有几种使用模式需要考虑:

  1. 检索单个记录的应用程序 - 此处没有实际问题。从其他机制(例如,跨多个数据库复制数据,然后使用数据库查询检索)到Web服务时,可能会出现性能下降,但在许多情况下这可能是可以接受的。
  2. 应用程序显示数据表,其中列的数据源跨越多个数据库 - 例如,显示客户名称列表及其订单。如果两者都在一个数据源中,那么这很容易开发并且性能很快。如果从CRM的数据库中提取客户名称并使用订购系统的Web服务提取订单信息,那么开发就更加困难,因为数据必须合并并且执行变慢,因为中间层有两个(或更多)数据检索操作然后必须遍历多个数据集。
  3. 应用程序搜索搜索条件跨越多个系统的数据 - 如果系统无法连接数据元素并在一个查询中指定所有谓词和排序顺序,那么这将变得非常难以开发并且执行速度很慢。
  4. 请注意,这些使用模型中的每一个都尝试使用Web服务来检索一个组织/网络中的数据。是否可以制作Web服务以适应这些使用模式?

1 个答案:

答案 0 :(得分:1)

以三种方式(通过Web服务)共享数据确实是可能的,但还有很多其他因素会推动正确的方法。

需要考虑的建筑方面:

  • 数据架构(业务所有权,安全性,管理等)。
  • 数据质量 - 它是否适合消费应用程序?
  • 如何保持相关数据(在相关系统中)保持同步?
  • 使用案例:Transactional(OLTP)vs Analytical(OLAP)。

与其他系统集成时需要考虑的事项:

  • 使用情况如何:交易(OLTP)或分析(OLAP)?
  • 我们谈论了多少请求以及它们何时发生等?
  • 这些请求服务的查询可能有多复杂?
  • 完全数据需要的最新状态?

如果您的数据存在于为事务系统提供服务的单个数据库中,则对其进行的任何查询都会影响该系统的性能;如果你有很多系统打到那个数据库,那么你就有了一个关键的数据基础设施来保护 - 它会下降,所以其他一切都是。

为支持事务系统而编写的数据库通常不适合分析系统。我工作的一个常见方法是将数据的副本ETL存储到为此目的而设计的存储库中。另一个优点是(因为它在一个单独的系统中),你不会在任何一方遇到性能问题。

假设您将数据ETL输出到新的存储库,哪个源是权威的?可能有几个应用程序将ETL数据集成到集中的Data Mart或数据仓库中 - 这就成了“真相的来源”。

最后 - 处理数据(逻辑上和物理上)与面向对象的编程/设计非常相似:很多基本原则(如SOLID)都很容易应用。