这并不是一个关于我没有工作过的代码的问题,而是我在寻找如何解决问题的指导。考虑到您熟悉的任何编程或脚本语言,如何解决这个问题:
您将获得两组数据:每晚从远程系统检索的JSON对象和跟踪该JSON对象中数据的MySQL数据库。JSON对象可能包含数百条记录,数据库跟踪所有这些单独的记录,并跟踪对这些记录的任何更改。JSON对象中记录的顺序也偶尔发生变化。在JSON对象和MySQL数据库中,每个记录都有一个与其相关联的UID。
但是,偶尔会在此远程系统上删除记录。JSON不通过在对象中将其标记为已删除或不活动来反映此删除。相反,这条记录根本就缺失了。
考虑到JSON对象中记录的顺序可能会在夜间发生变化,检测丢失记录的最佳方法是什么,准确地说是哪条记录丢失了?
编辑
有人问我申请的是什么。我是一所大学的软件开发者。我每晚都会收到学生时间表数据的转储(JSON)。我想跟踪时间表数据中的变化,并将时间表的变化通知学生。
MySQL数据库保存了计划中所有事件的记录,目前约有10,000条记录。
编辑2
本质上,给出一个主数据库并将其与该数据库的子集进行比较,我将查找该子集中缺少的项。
发布于 2013-10-08 17:47:36
我认为最好的方法是改变一些拱形)
如果这是不可能的,您可以使用以下查询
UPDATE...WHERE UID非IN (UID列表)
长列表,长查询,但不是很慢(您用UID索引了吗?)
添加:您还可以存储最后一个json(或仅UID),并在更新数据库之前将其与新的进行比较,收集差异并应用于MYSQL。
发布于 2013-10-08 17:57:10
我可能会从这样一个简单的工作流开始:
where ID in(...)从mysql中获取工作集set Removed = 1 where ID not in(...) and Removed = 0发布于 2013-10-08 18:11:55
每晚将JSON导入到临时表中。
二、比较temp表和真实表。
伊亚。在实表中,而不是在临时表中,它被删除。
iib。在临时表中,而不是在实表中,添加了
你可以把这些放在两个不同的桌子上
ItemsAdded
ItemsDeleted
三、用临时表中的数据替换真实的表
https://stackoverflow.com/questions/19254241
复制相似问题