将增量数据从 REST API 引入 SQL azure

2024-01-28

我的需求如下: - 需要将数据从第 3 方 API 提取到 SQL azure 中。

  • 每天都会查询 API 以获取增量数据,并且可能需要分页,因为默认情况下任何 API 响应都只会提供前 N 条记录。

  • 该 API 还需要一个身份验证令牌才能工作,这是我们开始从端点下载数据之前的第一次调用。

由于最后两个原因,我选择了每天触发的 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(使用前将#替换为@)

将增量数据从 REST API 引入 SQL azure 的相关文章

随机推荐

  • 将一系列图像从 java 应用程序传输到 ffmpeg 子进程

    我正在寻找一种将一系列图像 jpeg 从java应用程序流式传输到FFMpeg STDIN管道的方法 FFMpeg 应该处理这些图像并创建一个视频文件作为输出 FFMpeg 作为 java 应用程序的子进程执行 使用以下命令 ffmpeg
  • 使用 PHP/MySQL 日期查询向 Google 可视化页面提交表单

    我使用从 PHP MySQL 提取的数据在谷歌可视化上创建饼图 该图表看起来不错 但我想添加一个日历 日期选择器 以使饼图动态化 我的日期范围选择器似乎正在工作 它从我的数据库中提取正确的数据 选择日期 提交查询后 它返回此字符串 over
  • 如何知道节点是 Virtual TreeView 中的根节点?

    我正在使用虚拟树视图 有没有可靠的方法来知道节点是否是根节点 我尝试使用 if not Assigned Node Parent then Output This is root else Output This is not root 但
  • 在表格布局中显示动态行的问题:Android

    我想以表格布局显示数据 数据数量是动态的 所以我需要在表中实现动态行 为此 我想在一行中显示 4 个 TextView Problem 目前 我能够在表中和四个 TextView 中显示数据 但我希望所有四个 EditText 之间有一些空
  • 在不使用排序功能的情况下按某个元素对嵌套列表进行排序。

    如果我有一个像这样的嵌套列表 L James 1 2 Alan 1 1 Henry 1 5 如何在不使用排序或排序函数的情况下根据每个子列表中的最后一个数字从最高到最低对它进行排序 Output final Henry 1 5 James
  • SAS 替换所有列中的字符

    我有一个 SAS 数据集 必须导出到 csv 文件 我有以下两个相互矛盾的要求 我必须使用分号作为 csv 文件中的分隔符 一些字符变量是从公式中手动输入的字符串 因此它们可能包含分号 我对上述问题的解决方案是转义分号或用逗号替换它 我怎样
  • OpenCV Mat 对象 - 获取数据长度

    在 OpenCV 中 我可以使用 C 中的 VideoCapture 捕获帧 但是 当我尝试从帧中获取数据并计算长度时 它只返回 0 下面是我的示例代码 VideoCapture cap 0 for Mat frame cap gt gt
  • Codeigniter:执行 $this->db->last_query();执行查询?

    查询执行是否发生在get where 以下 codeigniter 活动记录语句的子句 this gt db gt select q this gt db gt get where Contacts array id gt contact
  • 在 JavaScript 正则表达式中使用 {1}+ 所有格量词时出现正则表达式错误

    由于我同时学习 Javascript 和 Express js 因此我在发出 get 请求时尝试使用正则表达式 为了熟悉正则表达式 我使用了这个chart http docs oracle com javase tutorial essen
  • 如何使用信号更新另一个模型字段来更新模型字段?

    我正在尝试添加所有total值在Transaction模型并将它们放入Sale模型的第一个实例 pk 1 gross total场地 这是我的代码 模型 py class Sale models Model gross total mode
  • 为什么应用程序有时会在killProcess 上重新启动?

    通常 通过调用以下命令退出我的应用程序 android os Process killProcess android os Process myPid 表现良好 没有发生任何事故 但每隔一段时间 应用程序就会再次重新启动 退出后 相关日志片
  • 如何使用Android MediaCodec编码相机数据(YUV420sp)

    感谢您的关注 我想使用Android MediaCodec API对从Camera获取的视频帧进行编码 不幸的是 我没有成功做到这一点 我对 MediaCodec API 还不太熟悉 以下是我的代码 我需要你的帮助来弄清楚我应该做什么 1
  • 将参数传递给正在运行的应用程序

    我正在制作一个图像上传器 将图像上传到图像托管网站 并且在传递参数时遇到一些问题 图像位置到已运行的应用程序 首先 假设 MyApp exe 始终运行 每当我右键单击图像时 我都会在默认 Windows 上下文菜单中添加一个项目 显示 上传
  • RAM 如何以 O(1) 的速度访问内存中的任何位置

    我们被告知 RAM 内存的抽象是一个长字节数组 对于 CPU 来说 访问它的任何部分都需要相同的时间 能够同时访问 4 GB 在我的计算机上 中的任何字节的设备是什么 因为这对我来说似乎不是一个微不足道的任务 我问过同事和我的教授 但没有人
  • 减少 React.min.js 和 React-dom.min.js 的 Browserify 包

    我想将一些 React 库与 Browserify 捆绑在一起 require他们 但因文件大小而推迟 我使用以下 Browserify 命令 browserify path to react min js path to react do
  • 为 Uwsgi 编译插件

    我从官方网站编译了uwsgi版本x y zz ww 我使用官方文档中建议的命令编译了uwsgi 然后我用官方文档中的命令编译了Python建议的插件 我得到的错误输出是这样的 gt ubuntu ip xx yy zz ww tmp uws
  • 检测自定义形状 OpenCV

    我想在 OpenCV 中找到自定义形状 形状是预先定义的 我想使用网络摄像头实时检测该形状是否等于当前形状 我怎样才能做到这一点 如何比较预定义的自定义形状和当前形状 正如评论者所回避的那样 您可以使用模板匹配来检测自定义形状 那么什么是模
  • 检查对象类型失败并出现“不是类型”错误

    我试图检查一个对象是否属于给定类型 但收到错误 expectedClass 不是类型 我的代码如下 func testInputValue inputValue AnyObject isKindOfClass expectedClass A
  • Spring Boot 应用程序已弃用 java.security.egd=file:/dev/./urandom?

    我曾经配置过 Djava security egd file dev urandom在我的 Spring Boot 应用程序的 Dockerfile 中 In https spring io guides gs spring boot do
  • 将增量数据从 REST API 引入 SQL azure

    我的需求如下 需要将数据从第 3 方 API 提取到 SQL azure 中 每天都会查询 API 以获取增量数据 并且可能需要分页 因为默认情况下任何 API 响应都只会提供前 N 条记录 该 API 还需要一个身份验证令牌才能工作 这是