Entitätsversionierung

Jede Entität, die an Google gesendet wird, sei es über Feeds oder Realtime-Updates, ist mit einer Version verknüpft. Diese Version hat die Form eines Zeitstempels. In Feeds kann der Zeitstempel für jede Entität mit dem Attribut dateModified angegeben werden. Wenn das Attribut nicht in den Feedentitäten enthalten ist, wird die Version auf den Beginn der Feedaufnahme festgelegt. Bei Echtzeitaktualisierungen werden die Felder generation_timestamp und delete_time verwendet, um die Version festzulegen.batchPushbatchDelete Wenn das Feld nicht enthalten ist, wird die Version auf die Uhrzeit festgelegt, zu der die Anfrage eingegangen ist. Informationen zum erwarteten Format von Zeitwerten im relationalen Inventarschema

Google verarbeitet nur Entitäten (z. B. ein Restaurant, ein Menü oder ein Service), deren Version der letzten akzeptierten Version entspricht oder neuer ist. Andernfalls wird die Entität nicht aufgenommen und der Fehler Stale Entity (Alte Entität) wird protokolliert. Wenn ein Element mit einer neuen Version aktualisiert wird, wird der Zeitstempel der letzten Änderung auf die aktuelle Uhrzeit aktualisiert.

Beispiel

Angenommen, ein Feed wird am 16. Juni um 01:10 Uhr (UTC) mit der folgenden Beispielentität generiert.

{
  "@type": "Restaurant",
  "@id": "restaurant12345",
  "dateModified": "2022-06-16T01:10:00.000Z",
  ...
}

Der Feed wird noch nicht von Google aufgenommen. Später am selben Tag um 2022-06-16T01:22:00.000Z erhält Google eine batchPush-Anfrage für eine Echtzeitaktualisierung mit der folgenden Entität.

{
  "records": [
    {
      "data_record": "{\"@type\": \"Restaurant\",\"@id\": \"restaurant12345\" ...",
      "generation_timestamp": "2022-06-16T01:20:00.000Z"
    }
  ]
}

Die Version für die Restaurant-Entitäts-ID restaurant12345 ist jetzt 2022-06-16T01:20:00.000Z und der Zeitstempel für die letzte Änderung der Entität ist auf 2022-06-16T01:22:00.000Z festgelegt. Zusammenfassend ist der Zeitpunkt der letzten Änderung der Zeitpunkt, zu dem die Entität im Google-Inventar aktualisiert wurde. Die Version ist der generation_timestamp-Wert aus der Echtzeitaktualisierungsanfrage oder der dateModified-Wert aus dem Feed.

Die Datenaufnahme des Feeds beginnt dann am 16. Juni um 02:00 Uhr (UTC). In diesem Fall wird die im Feed mit der Version 2022-06-16T01:10:00.000Z empfangene Entität als veraltet betrachtet und nicht aufgenommen. Google stellt daher weiterhin das Objekt mit Version 2022-06-16T01:20:00.000Z aus der Anfrage für die Echtzeitaktualisierung bereit.

Best Practices:

  • Implementieren Sie in Feeds einen Zeitstempel für jede Entität.
  • Wenden Sie die Änderungen für die Echtzeitaktualisierung auf Ihren nächsten Feed an und legen Sie den Zeitstempel dateModified in den Feedentitäten auf die aktuelle Uhrzeit fest, zu der Sie den Feed erstellt haben.