W zależności od asortymentu może być konieczne podzielenie plików danych na kilka plików.
Kiedy używać podziału na fragmenty
Plik danych przekracza 200 MB (po skompresowaniu gzipem).
- Przykład: wygenerowany plik danych o dostępności ma rozmiar 1 GB. Powinny one zostać podzielone na co najmniej 5 oddzielnych plików (lub fragmentów).
Zasoby reklamowe partnera są rozproszone w różnych systemach lub regionach, co utrudnia ich uzgadnianie.
- Przykład: partner ma zasoby reklamowe w Stanach Zjednoczonych i Europie, które znajdują się w różnych systemach. Plik danych może być generowany z 2 plikami (lub fragmentami), 1 dla Stanów Zjednoczonych i 1 dla UE z tymi samymi wartościami
nonceigeneration_timestamp.
- Przykład: partner ma zasoby reklamowe w Stanach Zjednoczonych i Europie, które znajdują się w różnych systemach. Plik danych może być generowany z 2 plikami (lub fragmentami), 1 dla Stanów Zjednoczonych i 1 dla UE z tymi samymi wartościami
Ogólne zasady
- Każdy fragment nie może przekraczać 200 MB na 1 plik (po kompresji gzip).
- Zalecamy stosowanie nie więcej niż 20 fragmentów na kanał. Jeśli masz uzasadnienie biznesowe, które wymaga większej kwoty, skontaktuj się z zespołem pomocy, aby uzyskać dalsze instrukcje.
-
Poszczególne rekordy (np. jeden obiekt
Merchant) muszą być wysyłane w ramach jednego fragmentu. Nie można ich dzielić na kilka fragmentów. Nie muszą jednak być wysyłane w ramach fragmentu z tym samymshard_numberw przypadku kolejnych plików danych. - Aby uzyskać lepszą wydajność, dane powinny być podzielone równomiernie na fragmenty, tak aby wszystkie podzielone pliki były podobne pod względem rozmiaru.
Jak dzielić pliki danych
Możesz podzielić plik danych o zdarzeniach, dzieląc jeden plik JSON na osobne pliki JSON z nienakładającymi się zdarzeniami i aktualizując plik opisowy JSON z listą nazw plików JSON.
Zalecany: w przypadku każdego pliku (lub fragmentu) ustaw nazwę pliku tak, aby wskazywała typ pliku danych, sygnaturę czasową i numer fragmentu. Fragmenty powinny być mniej więcej równej wielkości i przetwarzane po przesłaniu wszystkich fragmentów.
Przykład partycji
Deskryptor pliku – 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"
]
}Fragment 0 – event.feeddata.v1_1728306001_001.json
{
"data": [
{
"id": "event-1",
...
},
{
"id": "event-2",
...
}
]
}Fragment 1 – event.feeddata.v1_1728306001_002.json
{
"data": [
{
"id": "event-3",
...
},
{
"id": "event-4",
...
}
]
}Fragmenty zasobów reklamowych udostępnianych przez partnera
Partnerzy mogą mieć problemy ze skonsolidowaniem zasobów reklamowych rozproszonych w wielu systemach lub regionach w jednym pliku danych. Podział na fragmenty może być używany do rozwiązywania problemów z zgodnością poprzez dopasowywanie każdego fragmentu do zestawu zasobów reklamowych w każdym systemie rozproszonych zasobów reklamowych.
Załóżmy na przykład, że zasoby reklamowe partnera są podzielone na 2 regiony (zasoby reklamowe w USA i zasoby reklamowe w UE), które znajdują się w 2 oddzielnych systemach.
Partner może podzielić każdy plik danych na 2 pliki (lub fragmenty):
Aby mieć pewność, że pliki danych są prawidłowo przetwarzane:
- Ustal harmonogram przesyłania i skonfiguruj każdą instancję zasobu reklamowego, aby przestrzegała harmonogramu.
- Przypisz unikalne numery fragmentów do każdej instancji (np. US = N, EU = N + 1).
Ustaw wartość parametru
total_shardsna łączną liczbę fragmentów. - W każdym zaplanowanym czasie przesyłania zdecyduj, co chcesz zrobić:
generation_timestamp. Ustaw wszystkie nazwy plików tak, aby zawierały te same wartości w tych 2 polach, i wypisz wszystkie oczekiwane nazwy plików w pliku deskryptorów.generation_timestamppowinna być bieżąca lub z niedawnej przeszłości (najlepiej w przypadku partnera – czas odczytu z bazy danych).
- Po przesłaniu wszystkich fragmentów Google grupował je za pomocą funkcji
generation_timestampinonce.
Google przetworzy plik danych jako jeden, mimo że każdy fragment reprezentuje inny region asortymentu partnera i może zostać przesłany o innej porze dnia, o ile generation_timestamp jest taki sam we wszystkich fragmentach.