拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 在数据库和应用程序代码中执行计算的优缺点

在数据库和应用程序代码中执行计算的优缺点

白鹭 - 2021-11-24 609 0 0

1.概述

通常,我们发现很难决定是否应该在数据库(RDBMS)或应用程序代码中执行计算以同时获得良好的性能和便利性。

在本文中,我们将探讨在数据库和应用程序代码中执行计算的优缺点。

我们将考虑一些可能影响此决策的因素,并讨论哪个层(数据库或应用程序)更适合处理它们。

2.数据库中的计算

2.1 数据选择与聚合

关系数据库针对数据的处理,选择和聚合进行了高度优化。我们可以使用SQL轻松地对数据进行分组,排序,过滤和聚合。

LEFTRIGHT JOIN轻松地从多个表中选择和取消选择数据集。

同样, **MINMAXSUMAVG类的聚合函数比Java实现要方便且快捷。
**

另外,我们可以在聚合数据时利用索引来调整磁盘IO的性能。

2.2 数据量

所有流行的RDBMS在处理表中的大量数据以进行计算时均提供无与伦比的性能。

但是,与数据库相比,我们将需要大量资源(例如内存和CPU处理)来处理应用程序中类似数量的数据。

另外,为了节省带宽,建议在数据库中执行以数据为中心的计算,从而避免通过网络传输大量数据

3.应用中的计算

3.1 复杂计算

与数据库不同,诸如Java之类的高级语言在处理复杂的计算方面非常精通

例如,我们可以利用Java中的异步编程,并行执行和多线程来解决复杂的问题。

同样,数据库为日志记录和调试提供了最少的支持。但是,当今的高级语言为此类关键功能提供了出色的支持,这些功能通常在实现复杂的计算中非常方便。

例如,我们可以使用SLF4J轻松添加Java应用程序中的日志记录,并使用流行的IDE(例如Eclipse和IntelliJ IDEA)进行调试。因此,与数据库相比,在应用程序中执行计算是开发人员的便捷选择。

同样,另一个论点是,我们可以轻松地在应用程序代码中对计算进行单元测试,这在数据库中执行起来相当复杂

事实证明,单元测试非常方便,可以检查实现中的更改。因此,在Java应用程序中执行计算时,我们可以使用JUnit添加单元测试。

3.2 先进的数据分析和转换

该数据库为高级数据分析和转换提供了有限的支持。但是,使用应用程序代码执行复杂的计算很简单。

例如,Deeplearning4J,Weka和TensorFlow等各种库可用于高级统计和机器学习支持。

另一个常见用例是,我们可以使用Hibernate等ORM技术轻松地对数据进行对象化,使用Java Streams等API来处理数据,并通过XML或JSON解析库以各种格式生成结果。

3.3 可扩展性

由于RDBMS只能向上扩展,因此实现数据库可伸缩性可能是一项艰巨的任务。但是,应用程序代码提供了更可扩展的解决方案。

我们可以使用负载平衡器轻松扩展应用服务器并处理大量请求。

4.数据库与应用程序

现在,我们已经看到了在每一层上基于某些因素执行计算的优势,让我们总结一下它们之间的差异:

  • 数据库是数据选择,聚合和处理大量数据的首选
  • 但是,在考虑诸如复杂性,高级数据转换,第三方集成和可伸缩性等因素时,在应用程序代码中执行计算似乎是一个更好的选择。
  • 此外,高级语言还提供了其他好处,例如日志记录,调试,错误处理和单元测试功能。

混合并利用这两层的优点来解决一个复杂的问题始终是一个好主意。

换句话说,使用数据库进行数据的选择和聚集,然后将有用的精益数据传输到应用程序,并使用高效的高级语言对应用程序执行复杂的操作

5.结论

在本文中,我们探讨了在应用程序和数据库中执行计算的利弊。

首先,我们讨论了在数据库层和应用程序层中执行计算的优点。然后,我们总结了有关基于我们讨论的所有因素进行计算的结论。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *