数据表的字段大概这样:
date: 数据时间(主键)
coutry: 国家 (主键)
app: 应用名(主键)
clicks: 点击数 (整数
spends: 花费的金额 (浮点数)
第三方 API 提供的历史数据可能有变化,需要及时处理,以便于报表能够及时更新
比如:
今天是 2022 年 10 月 15 日,但 2022 年 1 月 1 日~2022 年 1 月 10 日的历史数据需要更新
那应该先删除 2022 年 1 月 1 日~2022 年 1 月 10 日的历史数据,再插入该时间范围新的数据
该时间范围数据更新操作,产生了下面三种情况:
我的思考过程:
该方案有问题,比如数据时间范围是 2022 年 1 月~2022 年 12 月,版本号是 1
这时候删除+插入 2022 年 6 月的数据,版本号是 2
如果我按照 2022 年 1 月到 2022 年 12 月聚合数据,我得咋查出来啊??
再就是没办法表示已经删除的数据,除非增加一列,is_deleted ,问题是我怎么查询。。。
该方案的问题在于,删除数据是要删除比当前时间小的数据,那么问题来了 假如有这种情况: 任务 1 一共 100 条数据,插入了 50 条还没插完,这时候任务 2 开始执行了 因为任务 1 的更新时间要小于任务 2 ,任务 2 会先执行删除操作,所以会不会出现删不全的数据?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.