这不是关于我没有工作的一些代码的问题,而是我正在寻找如何解决问题的指导。鉴于您熟悉的任何编程或脚本语言,您将如何解决此问题:
您将获得两组数据:每晚从远程系统检索的JSON对象,以及跟踪该JSON对象中的数据的MySQL数据库。 JSON对象可能包含数百条记录,数据库会跟踪所有这些单独的记录,并跟踪对这些记录的任何更改。 JSON对象中的记录顺序偶尔也会更改。每个记录在JSON对象和MySQL数据库中都有一个与之关联的UID。
但是,有时会在此远程系统上删除记录。 JSON没有通过在对象中将其标记为已删除或非活动来反映此删除。相反,这个记录根本就没有了。
考虑到JSON对象中记录的排序可能会在夜间发生变化这一事实,检测缺少记录以及缺少哪条记录的最佳方法是什么?
编辑
有人问我申请是什么。我是一所大学的软件开发人员。我每晚收到学生日程安排数据(JSON)。我想跟踪日程安排数据的变化,并通知学生日程安排的变化。
MySQL数据库记录了日程安排中的所有事件,目前大约有10,000条记录。
编辑2
基本上,给定一个主数据库并将其与该数据库的子集进行比较,我正在寻找子集中缺少的项目。
答案 0 :(得分:1)
我认为最好的方法是进行一些改变)
如果这不可能,您可以使用后续查询
UPDATE ... UID NOT IN IN(UIDS列表)
长列表,长查询,但不是很慢(你有UID索引吗?)
添加了: 您还可以存储最后一个json(或仅UID)并在数据库更新之前将其与new进行比较,收集差异并应用于MYSQL。
答案 1 :(得分:1)
我可能会从这样一个简单的工作流程开始:
where ID in(...)
set Removed = 1 where ID not in(...) and Removed = 0
答案 2 :(得分:0)
我。每晚将JSON导入临时表 II。将临时表与真实表进行比较。
IIA。在真实的表中,不在临时表中删除了 IIB。在临时表中没有在实际表格中添加
您可以将它们放在两个单独的表中
ItemsAdded
ItemsDeleted
III。用临时表中的数据替换真实表