我的需求如下:
- 需要将数据从第 3 方 API 提取到 SQL azure 中。
由于最后两个原因,我选择了每天触发的 Function App,而不是可以查询 Web API 的数据工厂。
有一个更好的方法吗?
另外,我正在考虑将所有 JSON 推送到 Blob 存储中,然后将 JSON 中的数据解析到 SQL Azure 中。有什么建议吗?
调用所有页面需要多长时间?如果是十分钟以内 https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#consumption-plan,那么我的建议是构建一个 Azure 函数来查询 API 并将 json 数据直接插入到 SQL 数据库中。
Azure 函数
Azure 的功能非常丰富成本有效 https://www.troyhunt.com/serverless-to-the-max-doing-big-things-for-small-dollars-with-cloudflare-workers-and-azure-functions/。前一百万个执行是免费的。如果需要的时间超过十,那么看看持久函数。对于处理分页,我们有很多例子。你的exact解决方案将取决于您调用的 API 和您使用的语言。这是一个例子C# 使用 HttpClient https://stackoverflow.com/questions/43445615/how-to-loop-calls-to-pagination-url-in-c-sharp-httpclient-to-download-all-pages/43447577。这是一个用于Python 使用请求 https://stackoverflow.com/questions/17777845/python-requests-arguments-dealing-with-api-pagination。对于两者来说,模式是相似的。从 API 获取页面总数,将变量设置为该值,然后循环遍历页面;在每次迭代中获取并保存数据。如果 API 无法提供最大页数,则循环直到出现错误。专业提示:确保为这些循环指定上限。另外,如果您的 API 不稳定或间歇性失败,请考虑使用优雅的重试模式,例如指数退避 https://learn.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/explore-custom-http-call-retries-exponential-backoff.
Azure SQL Json 索引计算列
您提到将数据作为 json 文件存储到存储容器中。你确定你需要那个吗?如果是这样,那么你可以创建存储容器和数据库之间的外部表链接 https://medium.com/@mauridb/work-with-json-files-with-azure-sql-8946f066ddd4。这样做的优点是数据不会占用数据库中的任何空间。但是,如果 json 适合数据库,我会强烈推荐将该 json 直接放入 SQL 数据库并利用索引计算列 https://hackernoon.com/one-sql-cheat-code-for-blazing-fast-json-queries-d0cb6160d380使查询 json 变得非常快。
使用这种配对应该可以提供令人难以置信的性价比!让我们知道您最终使用什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)