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).
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 porowMarker
).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, a00000000000000000002.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.