哪个更好,在后端迭代和排序数据还是让数据库处理它?

Which one is better, iterate and sort data in backend or let the database handle it?

我正在尝试为 Djabgo 休息框架 Web 应用程序设计数据库模式。 在某些时候,我有两个选择:

1- 选择一个模式,其中在一个或多个 api 中,我必须从数据库中获取一个查询集并使用 python 对其进行迭代和排序。 (例如,我可以将一些数据存储在数组数据类型的列中,从数据库中获取它们并使用 python 对它们进行排序。)

2- 将数据存储在另一个 table 中,并在每次插入时插入大量行。这样,我可以使用 orm 代码以更少的行获取我最喜欢的格式的数据。

我尝试了一些基本测试和基准测试,看看哪种方式更快,让数据库处理更多工作(第二种方式)并没有让我失望。但我没有办法设置更真实的情况,问题是:

当数据库每秒还必须处理来自其他 api 和客户端的数百个请求时,让数据库处理工作仍然是个好主意吗? 数据库(和 orm)通常比后端更快更可靠吗?

作为一般规则,您希望让数据库在工作适合数据库时工作。排序结果集将属于该类别。

切记:

  • 数据库 运行 在服务器上,通常在分布式系统上,因此它可以访问更多资源。
  • 数据库是为处理大数据而设计的,因此不受单线程内存的限制。
  • 当出现这个问题时,通常需要将比实际需要更多的数据传回应用程序。考虑一个问题,例如获得某事的前 10 名。
  • 应用程序和数据库中的混合处理通常需要多次查询和来回传递数据,这是昂贵的。

(毫无疑问还有其他的考虑。)

在某些情况下,在应用程序中工作可能更高效或更方便。一个常见的例子是格式化应用程序的结果集——比如将 1234.56 变成 ,234.56。其他示例是当应用程序语言具有不直接在 SQL 中或难以在 SQL 中实现的功能时。