首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测已删除记录的最佳方法是什么?

问检测已删除记录的最佳方法是什么?
EN

Stack Overflow用户
提问于 2013-10-08 17:21:27
回答 3查看 281关注 0票数 1

这并不是一个关于我没有工作过的代码的问题,而是我在寻找如何解决问题的指导。考虑到您熟悉的任何编程或脚本语言,如何解决这个问题:

您将获得两组数据:每晚从远程系统检索的JSON对象和跟踪该JSON对象中数据的MySQL数据库。JSON对象可能包含数百条记录,数据库跟踪所有这些单独的记录,并跟踪对这些记录的任何更改。JSON对象中记录的顺序也偶尔发生变化。在JSON对象和MySQL数据库中,每个记录都有一个与其相关联的UID。

但是,偶尔会在此远程系统上删除记录。JSON不通过在对象中将其标记为已删除或不活动来反映此删除。相反,这条记录根本就缺失了。

考虑到JSON对象中记录的顺序可能会在夜间发生变化,检测丢失记录的最佳方法是什么,准确地说是哪条记录丢失了?

编辑

有人问我申请的是什么。我是一所大学的软件开发者。我每晚都会收到学生时间表数据的转储(JSON)。我想跟踪时间表数据中的变化,并将时间表的变化通知学生。

MySQL数据库保存了计划中所有事件的记录,目前约有10,000条记录。

编辑2

本质上,给出一个主数据库并将其与该数据库的子集进行比较,我将查找该子集中缺少的项。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-08 17:47:36

我认为最好的方法是改变一些拱形)

如果这是不可能的,您可以使用以下查询

UPDATE...WHERE UID非IN (UID列表)

长列表,长查询,但不是很慢(您用UID索引了吗?)

添加:您还可以存储最后一个json(或仅UID),并在更新数据库之前将其与新的进行比较,收集差异并应用于MYSQL。

票数 1
EN

Stack Overflow用户

发布于 2013-10-08 17:57:10

我可能会从这样一个简单的工作流开始:

  1. 循环通过json收集活动的UIDs。
  2. 使用where ID in(...)从mysql中获取工作集
  3. 循环通过工作集查找差异,应用更改
  4. 使用以下方法标记新删除的记录 set Removed = 1 where ID not in(...) and Removed = 0
票数 1
EN

Stack Overflow用户

发布于 2013-10-08 18:11:55

每晚将JSON导入到临时表中。

二、比较temp表和真实表。

伊亚。在实表中,而不是在临时表中,它被删除。

iib。在临时表中,而不是在实表中,添加了

你可以把这些放在两个不同的桌子上

ItemsAdded

ItemsDeleted

三、用临时表中的数据替换真实的表

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19254241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档