Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-何时最好计算大量数据的统计数据_Python_Django_Database - Fatal编程技术网

Python Django-何时最好计算大量数据的统计数据

Python Django-何时最好计算大量数据的统计数据,python,django,database,Python,Django,Database,我正在开发一个Django应用程序,该应用程序由一个刮板和一个Django模板前端组成,刮板每天可以刮取数千个商店商品的价格、描述、卖家信息,该模板前端允许用户访问数据和查看各种统计数据 例如:用户可以单击“项目A”,并获得一个详细视图,其中列出了关于“项目A”的各种统计信息,如关于价格随时间变化的折线图、价格分布等 用户还可以单击单个“报废”的报告,获取报废物品数量、平均价格的详细信息。等等 所有这些统计信息当前都是在视图本身中计算的 在本地工作时,在一个包含+/100项的小型开发数据库上,这

我正在开发一个Django应用程序,该应用程序由一个刮板和一个Django模板前端组成,刮板每天可以刮取数千个商店商品的价格、描述、卖家信息,该模板前端允许用户访问数据和查看各种统计数据

例如:用户可以单击“项目A”,并获得一个详细视图,其中列出了关于“项目A”的各种统计信息,如关于价格随时间变化的折线图、价格分布等

用户还可以单击单个“报废”的报告,获取报废物品数量、平均价格的详细信息。等等

所有这些统计信息当前都是在视图本身中计算的

在本地工作时,在一个包含+/100项的小型开发数据库上,这一切都很好。但是,在生产中,该数据库最终将由1.000.000+行组成。这让我想知道,在视图中计算统计数据是否会导致未来的巨大滞后。特别是当我计划用更复杂的回归分析扩展统计数据时,也许还有一些最近邻的ML分类

基于视图的方法的优点是图形总是最新的。当然,我也可以安排一个CRONJOB,每隔几个小时计算一次,甚至可以在不同的服务器上进行计算。这将使访问信息的速度非常快,但也意味着信息可能只有几个小时


我以前从未真正使用过这种规模的数据,我想知道最好的做法是什么

与任何与性能相关的操作一样,对应用程序进行一些测试和评测。不要被引诱进入过早的优化陷阱

也就是说,考虑到这些统计数据不变,您可以在每次执行刮取时异步执行它们。与scrap过程本身一样,这个计算过程应该异步完成,完全独立于Django应用程序。当刮取发生时,它将直接写入数据库,并将某种状态字段设置为processing。然后开始计算过程,完成后,将填充统计字段并将状态设置为完成。通过这种方式,您可以向用户显示他们在处理链上走了多远


人们喜欢反馈而不是即时结果,如果他们知道最终会得到结果,他们会容忍相当大的延迟。束缚一个用户,他们会比任何计算机完成处理更快地感到沮丧;带领他们踏上征程,他们会等很久才知道故事的结局。

通常,最好使用SQL查询来计算统计数据,而不是使用Python本身。