gpt4 book ai didi

php - Symfony/Doctrine - 使用外部数据源使数据库保持最新

转载 作者:行者123 更新时间:2023-11-29 06:17:39 25 4
gpt4 key购买 nike

我正在开发一个严重依赖来自外部 API 的数据的应用程序。我需要将它存储在数据库中以执行一些搜索等。数据经常更改并且必须每天“同步”。所以我正在寻找一种有效的方法来从 API 中提取新数据并使用新的、更新的和删除的实体更新数据库。

但是,我只遇到过有关查询每个实体的差异以确定是进行更新还是插入的建议,这对我来说似乎效率很低。或者截断所有数据并只进行插入。但是是否有任何现有的(更有效的)工具、技术或策略可以做到这一点,或者这是可行的方法吗?

提前致谢!

最佳答案

您可以为每个项目生成一个散列,并在下次导入时进行比较。每行需要两件事:

  1. 一个唯一的 ID
  2. 可以更改的数据哈希

例如,如果您收到这样的条目:

{
"id": 42,
"title": "something",
"description": "the description of this item"
}

您生成一个散列 sha1($row['title'].'|'.$row['description']) 并且在下一次导入期间您所要做的就是比较旧哈希到新哈希。您必须遵守以下规则:

  1. 如果该行的 ID 在您的数据库中不存在:INSERT
  2. 如果该行的 ID 存在于您的数据库中,并且您数据库中的哈希值与您从该行生成的哈希值不同:更新
  3. 如果新数据中缺少数据库中的 ID:删除

Ps:如果外部 API 允许您访问每一行的最后修改时间,您可以用日期替换散列。

关于php - Symfony/Doctrine - 使用外部数据源使数据库保持最新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34971026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com