sql - 完整 api 调用的增量负载
问题描述
我有一个 API,我需要将注册数据从其中获取并每天汇总到我的数据库中。每次调用 API 时,我都会获得数据的完整副本。有时旧帐户会被删除,因此历史数据会发生变化。
这是来自 API 的数据的样子:
我想像这样聚合它,以查看每日帐户创建和激活:
现在,我可以做的是每天导入完整数据,然后像这样聚合:
SELECT
Current_date() as snapshot_date,
SUM(CASE WHEN accountCreateOn = current_date() THEN 1 ELSE 0 END) as accountCreateOn,
SUM(CASE WHEN accountActivateOn = current_date() THEN 1 ELSE 0 END) as accountActivateOn
FROM full_data
但这似乎不是很抗故障。如果管道连续几天出现故障,会发生什么?解决此类问题的正确方法是什么?
解决方案
最简单和最容错的方法是完整地存储您获得的数据,并且尽可能详细地存储它们。您无法获得任何更好的信息,并且留下信息(包括汇总信息)总是会带来危险,即您有一天会想要回答有关那些本可以在完整数据集上回答但无法回答的数据的问题回答减少的一个。
离开这条路的唯一原因可能是数据集太大以至于无法存储和处理它们。对于在现代硬件上运行的现代 DBMS 系统,您不太可能遇到该问题。因此,我将创建我对我的业务所期望的最大规模的综合测试数据,例如我梦想的每年帐户激活的 10 倍。如果数据库可以处理这个问题,这意味着你不用担心一个问题。
推荐阅读
- arrays - 从数据框中删除空数组字段,同时将其转换为 JSON
- rest - 如何在 RESTful JSON API 微服务的上下文中编写测试?
- python - Matplotlib 极坐标图:如何打印角度和标签?
- java - 为什么我在 Ubuntu 20.04 上从 Aptana 收到运行错误
- python-3.x - TypeError: 'str' object 不支持 item 赋值,pandas 操作
- reactjs - 需要帮助来获取具有 Axios 依赖关系的 json 数据以进行反应
- javascript - 对象:值始终未定义
- css - CSS span 或 p 超出 div
- php - 有没有一种简单的方法可以仅在视图 laravel 上更改时区?
- r - R - 比较两个字符串变量并根据比较得出第三个变量