Menu dokumentacji

Synchronizacja#

Synchronizacja odczytuje rekordy źródłowe i zapisuje spójny nowy stan jeziora. Podczas uruchomienia możesz odpytywać poprzednią migawkę; odczytujący przechodzą do nowej dopiero po pomyślnym zapisaniu jej commitu.

Cykl życia#

  1. Supernova wykrywa tabele i kolumny widoczne dla danych uwierzytelniających źródła.

  2. Uruchomienie odczytuje nowe lub zmienione rekordy, wznawiając pracę od zapisanej pozycji, jeśli źródło ją obsługuje.

  3. Wiersze są scalane według klucza źródłowego. Późniejsza wartość tego samego klucza zastępuje wcześniejszą wartość bieżącą.

  4. Wykrywanie usunięć oznacza wiersze przez _deleted = true w tym samym commicie co scalenie.

  5. Zapisana migawka staje się widoczna dla nowych zapytań.

Nowe źródło synchronizuje się po połączeniu. Domyślny interwał cykliczny wynosi 4 godziny. Karta Historia synchronizacji źródła pokazuje każde uruchomienie i jego wynik.

Odczyty przyrostowe i pełne#

Źródło przyrostowe udostępnia kursor, na przykład czas aktualizacji, identyfikator zdarzenia lub token strony. Supernova zapisuje tę pozycję dopiero wtedy, gdy odpowiadające jej dane są trwałe. Jeśli uruchomienie się zatrzyma, jego następca wznawia pracę od ostatniej trwałej pozycji.

Pełny odczyt ponownie wyświetla dane źródła i uzgadnia je z jeziorem. Wymaga więcej żądań do źródła, ale dla niektórych API jest jedynym wiarygodnym sposobem wykrywania usunięć. Salesforce wykonuje pełne odczyty do chwili aktywowania mechanizmu uzgadniania danego jeziora; następnie preferuje SystemModstamp, w drugiej kolejności LastModifiedDate, a na końcu CreatedDate dla obiektów, które nie udostępniają żadnego preferowanego pola.

Schematy stałe i wykrywane#

Źródła o stałym schemacie, takie jak Stripe, definiują swoje tabele w Supernova. Zmiana kodu dodaje nową kolumnę źródłową do tego kontraktu.

Źródła o wykrywanym schemacie, takie jak PostgreSQL, Airtable i Salesforce, proszą źródło o metadane. Ich karta Tabele jest dokładną dokumentacją połączonego konta. Nowo wykryta kolumna pojawia się w strumieniu zmian schematu, zanim zaskoczy zależny model.

Usunięcia#

Zamiast kasować historię, Supernova zachowuje usunięte wiersze źródłowe i ustawia _deleted. Zapytania bieżącego stanu powinny wskazywać to jawnie:

sql
select id, email, _synced_at
from titan.hubspot.contacts
where not _deleted

Sposób wykrywania usunięć zależy od źródła. Niektóre API wysyłają zdarzenia usunięcia. Inne wymagają pełnego przeglądu kluczy. Strona konektora opisuje tę właściwość, gdy występuje.

Spójność#

Commit jednej tabeli jest atomowy: zapytanie widzi migawkę sprzed uruchomienia albo migawkę po nim, ale nigdy po połowie każdej z nich. Powiązane tabele mogą kończyć się w różnym czasie, dlatego gdy raport wymaga wspólnej granicy aktualności, korzystaj z ich wartości _synced_at.