Selon votre inventaire, le fractionnement (ou la division des flux en plusieurs fichiers) peut être nécessaire.
Quand utiliser le sharding ?
Le flux dépasse 200 Mo pour un fichier (après compression gzip).
- Exemple:Le flux de disponibilité généré est de 1 Go. Il doit être divisé en cinq fichiers (ou fragments) ou plus.
L'inventaire des partenaires est réparti entre des systèmes et/ou des régions, ce qui rend la réconciliation de l'inventaire difficile.
- Exemple:Le partenaire dispose d'un inventaire aux États-Unis et dans l'Union européenne, qui se trouve dans des systèmes distincts. Le flux peut être généré avec deux fichiers (ou fragments), un pour les États-Unis et un pour l'Union européenne, avec les mêmes
nonce
etgeneration_timestamp
.
- Exemple:Le partenaire dispose d'un inventaire aux États-Unis et dans l'Union européenne, qui se trouve dans des systèmes distincts. Le flux peut être généré avec deux fichiers (ou fragments), un pour les États-Unis et un pour l'Union européenne, avec les mêmes
Règles générales
- Chaque segment ne peut pas dépasser 200 Mo pour un fichier (après compression gzip).
- Nous vous recommandons de ne pas utiliser plus de 20 segments par flux. Si vous avez une justification commerciale qui nécessite un montant supérieur, veuillez contacter l'assistance pour obtenir des instructions.
-
Les enregistrements individuels (un objet
Merchant
, par exemple) doivent être envoyés dans un segment. Ils ne peuvent pas être répartis sur plusieurs segments. Toutefois, ils n'ont pas besoin d'être envoyés dans le segment avec le mêmeshard_number
pour les futurs flux. - Pour de meilleures performances, répartissez les données de manière égale entre les segments, afin que la taille de tous les fichiers segmentés soit la même.
Segmenter des flux
Vous pouvez diviser le flux d'événements en divisant un seul fichier JSON en fichiers JSON distincts avec des événements non chevauchants, puis en mettant à jour le fichier JSON du descripteur de fichier avec la liste des noms de fichiers JSON.
Recommandation:Pour chaque fichier (ou fragment), définissez le nom de fichier pour indiquer le type de flux, le code temporel et le numéro de fragment. Les fragments doivent être à peu près de la même taille et sont traités une fois tous les fragments importés.
Exemple de partitionnement
Descripteur de fichier : 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" ] }
Segment 0 – event.feeddata.v1_1728306001_001.json
{ "data": [ { "id": "event-1", ... }, { "id": "event-2", ... } ] }
Segment 1 : event.feeddata.v1_1728306001_002.json
{ "data": [ { "id": "event-3", ... }, { "id": "event-4", ... } ] }
Fragments pour l'inventaire distribué par le partenaire
Il peut être difficile pour les partenaires de consolider l'inventaire distribué sur plusieurs systèmes et/ou régions dans un seul flux. Le fractionnement peut être utilisé pour résoudre les problèmes de rapprochement en définissant chaque segment de sorte qu'il corresponde à l'ensemble d'inventaire de chaque système distribué.
Par exemple, imaginons que l'inventaire d'un partenaire soit divisé en deux régions (inventaire des États-Unis et de l'UE), qui se trouvent dans deux systèmes distincts.
Le partenaire peut diviser chaque flux en deux fichiers (ou fragments):
Pour vous assurer que les flux sont correctement traités, procédez comme suit:
- Définissez un calendrier d'importation et configurez chaque instance d'inventaire pour qu'elle suive ce calendrier.
- Attribuez des numéros de segment uniques à chaque instance (par exemple, États-Unis = N, Europe = N + 1).
Définissez
total_shards
sur le nombre total de segments. - À chaque heure d'importation planifiée, choisissez un
generation_timestamp
. Dans le fichier descripteur, définissez tous les noms de fichiers pour qu'ils contiennent les mêmes valeurs pour ces deux champs et listez tous les noms de fichiers attendus.generation_timestamp
doit être actuel ou récent (idéalement, l'horodatage de la base de données de lecture du partenaire)
- Une fois tous les fragments importés, Google les regroupe à l'aide de
generation_timestamp
etnonce
.
Google traitera le flux comme un seul flux, même si chaque segment représente une région différente de l'inventaire du partenaire et qu'il peut être importé à une heure différente de la journée, à condition que le generation_timestamp
soit le même pour tous les segments.