Workery — cztery etapy przetwarzania¶
System dzieli pracę na cztery etapy. Każdy ma jasno wydzielone zadanie i może działać w wielu kopiach naraz, dzięki czemu nadąża za dużym napływem zamówień.
Scanner¶
Scanner obserwuje źródło zamówień i przekazuje dalej dane każdej osoby z zamówienia (zamawiający, płatnik). Działa w jednym z dwóch trybów:
- Tryb bieżący — na bieżąco sprawdza bazę wymiany danych z Rainbow i wychwytuje zamówienia nowe oraz zmienione. Bierze pod uwagę wyłącznie zamówienia zakończone sprzedażą; anulowane i w trakcie realizacji pomija.
- Tryb jednorazowego przeglądu — służy do sprawdzenia algorytmu na próbce danych z serwera analitycznego; przechodzi taką próbkę raz, od początku do końca.
Scanner zapamiętuje, jak daleko zaszedł — po restarcie wznawia od miejsca, w którym skończył.
Filtrowanie zamówień po statusie¶
System czyta zamówienia ze źródłowej bazy i przekazuje je do kolejnych etapów deduplikacji. Nie wszystkie zamówienia w bazie źródłowej to finalne transakcje: są wśród nich anulowane wycieczki, rezerwacje w trakcie oraz testy systemowe. Takie zamówienia zawierają dane niskiej jakości lub nie reprezentują prawdziwych klientów. System pobiera wyłącznie zamówienia ze statusem "Sprzedana" — jedynym statusem oznaczającym faktycznie sprzedane wycieczki.
Tylko zamówienia "Sprzedana" trafiają do deduplikacji¶
Filtr statusu jest pierwszą bramką weryfikacji — szybszą niż dalsze przetwarzanie danych. Anulowane zamówienie mogło należeć do testowego klienta lub zawierać dane wpisane niedbale. Jego przetworzenie obniżyłoby jakość bazy klientów. Status "Sprzedana" daje pewność, że za zamówieniem stoi prawdziwa transakcja z prawdziwymi danymi osobowymi.
Scenariusz: Scanner ignoruje zamówienia o statusie innym niż Sprzedana
Zakładając że w bazie Rainbow istnieją zamówienia:
| ZamówienieId | Status | Imię | Nazwisko |
|---|---|---|---|
| 1001 | Sprzedana | Jan | Kowalski |
| 1002 | Anulowane | Anna | Nowak |
| 1003 | W trakcie | Piotr | Wiśniewski |
| 1004 | Sprzedana | Maria | Zielińska |
Kiedy Scanner wykonuje polling
Wtedy do pipeline'u trafiają 2 zamówienia
I zamówienie 1001 jest przetworzone
I zamówienie 1004 jest przetworzone
I zamówienie 1002 nie jest przetworzone
I zamówienie 1003 nie jest przetworzone
Stage1 — porządkowanie danych i identyfikacja¶
Stage1 odbiera dane pojedynczej osoby, porządkuje je i zakłada lub aktualizuje profil klienta.
Porządkowanie danych (normalizacja) — sprowadza dane do jednolitej formy: ujednolica imiona (rozpoznaje zdrobnienia), formatuje numery telefonów i adresy e-mail, porządkuje adresy. Szczegóły w rozdziale Normalizacja.
Sprawdzenie kompletności — jeśli brakuje imienia, nazwiska, płci lub daty urodzenia, osoba jest pomijana. Bez tych danych nie da się jej zidentyfikować.
Decyzja — Stage1 ustala, co zrobić z osobą:
| Sytuacja | Co robi Stage1 |
|---|---|
| Nowa osoba | Tworzy nowy profil klienta i przekazuje go do Stage2 |
| Znana osoba o identycznych danych | Dopina zamówienie do istniejącego profilu i przekazuje do Stage2 |
| Znana osoba, dane się zmieniły | Zapisuje nowe dane i przekazuje do Stage2 |
| Znana osoba, dane bez zmian | Kończy — nic do zrobienia |
| Niekompletne dane | Pomija osobę |
Stage1 celowo nie scala profili — może tworzyć duplikaty. Połączy je Stage2.
Stage1 wykrywa też osoby usunięte z zamówienia (np. ktoś zrezygnował z wycieczki grupowej) i odpina je od profilu. Profil, który stracił wszystkie powiązania z zamówieniami, jest usuwany.
Stage2 — szukanie duplikatów i scalanie¶
Stage2 sprawdza, czy dany klient nie figuruje już w bazie pod innym profilem, i scala duplikaty. Pracuje w kilku krokach:
Odświeżenie danych — Stage2 przelicza dane profilu na podstawie wszystkich powiązanych z nim zamówień. Jeśli któreś zamówienie przestało pasować do profilu, zostaje odłączone i otrzymuje własny, nowy profil.
Sprawdzenie powiązania z LDE — jeśli klient ma identyfikator zewnętrznego systemu lojalnościowego LDE, Stage2 szuka innego klienta z tym samym identyfikatorem. Trafienie oznacza scalenie z pewnością absolutną.
Porównanie z kandydatami — w pozostałych przypadkach Stage2 zawęża poszukiwania do osób o podobnie brzmiącym imieniu i nazwisku, tej samej płci i roku urodzenia, a następnie porównuje klienta z każdym kandydatem. Wynik każdego porównania to jedna z trzech decyzji:
| Decyzja | Co się dzieje |
|---|---|
| Scalenie automatyczne | Profile zostają połączone |
| Scalenie z weryfikacją | Profile zostają połączone i trafiają do kolejki weryfikacji |
| Różne osoby | Brak działania |
Przy scalaniu Stage2 tworzy nowy, wspólny profil klienta, przenosi na niego wszystkie zamówienia i usuwa profile źródłowe. Dane nowego profilu powstają z połączenia danych ze wszystkich łączonych zamówień — najnowsze wartości mają pierwszeństwo, a listy kontaktów (e-maile, telefony) są sumowane.
Aby dwa równolegle pracujące etapy Stage2 nie scalały jednocześnie tego samego klienta, system stosuje blokady — w danej chwili nad jednym klientem pracuje tylko jeden etap. Pozostali czekają na swoją kolej.
AnalyticsSync — zapis wyników¶
AnalyticsSync zapisuje gotowe wyniki na serwerze analitycznym:
- po zakończonej deduplikacji wpisuje przy zamówieniu identyfikator klienta, który ostatecznie został mu przypisany,
- kopiuje na serwer analityczny pełne dane zamówienia (dane produktowe, kwoty, daty),
- usuwa z serwera analitycznego zamówienia i osoby, które zostały usunięte z systemu.