使用 SQL 实施复杂计算还是使用 ETL?

Implement complex calculations with SQL or rather use ETL?

我们目前正在使用 PHP (Zend Framework 2) 和 Doctrine 作为 ORM 工具(MySQL 数据库)开发用于财务分析的 Web 应用程序。复杂的财务计算在服务器端完成,因为客户端必须尽可能简单。数据应该在将近 "real-time" 内可用,因为用户正在实时输入数据。所有用户数据将立即传输到服务器。

对于财务计算,我们必须通过自定义筛选和数据聚合来连接多个表。业务逻辑和计算比较复杂

所以,我们关心的是在我们的SQL语句中混合业务逻辑和规则(封装原则)。即使使用 ORM 工具,一些语句也会是原生的 SQL 而不是 understandable/modifiable.

我们考虑使用 ETL 或 BI 软件进行数据处理。但是大多数ETL工具和BI软件都是用Java编写的,它们与PHP的集成似乎相当麻烦。我们,一个由 5 PHP 名开发人员组成的团队,对 ETL 设计和处理知之甚少。我们在 ETL 中看到的最关键的缺点是处理时间、延迟和数据的最新性。

在我们的情况下是否推荐使用 ETL 工具/商业智能软件?还是我们应该坚持复杂的 Doctrine/SQL 语句并将我们的业务逻辑与 SQL 纠缠在一起?

非常感谢您的任何见解或建议。

不知道这个问题是不是征求意见。本回答旨在为您提供选择时的思考。

选择 "external" ETL 还是 "internal" ETL 取决于几个因素:

  • 开发人员的技能。
  • ETL 的要求。
  • 数据转换的具体要求。
  • 数据库性能的具体要求。

在许多情况下,您可以在数据库中或使用外部工具实现相同的目标。外部工具的优点是它们不会妨碍数据库服务器——或者至少您可以更轻松地控制它。此外,外部工具是为移动数据和处理数据而设计的,因此它们通常提供更好的连接性、性能和错误报告。

也就是说,如果您的技能集中在 SQL,那么将数据加载到暂存表并在数据库中完成工作也是可行的。我经常发现我更喜欢在数据库中做这样的处理,但是这取决于项目的要求。