Dependendo do seu inventário, pode ser necessário dividir os feeds em vários arquivos.
Quando usar o sharding
O feed excede 200 MB para um arquivo (após a compactação gzip).
- Exemplo:o feed de disponibilidade gerado é de 1 GB. Ele precisa ser fragmentado em mais de cinco arquivos separados (ou fragmentos).
O inventário do parceiro é distribuído entre sistemas e/ou regiões, resultando em dificuldade para reconciliar o inventário.
- Exemplo:o parceiro tem inventário dos EUA e da UE em sistemas
separados. O feed pode ser gerado com dois arquivos (ou fragmentos), um para os EUA e outro para a UE, com o mesmo
nonce
egeneration_timestamp
.
- Exemplo:o parceiro tem inventário dos EUA e da UE em sistemas
separados. O feed pode ser gerado com dois arquivos (ou fragmentos), um para os EUA e outro para a UE, com o mesmo
Regras gerais
- Cada fragmento não pode exceder 200 MB para um arquivo (após a compactação gzip).
- Recomendamos não usar mais de 20 fragmentos por feed. Se você tiver uma justificativa comercial que exija mais do que esse valor, entre em contato com o suporte para receber mais instruções.
-
Registros individuais (um objeto
Merchant
, por exemplo) precisam ser enviados em um fragmento. Eles não podem ser divididos em vários fragmentos. No entanto, eles não precisam ser enviados no fragmento com o mesmoshard_number
para feeds futuros. - Para um melhor desempenho, seus dados devem ser divididos igualmente entre os fragmentos. Assim, todos os arquivos terão um tamanho parecido.
Como fragmentar feeds
É possível dividir o feed de eventos separando um único JSON em arquivos JSON separados com eventos não sobrepostos e atualizando o JSON do descritor de arquivo com a lista de nomes de arquivos JSON.
Recomendado:para cada arquivo (ou fragmento), defina o nome do arquivo para indicar o tipo de feed, o carimbo de data/hora e o número do fragmento. Os fragmentos precisam ter tamanhos semelhantes e são processados quando todos são enviados.
Exemplo fragmentado
Descritor de arquivos: event.feeddata.v1_1728306001.filedescriptor.json
{ "generation_timestamp": 1728306001, "name": "event.feeddata.v1", "data_file": [ "event.feeddata.v1_1728306001_001.json", "event.feeddata.v1_1728306001_002.json" ] }
Fragmento 0: event.feeddata.v1_1728306001_001.json
{ "data": [ { "id": "event-1", ... }, { "id": "event-2", ... } ] }
Fragmento 1: event.feeddata.v1_1728306001_002.json
{ "data": [ { "id": "event-3", ... }, { "id": "event-4", ... } ] }
Fragmentos para inventário distribuído por parceiros
Pode ser difícil para os parceiros consolidar o inventário distribuído em vários sistemas e/ou regiões em um único feed. O fragmentação pode ser usado para resolver problemas de reconciliação definindo cada fragmento para corresponder a cada conjunto de inventário do sistema distribuído.
Por exemplo, digamos que o inventário de um parceiro seja dividido em duas regiões (inventário dos EUA e da UE), que estão em dois sistemas separados.
O parceiro pode dividir cada feed em dois arquivos (ou fragmentos):
Siga estas etapas para garantir que os feeds sejam processados corretamente:
- Defina uma programação de upload e configure cada instância de inventário para seguir essa programação.
- Atribua números de fragmento exclusivos para cada instância (por exemplo, EUA = N, UE = N + 1).
Defina
total_shards
como o número total de fragmentos. - Em cada horário de upload programado, escolha um
generation_timestamp
. Defina todos os nomes de arquivos para manter os mesmos valores para esses dois campos e liste todos os nomes de arquivos esperados no arquivo de descritor.generation_timestamp
precisa ser atual ou recente (de preferência, o carimbo de data/hora de leitura do banco de dados do parceiro)
- Depois que todos os fragmentos são enviados, o Google os agrupa usando
generation_timestamp
enonce
.
O Google vai processar o feed como um único, mesmo que cada fragmento represente uma
região diferente do inventário do parceiro e possa ser enviado em um
horário diferente do dia, desde que o generation_timestamp
seja o mesmo em todos os fragmentos.