Udostępnij przez


Ograniczenia łącznika bazy danych PostgreSQL

Ważne

Łącznik PostgreSQL dla programu Lakeflow Connect jest dostępny w publicznej wersji zapoznawczej. Skontaktuj się z zespołem obsługi konta Databricks, aby zarejestrować się w publicznej wersji testowej.

Ta strona zawiera listę ograniczeń i zagadnień dotyczących pozyskiwania bazy danych PostgreSQL przy użyciu usługi Databricks Lakeflow Connect.

Ogólne ograniczenia łącznika bazy danych

Ograniczenia w tej sekcji dotyczą wszystkich łączników bazy danych w programie Lakeflow Connect. Kontynuuj odczytywanie ograniczeń specyficznych dla łącznika.

  • Po uruchomieniu zaplanowanego potoku alerty nie są wyzwalane od razu. Zamiast tego wyzwalają się po uruchomieniu następnej aktualizacji.
  • Po usunięciu tabeli źródłowej tabela docelowa nie zostanie automatycznie usunięta. Musisz ręcznie usunąć tabelę docelową. To zachowanie nie jest zgodne z zachowaniem potoków deklaratywnych platformy Spark w usłudze Lakeflow.
  • W okresach konserwacji źródła usługa Databricks może nie mieć dostępu do Twoich danych.
  • Jeśli nazwa tabeli źródłowej powoduje konflikt z istniejącą nazwą tabeli docelowej, aktualizacja procesów zakończy się niepowodzeniem.
  • Obsługiwanie potoków z wieloma miejscami docelowymi jest dostępne wyłącznie przez API.
  • Możesz zmienić nazwę tabeli, którą importujesz. Jeśli zmienisz nazwę tabeli w swoim potoku, stanie się on potokiem dostępnym tylko przez API, i nie będzie można już edytować potoku w interfejsie użytkownika.
  • Jeśli wybierzesz kolumnę po uruchomieniu potoku, łącznik nie wypełnia automatycznie danych dla nowej kolumny. Aby pozyskać dane historyczne, ręcznie przeprowadź pełne odświeżanie na tabeli.
  • Usługa Databricks nie może pozyskiwać co najmniej dwóch tabel o tej samej nazwie w tym samym potoku, nawet jeśli pochodzą one z różnych schematów źródłowych.
  • System źródłowy zakłada, że kolumny kursorów są monotonicznie rosnące.
  • Zarządzane potoki danych nie są obsługiwane dla workspace'ów w regionach Azure GovCloud.
  • Łącznik obsługuje tylko replikację z podstawowych wystąpień bazy danych PostgreSQL.

Authentication

  • Łącznik obsługuje tylko uwierzytelnianie nazwy użytkownika i hasła.

Odmiany bazy danych

  • Łącznik obsługuje program PostgreSQL 13 lub nowszy.
  • Łącznik obsługuje usługi AWS RDS PostgreSQL, Aurora PostgreSQL, Amazon EC2, Azure Database for PostgreSQL, maszyny wirtualne platformy Azure i GCP Cloud SQL for PostgreSQL. Łącznik obsługuje również lokalną usługę PostgreSQL przy użyciu usług Azure ExpressRoute, AWS Direct Connect i sieci VPN.

Pipelines

  • Każdy potok pozyskiwania musi być skojarzony z dokładnie jedną bramą pozyskiwania.
  • Mimo że potok pozyskiwania działa w bezserwerowej infrastrukturze komputerowej, brama pozyskiwania musi działać na klasycznej infrastrukturze komputerowej.
  • Brama pozyskiwania musi działać w trybie ciągłym, aby zapobiec narastaniu dziennika zapisu z wyprzedzeniem (WAL) i akumulowaniu gniazd replikacji.

Replication

  • Replikacja logiczna wymaga bazy danych PostgreSQL 13 lub nowszego z parametrem wal_level ustawionym na wartość logical.
  • Każda replikowana tabela musi mieć tożsamość repliki ustawioną na FULL lub DEFAULT. Usługa Databricks zaleca używanie FULL tożsamości repliki dla tabel bez kluczy podstawowych lub z kolumnami TOASTable.
  • Miejsca replikacji nie są usuwane automatycznie podczas usuwania potoków. Aby zapobiec akumulowaniu pliku WAL, należy ręcznie wyczyścić miejsca replikacji. Zobacz Czyszczenie miejsc replikacji.

Ewolucja schematu

Łącznik automatycznie obsługuje nowe i usunięte kolumny.

  • Kiedy nowa kolumna pojawia się w źródle, Databricks automatycznie ją pobiera podczas następnego uruchomienia potoku.
  • Gdy kolumna zostanie usunięta ze źródła, usługa Databricks nie usunie jej automatycznie. Zamiast tego łącznik używa właściwości tabeli, aby ustawić usuniętą kolumnę na inactive w miejscu docelowym. Jeśli później pojawi się inna kolumna, której nazwa jest w konflikcie z kolumną inactive, rura przetwarzająca zakończy się niepowodzeniem. W takim przypadku uruchom pełne odświeżenie tabeli lub ręcznie upuść nieaktywną kolumnę.

Łącznik może obsługiwać wymienione poniżej DDL (na przykład zmiany nazw kolumn), ale wymaga pełnego odświeżenia tabel docelowych.

DDL wymaga pełnego odświeżania

  • Zmienianie typu danych kolumny
  • Zmiana nazwy kolumny
  • Zmienianie klucza podstawowego tabeli
  • Przekształcanie tabeli z niezarejestrowanej na zarejestrowaną lub odwrotnie
  • Dodawanie lub usuwanie partycji (dla tabel partycjonowanych)

Staging

Katalog testowy nie może być katalogiem obcym.

Tables

  • Usługa Databricks zaleca pozyskiwanie 250 lub mniej tabel na jeden przepływ danych. Nie ma jednak limitu liczby wierszy lub kolumn obsługiwanych w tych tabelach.
  • Usługa Databricks nie może pozyskiwać dwóch tabel, których nazwy różnią się tylko wielkością liter (na przykład mytable i MyTable), w jednym potoku. Aby obsługiwać takie przypadki, utwórz dwie pary potoków bramy i pobierania, które publikują do różnych schematów docelowych.
  • Nazwy source_catalog, source_schema, i source_table są rozróżniane ze względu na wielkość liter dla nazwy bazy danych, ale ignorują wielkość liter dla nazw schematów i tabel (zgodnie z domyślnym zachowaniem PostgreSQL). Jeśli na przykład źródłowa baza danych nosi nazwę MyDatabase, musisz określić ją jako MyDatabase w pliku ingestion_definition.
  • Chociaż w jednym potoku można pozyskiwać dane z wielu źródłowych baz danych lub schematów, nie można pozyskiwać dwóch tabel o tej samej nazwie. Na przykład nie można przetwarzać zarówno schema1.orders, jak i schema2.orders w tym samym potoku.
  • Możesz uwzględnić wiele specyfikacji tabeli lub schematu w polu objectsingestion_definition. Jednak nazwy tabel źródłowych w różnych schematach źródłowych nie mogą się nakładać. Nakładające się nazwy powodują niepowodzenie potoku pozyskiwania.

Typy danych

  • Typy zdefiniowane przez użytkownika i typy rozszerzeń innych firm są przyjmowane jako ciągi znaków.
  • Typy danych TIME i TIMETZ są traktowane jako ciągi znaków.
  • Każdy wbudowany typ danych PostgreSQL nie wymieniony w tabeli Automatyczne przekształcenia danych jest pozyskiwany jako ciąg.
  • Dla liczbowego typu danych: Wartość NaN jest konwertowana na wartość null.
  • W przypadku dat i znaczników czasu: nie obsługujemy dat przed naszą erą ani dat po 9999 roku n.e.
  • Nieskończoność nie jest obsługiwana w przypadku daty, znacznika czasu ani interwału.

Tabele partycjonowane

  • Obsługiwane są tabele partycjonowane bazy danych PostgreSQL.
  • Każda partycja jest traktowana jako oddzielna tabela na potrzeby replikacji.
  • Dodawanie lub usuwanie partycji wymaga pełnego odświeżenia tabeli.

Ograniczenia dotyczące określonych odmian bazy danych PostgreSQL

Amazon RDS i Aurora

  • Parametr rds.logical_replication musi być ustawiony na 1.

Azure Database for PostgreSQL

  • Replikacja logiczna musi być włączona w parametrach serwera.
  • W przypadku wdrożeń pojedynczego serwera replikacja logiczna jest dostępna tylko w warstwach Ogólne przeznaczenie i Zoptymalizowane pod kątem pamięci.
  • W przypadku wdrożeń serwera elastycznego replikacja logiczna jest obsługiwana we wszystkich warstwach.
  • Max_wal_slot_keep_size parameter jest tylko do odczytu, stały w -1 (nieskończony) i nie można go skonfigurować.

Google Cloud SQL for PostgreSQL

  • Flaga cloudsql.logical_decoding musi być włączona.
  • Usługa Cloud SQL nie zezwala na konfigurowanie max_wal_slot_keep_size; Jest on domyślnie stały w -1 (nieskończony).