Condividi tramite


Requisiti e formato della zona di destinazione del mirroring aperto

Questo articolo illustra in dettaglio i requisiti delle operazioni di tabella/colonna e della zona di destinazione per il mirroring aperto in Microsoft Fabric.

Importante

Questa funzionalità si trova in anteprima.

Dopo aver creato il database con mirroring aperto tramite il portale di Infrastruttura o l'API pubblica nell'area di lavoro Infrastruttura, si ottiene un URL della zona di destinazione in OneLake nella home page dell'elemento del database con mirroring. Questa zona di destinazione è la posizione in cui l'applicazione crea un file di metadati e i dati di terra in formato Parquet (non compressi, Snappy, GZIP, ZSTD).

Screenshot del portale di Infrastruttura che mostra il percorso URL della zona di destinazione nella home page dell'elemento del database con mirroring.

Zona di destinazione

Per ogni database con mirroring, è disponibile un percorso di archiviazione univoco in OneLake per le tabelle di metadati e differenziali. Il mirroring aperto fornisce una cartella della zona di destinazione per l'applicazione per creare un file di metadati ed eseguire il push dei dati in OneLake. Il mirroring monitora questi file nella zona di destinazione e legge la cartella per le nuove tabelle e i dati aggiunti.

Ad esempio, se sono presenti tabelle (Table A, Table B, Table C) da creare nella zona di destinazione, creare cartelle come gli URL seguenti:

  • 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

File di metadati nella zona di destinazione

Ogni cartella della tabella deve contenere un _metadata.json file.

Questo file di metadati di tabella contiene un record JSON per specificare attualmente solo le colonne chiave univoca come keyColumns.

Ad esempio, per dichiarare colonne C1 e C2 come chiave univoca composta per la tabella:

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

Se keyColumns o _metadata.json non è specificato, gli aggiornamenti o le eliminazioni non sono possibili. Questo file può essere aggiunto in qualsiasi momento, ma una volta aggiunto keyColumns non può essere modificato.

File di dati e formato nella zona di destinazione

Il mirroring aperto supporta Parquet come formato di file della zona di destinazione con o senza compressione. I formati di compressione supportati includono Snappy, GZIP e ZSTD.

Tutti i file Parquet scritti nella zona di destinazione hanno il formato seguente:

<RowMarker><DataColumns>

  • RowMarker: il nome della colonna è __rowMarker__ (inclusi due caratteri di sottolineatura prima e dopo rowMarker).

    • RowMaker valori:
      • 0 per INSERT
      • 1 per UPDATE
      • 2 per DELETE
      • 4 per UPSERT
  • Ordine di riga: tutti i log nel file devono essere in ordine naturale come applicato nella transazione. Questo aspetto è importante per la stessa riga da aggiornare più volte. Il mirroring aperto applica le modifiche usando l'ordine nei file.

  • Ordine file: i file devono essere aggiunti in numeri in aumento monotonico.

  • Nome file: il nome file è di 20 cifre, ad esempio 00000000000000000001.parquet per il primo file e 00000000000000000002.parquet per il secondo. I nomi dei file devono essere in numeri continui. I file verranno eliminati automaticamente dal servizio di mirroring, ma l'ultimo file verrà lasciato in modo che il sistema di pubblicazione possa farvi riferimento per aggiungere il file successivo in sequenza.

Caricamento iniziale

Per il caricamento iniziale dei dati in un database con mirroring aperto, tutte le righe devono avere INSERT come marcatore di riga. Senza RowMarker dati in un file, il mirroring considera l'intero file come insert.

Modifiche incrementali

Il mirroring aperto legge le modifiche incrementali nell'ordine e le applica alla tabella Delta di destinazione. L'ordine è implicito nel log delle modifiche e nell'ordine dei file.

Le righe aggiornate devono contenere i dati di riga completi, con tutte le colonne.

Ecco alcuni dati parquet di esempio della cronologia delle righe per modificare l'oggetto EmployeeLocation per EmployeeID E0001 da Redmond a Bellevue. In questo scenario, la EmployeeID colonna è stata contrassegnata come colonna chiave nel file di metadati nella zona di destinazione.

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

Se le colonne chiave vengono aggiornate, devono essere presentate da un'istruzione DELETE sulle colonne chiave precedenti e da una riga INSERT con una nuova chiave e dati. Ad esempio, la cronologia delle righe per modificare l'identificatore RowMarker univoco per EmployeeID E0001 in E0002. Non è necessario specificare tutti i dati di colonna per una riga DELETE, ma solo le colonne chiave.

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

Operazioni su tabella

Il mirroring aperto supporta operazioni di tabella, ad esempio aggiungere, eliminare e rinominare tabelle.

Aggiungi tabella

Il mirroring aperto preleva qualsiasi tabella aggiunta alla zona di destinazione dall'applicazione. Aprire le analisi del mirroring per le nuove tabelle in ogni iterazione.

Eliminare una tabella

Il mirroring aperto tiene traccia del nome della cartella. Se una cartella di tabella viene eliminata, il mirroring aperto elimina la tabella nel database con mirroring.

Se una cartella viene ricreata, il mirroring aperto elimina la tabella e lo ricrea con i nuovi dati nella cartella, eseguendo il rilevamento dell'ETag per la cartella.

Quando si tenta di eliminare una tabella, è possibile provare a eliminare la cartella, ma è possibile che il mirroring aperto usi ancora i dati della cartella, causando un errore di eliminazione per publisher.

Rinominare tabella

Per rinominare una tabella, eliminare e ricreare la cartella con dati iniziali e incrementali. I dati dovranno essere ripopolati nella tabella rinominata.

Schema

È possibile specificare un percorso di tabella all'interno di una cartella dello schema. Una zona di destinazione dello schema deve avere un nome di <schemaname>.schema cartella. Possono essere presenti più schemi e possono essere presenti più tabelle in uno schema.

Ad esempio, se sono presenti schemi (, Schema2) e tabelle (Table ASchema1, Table B, Table C) da creare nella zona di destinazione, creare cartelle come i percorsi seguenti in 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

Colonne di tabella e operazioni di colonna

Tipi di colonna

  • I tipi parquet semplici sono supportati nella zona di destinazione.
  • I tipi complessi devono essere scritti come stringa JSON.
  • I tipi complessi binari come geography, images e così via possono essere archiviati come tipo binario nella zona di destinazione.

Aggiungi colonna

Se vengono aggiunte nuove colonne ai file parquet, il mirroring aperto aggiunge le colonne alle tabelle differenziali.

Delete column

Se una colonna viene eliminata dai nuovi file di log, aprire archivi di mirroring NULL per tali colonne in nuove righe e le colonne precedenti contengono le colonne presenti nei dati. Per eliminare la colonna, eliminare la tabella e creare di nuovo la cartella della tabella nella zona di destinazione, con conseguente ricreazione della tabella Delta con nuovi schemi e dati.

Il mirroring aperto unisce sempre tutte le colonne della versione precedente dei dati aggiunti. Per rimuovere una colonna, ricreare la tabella/cartella.

Cambia tipi di colonne

Per modificare un tipo di colonna, eliminare e ricreare la cartella con i dati iniziali e incrementali con il nuovo tipo di colonna. Se si specifica un nuovo tipo di colonna senza ricreare la tabella, viene generato un errore e la replica per tale tabella verrà interrotta. Dopo aver ricreato la cartella della tabella, la replica riprende con nuovi dati e schemi.

Rinominare una colonna

Per rinominare una colonna, eliminare la cartella della tabella e ricreare la cartella con tutti i dati e con il nuovo nome di colonna.

Passaggio successivo