我正在尝试为Djabgo rest框架web应用程序设计一个数据库模式。在某个时候,我有两个巧克力:
1-选择一个模式,在其中的一个或多个apie中,我必须从数据库中获取一个查询集,并使用python对其进行迭代和排序。(例如,我可以将一些数据存储在数组数据类型列中,从数据库中获取它们,并使用python对它们进行排序。(
2-将数据存储在另一个表中,并在每次插入时插入大量的行。这样,我就可以用orm代码在更少的行中获得我喜欢的格式的数据。
我尝试了一些基本的测试和基准测试,看看哪种方式更快,让数据库处理更多的工作(第二种方式(并没有让我失望。但我没有办法设定一个更真实的情况,问题是:
当数据库每秒还必须处理来自其他apie和客户端的数百个请求时,让数据库处理该作业仍然是个好主意吗?数据库(和orm(通常比后端更快、更可靠吗?
一般来说,当工作适合数据库时,您希望让数据库工作。排序结果集将属于该类别。
请记住:
- 数据库运行在服务器上,通常运行在分布式系统上,因此它可以访问更多的资源
- 数据库是为处理大数据而设计的,因此它们不受单个线程中内存的限制
- 当这个问题出现时,通常需要将比严格需要的更多的数据传递回应用程序。考虑一个问题,比如获得某件事的前10名
- 应用程序和数据库中的混合处理通常需要多次查询并来回传递数据,这是非常昂贵的
(毫无疑问还有其他考虑因素。(
在某些情况下,在应用程序中进行工作可能更高效或更方便。一个常见的例子是格式化应用程序的结果集——比如将1234.56
转换为$1,234.56
。其他示例是应用程序语言具有不直接在SQL中实现或难以在SQL中实施的功能。