Udostępnij za pośrednictwem


Otwarty wymóg i format strefy replikacji początkowej.

W tym artykule szczegółowo przedstawiono wymagania dotyczące operacji strefy lądowania i tabeli/kolumny dotyczące otwartego odzwierciedlania w usłudze Microsoft Fabric.

Ważne

Ta funkcja jest dostępna w wersji zapoznawczej.

Po utworzeniu otwartej lustrzanej bazy danych za pośrednictwem portalu Fabric lub publicznego interfejsu API w obszarze roboczym Fabric, otrzymasz adres URL strefy przechowywania w usłudze OneLake na stronie głównej elementu lustrzanej bazy danych. pl-PL: Ta strefa docelowa to miejsce, gdzie aplikacja tworzy plik metadanych i umieszcza dane w formacie Parquet (nieskompresowanym, Snappy, GZIP, ZSTD).

Zrzut ekranu z portalu Fabric pokazujący lokalizację adresu URL strefy landingowej na stronie głównej elementu baz danych z replikacją.

Strefa lądowania

Dla każdej zmirrorowanej bazy danych istnieje unikalne miejsce przechowywania w usłudze OneLake dla metadanych i tabel delta. Otwarta mirroring udostępnia folder strefy lądowania dla aplikacji, aby utworzyć plik metadanych i wprowadzić dane do OneLake. Dublowanie monitoruje te pliki w strefie docelowej i odczytuje folder dla nowych tabel i dodanych danych.

Jeśli na przykład masz tabele (Table A, Table B, Table C), które mają zostać utworzone w strefie docelowej, utwórz foldery podobne do następujących adresów URL:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableC

Plik metadanych w strefie docelowej

Każdy folder tabeli musi zawierać _metadata.json plik.

Ten plik metadanych tabeli zawiera rekord JSON, który obecnie określa tylko unikatowe kolumny klucza jako keyColumns.

Aby na przykład zadeklarować kolumny C1 i C2 jako unikatowy klucz złożony dla tabeli:

{
   "keyColumns" : ["C1", "C2"]
}

Jeśli keyColumns lub _metadata.json nie zostanie określony, aktualizacja/usunięcie nie są możliwe. Ten plik można dodać w dowolnym momencie, ale po dodaniu keyColumns nie można go zmienić.

Plik danych i format w strefie lądowania

Otwarta replikacja obsługuje format pliku Parquet jako strefy docelowej, z kompresją lub bez niej. Obsługiwane formaty kompresji to Snappy, GZIP i ZSTD.

Wszystkie pliki Parquet zapisane w strefie docelowej mają następujący format:

<rowMarker><DataColumns>

  • rowMarker: nazwa kolumny to __rowMarker__ (w tym dwa podkreślenia przed i po rowMarker). RowMaker wartości i zachowania:

    RowMarker\Scenario Jeśli wiersz nie istnieje z tymi samymi kolumnami kluczowymi w docelowym miejscu. Jeśli wiersz istnieje z tymi samymi kolumnami kluczy w miejscu docelowym
    0 (Wstaw) Wstaw wiersz do miejsca docelowego Wstaw wiersz do miejsca docelowego, bez sprawdzania poprawności pod kątem sprawdzania kolumny klucza dup.
    1 (Aktualizacja) Wstaw wiersz do miejsca docelowego, bez sprawdzania poprawności/wyjątku w celu sprawdzenia istnienia wiersza z tą samą kolumną klucza. Zaktualizuj wiersz przy użyciu tej samej kolumny klucza.
    2 (Usuń) Brak zmian danych, brak walidacji/wyjątku w celu sprawdzenia istnienia wiersza z tą samą kolumną klucza. Usuń wiersz z tą samą wartością w kolumnie klucza.
    4 (Aktualizacja lub wstawianie) Wstaw wiersz do miejsca docelowego, bez sprawdzania poprawności/wyjątku w celu sprawdzenia istnienia wiersza z tą samą kolumną klucza. Zaktualizuj wiersz przy użyciu tej samej kolumny klucza.
  • Kolejność wierszy: wszystkie logi w pliku powinny być w naturalnej kolejności, zgodnie z kolejnością transakcji. Jest to ważne w przypadku, gdy ten sam wiersz jest aktualizowany wielokrotnie. Otwarte odwzorowywanie stosuje zmiany zgodnie z kolejnością w plikach.

  • Kolejność plików: pliki powinny być dodawane w monotonicznie rosnącej liczbie.

  • Nazwa pliku: Nazwa pliku to 20 cyfr, na przykład 00000000000000000001.parquet dla pierwszego pliku, a 00000000000000000002.parquet drugi. Nazwy plików powinny być w liczbach ciągłych. Pliki zostaną usunięte automatycznie przez usługę dublowania, ale ostatni plik zostanie pozostawiony, aby system wydawcy mógł odwoływać się do niego w celu dodania następnego pliku w sekwencji.

Ładowanie początkowe

W przypadku początkowego ładowania danych do otwartej dublowanej bazy danych rowMarker w początkowym pliku danych jest opcjonalny i nie jest zalecany. Dublowanie traktuje cały plik jako insert, gdy rowMarker nie istnieje.

Aby uzyskać lepszą wydajność i dokładne metryki, rowMarker jest obowiązkowym polem tylko w przypadku zmian przyrostowych w celu zastosowania operacji update/delete/upsert.

Zmiany przyrostowe

Otwieranie odzwierciedlania odczytuje przyrostowe zmiany w odpowiedniej kolejności i stosuje je do docelowej tabeli Delta. Kolejność jest niejawna w dzienniku zmian i w kolejności plików.

Zmiany danych są uznawane za zmiany przyrostowe po znalezieniu kolumny rowMarker z dowolnego wiersza/pliku.

Zaktualizowane wiersze muszą zawierać pełne dane wierszy ze wszystkimi kolumnami.

Oto kilka przykładowych danych parquet dotyczących historii zmian, aby zmienić wartość EmployeeLocation dla EmployeeID E0001 z Redmond na Bellevue. W tym scenariuszu kolumna EmployeeID została oznaczona jako kolumna klucza w pliku metadanych w strefie docelowej.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue

Jeśli kolumny kluczy zostaną zaktualizowane, powinno to być przedstawione przez polecenie DELETE na poprzednich kolumnach kluczy oraz polecenie INSERT z nowym kluczem i danymi. Na przykład zmiana unikatowego identyfikatora z rowMarker E0001 na EmployeeID E0002 w historii wierszy. Nie musisz podawać wszystkich danych kolumn do usunięcia wiersza, wystarczą tylko kolumny kluczy.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue

Operacje na tabelach

Otwarte dublowanie obsługuje operacje na tabelach, takie jak dodawanie, usuwanie i zmienianie nazw tabel.

Dodaj tabelę

Otwarta funkcja mirrorowania wybiera każdą tabelę dodaną do strefy lądowania przez aplikację. Otwórz skanowanie kopii lustrzanych dla nowych tabel w każdej iteracji.

Usuń tabelę

Otwieranie dublowania śledzi nazwę folderu. Jeśli folder tabeli zostanie usunięty, otwarte mirroring usuwa tabelę w zmirorowanej bazie danych.

Jeśli folder zostanie utworzony ponownie, otwarte odwzorowanie usuwa tabelę i ponownie ją tworzy z nowymi danymi w folderze, śledząc ETag dla tego folderu.

Podczas próby usunięcia tabeli możesz spróbować usunąć folder, ale może się zdarzyć, że otwarte lustrzane odbicie nadal używa danych z folderu, powodując niepowodzenie operacji usuwania dla wydawcy.

Zmienianie nazwy tabeli

Aby zmienić nazwę tabeli, usuń i ponownie utwórz katalog, korzystając z danych początkowych i przyrostowych. Dane muszą być ponownie wypełniane do zmienionej tabeli.

Schemat

Ścieżkę tabeli można określić w folderze schematu. Strefa docelowa <schemaname>.schema schematu powinna mieć nazwę folderu. Może istnieć wiele schematów i może istnieć wiele tabel w schemacie.

Jeśli na przykład masz schematy (Schema1, Schema2) i tabele (Table A, Table B, Table C), które mają zostać utworzone w strefie lądowania, utwórz foldery podobne do następujących ścieżek w usłudze OneLake.

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema1.schema/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema1.schema/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema2.schema/TableC

Kolumny tabeli i operacje kolumn

Typy kolumn

  • Proste typy parquet są obsługiwane w strefie docelowej.
  • Typy złożone powinny być zapisywane jako ciąg JSON.
  • Typy złożone binarne, takie jak geografia, obrazy itp., mogą być przechowywane jako typ binarny w strefie docelowej.

Dodaj kolumnę

Jeśli nowe kolumny są dodawane do plików parquet, otwarte odwzorowanie dodaje kolumny do tabel delta.

Usuń kolumnę

Jeśli kolumna zostanie usunięta z nowych plików dziennika, mechanizm dublowania przechowuje NULL dla tych kolumn w nowych wierszach, a stare wiersze mają kolumny obecne w danych. Aby usunąć kolumnę, usuń tabelę i ponownie utwórz folder tabeli w strefie docelowej, co spowoduje odtworzenie tabeli delty z nowym schematem i danymi.

Otwarte odwzorowanie zawsze łączy wszystkie kolumny ze wcześniejszej wersji dodanych danych. Aby usunąć kolumnę, utwórz ponownie tabelę/folder.

Zmienianie typu kolumny

Aby zmienić typ kolumny, upuść i ponownie utwórz folder z początkowymi i przyrostowymi danymi o nowym typie kolumny. Podanie nowego typu kolumny bez ponownego utworzenia tabeli powoduje wystąpienie błędu, a replikacja dla tej tabeli zostanie zatrzymana. Po ponownym utworzeniu folderu tabeli replikacja zostanie wznowiona przy użyciu nowych danych i schematu.

Zmienianie nazwy kolumny

Aby zmienić nazwę kolumny, usuń folder tabeli i ponownie utwórz folder ze wszystkimi danymi i nową nazwą kolumny.

Proces oczyszczania

Proces oczyszczania podczas otwierania dublowania przenosi wszystkie pliki proceesed do oddzielnego folderu o nazwie _ProcessedFiles lub _FilesReadyToDelete. Po upływie 7 dni pliki zostaną usunięte z tego folderu.

Następny krok