【问题标题】:Synchronizing millions of products同步数百万产品
【发布时间】:2022-12-06 17:41:34
【问题描述】:

我和我的团队正在尝试通过与 ERP 集成来更新大量(数百万)产品。 我们想使用同步 api。

https://forum.shopware.com/t/sync-api-upsert-mit-productnumber-als-unique-key/68556 解释我们想要做什么。我们的 ERP 系统不知道 shopware 的产品 ID (UUID),只知道产品 SKU。这让我们不得不在 shopware 中为每个产品编号进行产品查找,以获取产品 ID,然后更新产品数据。

是否有解决方法,以便我们可以按产品编号或其他关于如何加快速度的好主意进行更新?

亲切的问候

一种想法是根据产品编号的 MD5 哈希生成我们自己的产品 UUID。这样我们将始终知道 uuid 而无需在数据库中进行查找。

【问题讨论】:

  • 我们确实有类似的问题。目前我们计划编写一个自己的 API 端点,以 SKU 为主要端点。遗憾的是,我们还没有在任何其他 API 端点(同步/产品)中找到任何替代方案。目前虽然我们仍然使用中间件来构建对同步 API 的请求。

标签: shopware6 shopware6-api


【解决方案1】:

有几种方法可以解决这个问题。这是我在日常业务中使用的一些。

仅 API

如果您只能使用 sync-API,那么我建议您构建一个 sep。存储仅用于产品同步。这将包含以下信息:

  1. 存货单位
  2. Shopware-UUID
  3. 散列

    每个同步的产品都将有一个现有的 UUID。如果没有UUID,就知道商品还没有同步到Shopware。哈希本身可以在内部用于检查数据的变化。如果有变化,该特定实体将被更新。这样,无需 API 就可以进行简单快速的查找。

    直接访问数据库

    如果您没有开发团队,这不是我的建议。直接访问数据库将为您提供访问该信息的最快方式。实际上,我们为拥有大量产品数据的商家执行此操作,但您会失去一些好处,例如在使用同步 API 时用于更新目录、价格、类别等中的实体的自动排队事件。所以我只推荐它用于读取访问,这正是你想要的。

    关于 UUID

    您描述的方法正是 UUID v5。 Shopware 在内部使用 UUID v4,它只是一个随机的 128 位序列,而 v5 使用 sha1 生成它。所以这是一个很好的做法。

【讨论】:

    【解决方案2】:

    Shopwares API 仅允许通过主键/id 进行更新,因此不支持通过其他(唯一)进行更新。既不在同步 api 中,也不在默认的 crud api 中。

    但是你自己为产品提供 ID 而不是让 shopware 自动生成它们是完全有效的,所以你根据产品编号生成 ID 的想法对我来说听起来合理可行。

    另一种解决方案是将 shopware id 和 SKU 之间的映射存储在您可以更快访问它的地方,这可能意味着将 id 直接存储在 ERP 中(以某种形式的自定义字段等)或将该信息存储在地图服务。但我更希望有一种快速且一致的方式来重新生成 id 而无需存储映射。

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2011-06-16
      • 1970-01-01
      • 2019-09-01
      相关资源
      最近更新 更多