首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Web处理大量数据

使用Web处理大量数据
EN

Stack Overflow用户
提问于 2018-04-07 16:16:01
回答 1查看 2.1K关注 0票数 1

我们有一个长期运行的DB查询,它填充一个临时表(我们不应该更改此行为),该查询将生成大约4至6GB数据的600万至1000万条记录。

我需要使用.NET Web从SQL获取数据,并且该API托管在IIS上。当客户端向API发出请求时,根据不同连接表中的数据量,查询至少运行5分钟,并填充临时表。然后API必须从DB临时表中读取数据并将其发送到客户端。

不阻塞客户端,不松散DB临时表,不阻塞IIS,我们如何才能实现这一要求?

只是想一想,如果我使用异步API,我能做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-10 14:43:33

有些事情你需要考虑,有些事情你可以做。

如果将查询执行作为API调用的结果,那么如果同时对该端点进行10次调用,会发生什么情况?死API,这就是将要发生的事情。

您可能能够为执行查询找到不同的触发器,因此您可以每天运行该查询一次,或者每4小时运行一次,然后将结果存储在一个永久表中。然后,API作业只会查看这个表,而不是等待任何东西并返回一些数据。

您可以做的第二件事是只返回您正在显示的屏幕所需的数据。您不会一次显示4-6GB的数据,我怀疑您有一些分页,您可以对代码进行稍微修改,一次只返回一页数据。

您没有说明您拥有什么样的数据,但是如果它不需要您经常运行该查询,那么您肯定可以做一些改进。

报告澄清后编辑

好吧,既然这是一份报告,这里有另一个想法。

其目的是确保压力不在于api本身,而api本身需要响应性和快速性。让API接收带有所需参数的请求。将实际的报表生成活动卸载到另一个服务。

  1. 跟踪这个服务正在做什么,这样您就可以报告活动的状态:它是否已经启动,它是否已经完成,以及您需要的其他任何东西。您可以为此使用队列,或者只需跟踪数据库中的作业。
  2. 生成报表文件并将其存储在某处。
  3. 给用户发电子邮件,附上文件,或者通过电子邮件发送链接,这样用户就可以下载了。另一种选择是提供指向UI中某个地方的报表的链接。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49709380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档