将业务逻辑放在应用程序中,而不是数据库中

主要观点:

  • 不应过度将应用业务逻辑推到数据库中,应尽量在应用代码中处理业务逻辑,因扩展应用服务器资源比数据库服务器资源更易。
  • 可将部分复杂查询放在数据库层以控制返回结果数量,但要避免给数据库带来过大负担,如可分离数据过滤与检索。
  • 应避免在数据库中对返回结果进行计算,将其移至应用层,利用应用层的可用资源。
  • 可将复杂连接逻辑移至应用层,减少数据库负载,提高可扩展性。

关键信息:

  • 数据库擅长复杂连接、过滤等操作,但将业务逻辑放数据库会消耗更多数据库资源,更少应用服务器资源。
  • 执行数据库内操作会将业务逻辑推至数据库底层,应尽量减少。
  • 可通过分离过滤与检索、避免在数据库中计算等方式将业务逻辑移至应用层。

重要细节:

  • 以在大型数据库表上执行复杂过滤查询为例,直接在数据库执行可能只需少量行数据,若在应用层执行则需先获取所有数据再过滤,对大型数据集不可接受。
  • 可先通过初始查询获取过滤所需字段,再在应用层执行过滤逻辑,后续获取符合条件的实际数据,减少数据传输。
  • 对于复杂连接,将其移至应用层可减少数据库负载,提高可扩展性。
阅读 14
0 条评论