Tạo phiên bản thực thể

Mỗi thực thể được gửi đến Google, bất kể thông qua nguồn cấp dữ liệu hay bản cập nhật theo thời gian thực, đều có một phiên bản đi kèm. Phiên bản này có dạng dấu thời gian. Trong nguồn cấp dữ liệu, bạn có thể cung cấp dấu thời gian cho từng thực thể bằng thuộc tính dateModified. Nếu thuộc tính này không có các thực thể nguồn cấp dữ liệu, thì phiên bản sẽ được đặt thành thời điểm bắt đầu nhập nguồn cấp dữ liệu. Trong các bản cập nhật theo thời gian thực batchPushbatchDelete, tương ứng, các trường generation_timestampdelete_time sẽ được dùng để đặt phiên bản. Nếu trường này không được bao gồm, phiên bản sẽ được đặt thành thời điểm nhận được yêu cầu. Xem định dạng dự kiến của giá trị thời gian trong giản đồ khoảng không quảng cáo quan hệ.

Google chỉ xử lý các thực thể (ví dụ: nhà hàng, thực đơn hoặc dịch vụ) có phiên bản bằng hoặc mới hơn phiên bản được chấp nhận gần đây nhất. Nếu không, thực thể sẽ không được nhập và lỗi Thực thể cũ sẽ được ghi lại. Khi một thực thể được cập nhật bằng một phiên bản mới, dấu thời gian được sửa đổi gần đây nhất sẽ được cập nhật thành thời điểm hiện tại mà thực thể đó được cập nhật.

Ví dụ:

Giả sử một nguồn cấp dữ liệu được tạo vào lúc 01:10 giờ UTC ngày 16 tháng 6 bao gồm thực thể ví dụ sau.

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

Google chưa nhập nguồn cấp dữ liệu này. Sau đó ngày hôm đó, vào lúc 2022-06-16T01:22:00.000Z, Google nhận được một yêu cầu cập nhật theo thời gian thực batchPush với thực thể sau.

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

Phiên bản cho mã nhận dạng thực thể nhà hàng restaurant12345 hiện là 2022-06-16T01:20:00.000Z và dấu thời gian được sửa đổi lần gần đây nhất của thực thể đó được đặt thành 2022-06-16T01:22:00.000Z. Tóm lại, thời gian sửa đổi gần đây nhất là thời gian thực thể được cập nhật trong khoảng không quảng cáo của Google và phiên bản là giá trị generation_timestamp trong yêu cầu cập nhật theo thời gian thực hoặc giá trị dateModified từ nguồn cấp dữ liệu.

Quá trình nhập nguồn cấp dữ liệu sau đó sẽ bắt đầu vào 02:00 giờ UTC, ngày 16 tháng 6. Trong trường hợp này, thực thể nhận được trong nguồn cấp dữ liệu có phiên bản 2022-06-16T01:10:00.000Z sẽ bị coi là đã lỗi thời và không được nhập. Do đó, Google sẽ tiếp tục phân phát thực thể có phiên bản 2022-06-16T01:20:00.000Z từ yêu cầu cập nhật theo thời gian thực.

Các phương pháp hay nhất:

  • Triển khai dấu thời gian trong nguồn cấp dữ liệu cho từng thực thể.
  • Áp dụng các thay đổi cập nhật theo thời gian thực cho nguồn cấp dữ liệu tiếp theo và đặt dấu thời gian dateModified trong các thực thể nguồn cấp dữ liệu thành thời gian hiện tại khi bạn tạo nguồn cấp dữ liệu.