0

我必须比较来自 2 个不同来源的数据。

从不同的来源,我需要获取college_id、student_id、student_name & 我想检查它们在我的数据库中是否是最新的。来源总是有准确的数据。

一所大学可能有多个记录。

每次我登录时,我都需要在我的数据库中保持这些信息是最新的。我该如何进行?

我们的团队不推荐删除和插入选项。那么,我该如何比较呢?

任何人都可以提供一些有效的伪代码吗?我应该将源信息存储在 Java 中的二维数组中还是列表中或如何存储?

如果记录在源中不存在但在数据库中存在,那么我需要将其从数据库中删除。

如果记录在源中存在&在数据库中不存在,我需要将它插入到数据库中。

欣赏是否有人可以通过一些伪代码提供是否使用列表或二维数组的见解。

谢谢!

4

2 回答 2

0

您概述了问题中的大部分步骤。只需通过,每当您同步时:

  1. 从数据库中获取数据
  2. 将其与规范来源的数据进行比较
  3. 根据数据的比较,在您的数据库中采取适当的行动:
    • 如果您没有新记录,请插入一条新记录
    • 如果数据更新,请更新您的记录
    • 更新记录上的时间戳,以便您知道何时更新
  4. 最后一步,根据时间戳从数据库中删除“最近”未更新的所有记录
于 2012-01-05T20:21:21.203 回答
0

基本上,你需要

  1. 从数据库中加载所有记录
  2. 从可信来源加载所有记录
  3. 查找数据库中不再存在于可信源中的所有记录。删除那些。
  4. 查找可信来源中不在数据库中的所有记录。添加那些。
  5. 查找所有更改记录。更新那些。

问题是,你没有为你的记录指定主键——所以#5 可能无关紧要。

对于所有其他人,您需要一个封装记录的类,实现一个equals()hashCode()方法(正确地!),以及几个集合,具有removeAll()retainAll()方法的知识。

希望有帮助。

PS。确实可以逐步执行此操作,例如,如果您没有足够的内存来填充整个数据集。在这种情况下,您需要能够读取已排序的记录并且排序与等价关系兼容。

于 2012-01-05T20:21:54.210 回答