Jak Plank zapisuje jezioro#
Plank przekształca rekordy źródłowe w niezmienne pliki Parquet i przejściowe operacje na tabelach. Katalog stosuje te operacje do metadanych Iceberg, dzięki czemu uruchomienie źródła może opublikować nową migawkę bez modyfikowania pliku używanego już przez odczytującego.
Pliki są niezmienne#
Wiersze trafiają do strumienia tabeli z typami. Plank sprawdza każdą wartość względem zamkniętego zestawu typów jeziora, tworzy ograniczone grupy wierszy i zapisuje kanoniczny Parquet. Po przygotowaniu pliku jego bajty się nie zmieniają.
Aktualizacje tworzą więc nowe pliki danych lub usunięć oraz nową migawkę Iceberg. Stare migawki odwołują się do starych plików, dopóki polityka przechowywania nie potwierdzi, że pliki są nieosiągalne.
Operacje poprzedzają commity#
Ukończony strumień tworzy operację wskazującą jezioro, przestrzeń nazw, tabelę, schemat, pliki i zamiar scalania. Przygotowanie nie udostępnia danych. Katalog najpierw sprawdza tożsamość i oczekiwany stan, a następnie publikuje metadane przez arbitraż wskaźnika.
Takie rozdzielenie zapewnia bezpieczne ponawianie. Utraconą odpowiedź można uzgodnić z dokładnymi przygotowanymi dowodami. Nieznany stan commitu nigdy nie jest zgłaszany jako zwykły konflikt, ponieważ usunięcie plików po niepewnym commicie mogłoby zniszczyć dane, które faktycznie stały się aktywne.
Scalanie według klucza#
Przyrostowe tabele źródłowe scalają nadchodzące wiersze według zadeklarowanego klucza. Nowa migawka zachowuje najnowszy wiersz dla każdego klucza i przenosi znaczniki usunięcia, gdy źródło potwierdzi brak.
Uzgadnianie może bez zmian wykorzystać kanoniczne grupy wierszy Parquet i ponownie zakodować tylko zmienione grupy. To optymalizacja, a nie odrębna semantyka: niezgodność schematu lub nieobsługiwany układ powoduje pełne przepisanie.
Punkty kontrolne i odzyskiwanie#
Długie odczyty źródeł zamykają ograniczone cykle. Awaria porzuca strumień bez commitu, a następne uruchomienie wznawia pracę od ostatniej trwałej pozycji źródła. Tożsamość bieżącego strumienia zapobiega publikowaniu przez dwie próby przy użyciu tego samego uchwytu w pamięci.
Przejściowe operacje można odtwarzać, dopóki katalog ich nie przyjmie lub ostatecznie nie odrzuci. Czyszczenie wynika z osiągalności zweryfikowanych metadanych, a nie z samego wieku pliku.
Szyfrowanie i integralność#
Plank jest właścicielem granicy szyfrowania formatu pliku i zapisuje metadane wymagane przez autoryzowanych odczytujących. Otrzymują oni dane uwierzytelniające do magazynu o ograniczonym zakresie i czasie ważności, a nie tożsamość obejmującą cały zasobnik.
Każdy utrwalony schemat, klucz, statystyka i odwołanie do pliku jest przy odczycie traktowane jako niezaufane dane wejściowe. Limity są sprawdzane przed alokacją. Uszkodzony plik lub dokument metadanych powoduje odmowę, a nie zgadywanie typu lub pomijanie kontroli integralności.
Wynikiem jest fizyczny kontrakt widoczny jako atomowe migawki, trwała historia, scalanie według klucza i eksport Parquet — bez konieczności koordynowania odczytujących z uruchomieniem źródła.