Sql server 从API保存或缓存数据的有效方法是什么?

Sql server 从API保存或缓存数据的有效方法是什么?,sql-server,api,coldfusion,Sql Server,Api,Coldfusion,我正在构建一个web应用程序(带有SQL Server数据库的ColdFusion网站),它需要显示驻留在外部源上并通过API提供的数据。有些数据是“静态的”,因为一旦存在,就不会改变。但是,每天都会添加新的数据。例如,假设数据表示“装运”。昨天的货物已发货,其中包含的数据在未来不会更改。但是,今天将创建更多装运。我不希望每次需要历史数据时(比如对于按需报告)都调用API,而是希望保存或缓存API响应中的相关数据,以便更快地请求它 我最初的想法是编写一个单独的ColdFusion脚本,每天向AP

我正在构建一个web应用程序(带有SQL Server数据库的ColdFusion网站),它需要显示驻留在外部源上并通过API提供的数据。有些数据是“静态的”,因为一旦存在,就不会改变。但是,每天都会添加新的数据。例如,假设数据表示“装运”。昨天的货物已发货,其中包含的数据在未来不会更改。但是,今天将创建更多装运。我不希望每次需要历史数据时(比如对于按需报告)都调用API,而是希望保存或缓存API响应中的相关数据,以便更快地请求它

我最初的想法是编写一个单独的ColdFusion脚本,每天向API发出请求,检索前几天的发货,解析响应中的数据并将其保存到SQL Server数据库


有没有更有效的方法来实现这一点,或者直接从SQL Server数据库调用API来导入数据?

您可以通过c#之类的.net程序调用该服务,并使用clr过程。然后创建程序集dll并将其添加到sql server。然后,您将能够设置作业并安排其检索并保存到表中。

(注释太长)

我最初的想法是编写一个单独的ColdFusion脚本,使 每天向API发出请求,检索前几天的装运, 解析响应中的数据并将其保存到SQL Server 数据库


听起来是个合理的方法。您只需要一个加载数据并执行的计划任务。

这是一个调用频繁的API,需要缓存吗?是否有大量的处理导致此API变慢?数据请求是否可以在SQL server上处理并仅提供给CF API?可能在SQL server上有一个包含您所需数据的报告表?然后直接查询该表。对于临时缓存以提高性能和减少对APi的调用,可以使用memcached或redis等。如果你在AWS上,我使用ElasticCache上的Memcached,这非常容易设置。@Shawn,是的,现在API被频繁调用以支持面向web的报告。API本身并不慢,但有时数据量很大,因此解析、处理和过滤数据会占用大量资源,并花费大量时间。SQL Server数据库中不存在相关数据。我正在考虑复制那里的数据,以便查询更容易。我正在寻找一种有效的方法来实现这一点。@Redtopia谢谢,我必须在internet上找到它并了解更多信息。我将生成一个唯一的密钥,然后使用CacheGet()&CachePut()在定义的时间段内存储API响应。(如果CacheGet()=NULL,将执行一个新的API请求,并使用CachePut()临时存储数据。)如上所述,我可以通过ColdFusion(创建一个作业来调用API,解析数据并将其插入SQL Server)来完成所有这一切。我很好奇是否有一种更有效的方法可以做到这一点-即直接在SQL Server中。听起来答案就是这样描述的-如何直接在SQL Server中做类似的事情。(没有尝试过,不知道哪个更“有效”)。