Udostępnij za pośrednictwem


Otwieranie wymagań i formatu strefy docelowej dublowania

W tym artykule szczegółowo przedstawiono wymagania dotyczące operacji strefy docelowej i tabeli/kolumny dotyczące otwierania dublowania w usłudze Microsoft Fabric.

Ważne

Ta funkcja jest dostępna w wersji zapoznawczej.

Po utworzeniu otwartej dublowanej bazy danych za pośrednictwem portalu sieci szkieletowej lub publicznego interfejsu API w obszarze roboczym usługi Fabric otrzymasz adres URL strefy docelowej w usłudze OneLake na stronie głównej elementu dublowanej bazy danych. Ta strefa docelowa to miejsce, w którym aplikacja tworzy plik metadanych i dane lądowe w formacie Parquet (nieskompresowany, Snappy, GZIP, ZSTD).

Zrzut ekranu z portalu sieci szkieletowej przedstawiający lokalizację adresu URL strefy docelowej na stronie głównej elementu dublowanej bazy danych.

Strefa docelowa

Dla każdej dublowanej bazy danych istnieje unikatowa lokalizacja magazynu w usłudze OneLake dla metadanych i tabel różnicowych. Otwieranie dublowania udostępnia folder strefy docelowej dla aplikacji w celu utworzenia pliku metadanych i wypychania danych do usługi 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>/LandingZone/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/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 docelowej

Funkcja otwórz dublowanie obsługuje format pliku strefy docelowej Parquet z kompresją lub bez kompresji. 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:
      • 0 dla insert
      • 1 dla aktualizacji
      • 2 w przypadku usuwania
      • 4 dla operacji UPSERT
  • Kolejność wierszy: wszystkie dzienniki w pliku powinny być w naturalnej kolejności, zgodnie z zastosowaniem transakcji. Jest to ważne w przypadku tego samego wiersza aktualizowanego wiele razy. Otwieranie dublowania stosuje zmiany przy użyciu 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 wszystkie wiersze powinny mieć wartość INSERT jako znacznik wiersza. Bez RowMarker danych w pliku dublowanie traktuje cały plik jako INSERT.

Zmiany przyrostowe

Otwieranie funkcji dublowania odczytuje przyrostowe zmiany w kolejności i stosuje je do docelowej tabeli delty. Kolejność jest niejawna w dzienniku zmian i w kolejności plików.

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

Oto kilka przykładowych danych parquet historii wierszy, aby zmienić EmployeeLocation wartość 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, powinien zostać wyświetlony przez polecenie DELETE w poprzednich kolumnach kluczy i wiersze INSERT z nowym kluczem i danymi. Na przykład historia wierszy, aby zmienić RowMarker unikatowy identyfikator E0001 EmployeeID na E0002. Nie musisz podawać wszystkich danych kolumn dla wiersza DELETE, tylko kolumn kluczy.

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

Operacje na tabelach

Funkcja otwierania dublowania obsługuje operacje tabel, takie jak dodawanie, usuwanie i zmienianie nazw tabel.

Dodaj tabelę

Otwieranie funkcji dublowania pobiera dowolną tabelę dodaną do strefy docelowej przez aplikację. Otwórz skanowanie dublowania dla nowych tabel w każdej iteracji.

Upuść tabelę

Otwieranie dublowania śledzi nazwę folderu. Jeśli folder tabeli zostanie usunięty, otwórz dublowanie pomiń tabelę w dublowanej bazie danych.

Jeśli folder zostanie utworzony ponownie, otwórz dublowanie pomiń tabelę i ponownie utworzy ją przy użyciu nowych danych w folderze, wykonując śledzenie elementu ETag dla folderu.

Podczas próby usunięcia tabeli możesz spróbować usunąć folder, ale istnieje prawdopodobieństwo, że otwieranie dublowania nadal używa danych z folderu, powodując niepowodzenie usuwania dla wydawcy.

Zmienianie nazwy tabeli

Aby zmienić nazwę tabeli, upuść i ponownie utwórz folder przy użyciu 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 (, Schema2) i tabele (Table ASchema1, Table B, Table C), które mają zostać utworzone w strefie docelowej, 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>/LandingZone/Schema1.schema/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/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, otwórz dublowanie dodaje kolumny do tabel różnicowych.

Usuń kolumnę

Jeśli kolumna zostanie porzucona z nowych plików dziennika, otwórz magazyny NULL dublowania 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 dublowanie zawsze składa wszystkie kolumny z poprzedniej 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.

Następny krok