Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Deze functie bevindt zich in Openbare Preview in de volgende regio's: westus, westus2, eastus, eastus2, centralus, southcentralus, northeurope, westeurope, australiaeast, brazilsouth, canadacentral, centralindia, southeastasia, uksouth.
Op deze pagina wordt beschreven hoe u een gesynchroniseerde tabel maakt en beheert. Een gesynchroniseerde tabel is een Alleen-lezen Postgres-tabel van Unity Catalog waarmee gegevens van een Unity Catalog-tabel automatisch worden gesynchroniseerd met uw Lakebase-database-exemplaar. Door een Unity Catalog-tabel met Postgres te synchroniseren, worden query's met lage latentie mogelijk en wordt het uitvoeren van joins tijdens het uitvoeren van een query ondersteund met andere Postgres-tabellen.
De synchronisatie wordt verwerkt door declaratieve pijplijnen van Lakeflow Spark. Een beheerde pijplijn werkt de Postgres-tabel continu bij met wijzigingen uit de brontabel. Na het maken kunnen gesynchroniseerde tabellen rechtstreeks worden opgevraagd met behulp van Postgres-hulpprogramma's.
De belangrijkste kenmerken van gesynchroniseerde tabellen zijn als volgt:
- Alleen-lezen modus in Postgres om de gegevensintegriteit met de bron te behouden
- Automatisch gesynchroniseerd met beheerde Lakeflow Spark-declaratieve pijplijnen
- Query's uitvoeren via standaard PostgreSQL-interfaces
- Beheerd via Unity Catalog voor beheer en levenscyclusbeheer
Voordat u begint
- U hebt een Unity Catalog-tabel in elke catalogus.
- U hebt
CAN USEmachtigingen voor het database-exemplaar.
Een gesynchroniseerde tabel maken
UI (Gebruikersinterface)
Ga als volgt te werk om een Unity Catalog-tabel te synchroniseren met Postgres:
Klik op Catalogus in de zijbalk van de werkruimte.
Zoek en selecteer de Unity Catalog-tabel waarop u een gesynchroniseerde tabel wilt maken.
Klik opGesynchroniseerde tabel>.
Selecteer uw catalogus, schema en voer een tabelnaam in voor de nieuwe gesynchroniseerde tabel.
- Gesynchroniseerde tabellen kunnen ook worden gemaakt in Standaardcatalogussen, met een extra configuratie. Selecteer uw Standaardcatalogus, een schema en voer een tabelnaam in voor de zojuist gemaakte gesynchroniseerde tabel.
Selecteer een database-exemplaar en voer de naam in van de Postgres-database waarin de gesynchroniseerde tabel moet worden gemaakt. Het veld Postgres-database wordt standaard ingesteld op de geselecteerde doelcatalogus. Als er geen Postgres-database onder deze naam bestaat, maakt Azure Databricks een nieuwe database.
Selecteer een primaire sleutel. Een primaire sleutel is vereist omdat hiermee efficiënte toegang tot rijen voor lees-, updates en verwijderingen mogelijk is.
Belangrijk
Kolommen in de primaire sleutel mogen geen null-waarden bevatten in de gesynchroniseerde tabel. Daarom worden rijen met null-waarden in primaire-sleutelkolommen uitgesloten van de synchronisatie.
Als twee rijen dezelfde primaire sleutel in de brontabel hebben, selecteert u een Timeseries-sleutel om ontdubbeling te configureren. Wanneer een tijdreekssleutel is opgegeven, bevatten de gesynchroniseerde tabellen alleen de rijen met de meest recente sleutelwaarde voor tijdreeksen voor elke primaire sleutel.
Selecteer de synchronisatiemodus in Momentopname, Geactiveerd en Doorlopend. Zie De uitleg van de synchronisatiemodi voor meer informatie over elke synchronisatiemodus.
Kies of u deze gesynchroniseerde tabel wilt maken op basis van een nieuwe of bestaande pijplijn.
- Als u een nieuwe pijplijn maakt en een beheerde catalogus gebruikt, kiest u de opslaglocatie voor de faseringstabel. Als u een standaardcatalogus gebruikt, wordt de faseringstabel automatisch opgeslagen in de catalogus.
- Als u een bestaande pijplijn gebruikt, controleert u of de nieuwe synchronisatiemodus overeenkomt met de pijplijnmodus.
(Optioneel) Selecteer een serverloos budgetbeleid. Zie Kenmerkgebruik met serverloze budgetbeleidsregels voor het maken van een serverloos budgetbeleid. Hiermee kunt u het factureringsgebruik toewijzen aan specifiek gebruiksbeleid.
- Voor gesynchroniseerde tabellen is de factureerbare entiteit de onderliggende declaratieve Pijplijnen van Lakeflow Spark. Als u het budgetbeleid wilt wijzigen, wijzigt u het onderliggende pijplijnobject. Zie Een serverloze pijplijn configureren.
Nadat de status van de gesynchroniseerde tabelonline is, meldt u zich aan bij uw database-exemplaar en voert u een query uit op de zojuist gemaakte tabel. Voer een query uit op uw tabel met behulp van de SQL-editor, externe hulpprogramma's of notebooks.
Python SDK
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.database import SyncedDatabaseTable, SyncedTableSpec, NewPipelineSpec, SyncedTableSchedulingPolicy
# Initialize the Workspace client
w = WorkspaceClient()
# Create a synced table in a database catalog
synced_table = w.database.create_synced_database_table(
SyncedDatabaseTable(
name="database_catalog.schema.synced_table", # Full three-part name
spec=SyncedTableSpec(
source_table_full_name="source_catalog.source_schema.source_table",
primary_key_columns=["id"], # Primary key columns
scheduling_policy=SyncedTableSchedulingPolicy.TRIGGERED, # SNAPSHOT, TRIGGERED, or CONTINUOUS
# Optional: timeseries_key="timestamp" # For deduplication
new_pipeline_spec=NewPipelineSpec(
storage_catalog="storage_catalog",
storage_schema="storage_schema"
)
),
)
)
print(f"Created synced table: {synced_table.name}")
# Create a synced table in a standard UC catalog
synced_table = w.database.create_synced_database_table(
SyncedDatabaseTable(
name="standard_catalog.schema.synced_table", # Full three-part name
database_instance_name="my-database-instance", # Required for standard catalogs
logical_database_name="postgres_database", # Required for standard catalogs
spec=SyncedTableSpec(
source_table_full_name="source_catalog.source_schema.source_table",
primary_key_columns=["id"],
scheduling_policy=SyncedTableSchedulingPolicy.CONTINUOUS,
create_database_objects_if_missing=True, # Create database/schema if needed
new_pipeline_spec=NewPipelineSpec(
storage_catalog="storage_catalog",
storage_schema="storage_schema"
)
),
)
)
print(f"Created synced table: {synced_table.name}")
# Check the status of a synced table
synced_table_name = "database_catalog.schema.synced_table"
status = w.database.get_synced_database_table(name=synced_table_name)
print(f"Synced table status: {status.data_synchronization_status.detailed_state}")
print(f"Status message: {status.data_synchronization_status.message}")
CLI (Command Line Interface)
# Create a synced table in a database catalog
databricks database create-synced-database-table \
--json '{
"spec": {
"name": "database_catalog.schema.synced_table",
"source_table_full_name": "source_catalog.source_schema.source_table",
"primary_key_columns": ["id"],
"scheduling_policy": "TRIGGERED"
},
"new_pipeline_spec": {
"storage_catalog": "storage_catalog",
"storage_schema": "storage_schema"
}
}'
# Create a synced table in a standard UC catalog
# new_pipeline_spec, storage_catalog, and storage_schema are optional
databricks database create-synced-database-table \
--database-instance-name "my-database-instance" \
--logical-database-name "databricks_postgres" \
--json '{
"name": "standard_catalog.schema.synced_table",
"spec": {
"source_table_full_name": "source_catalog.source_schema.source_table",
"primary_key_columns": ["id"],
"scheduling_policy": "CONTINUOUS",
"create_database_objects_if_missing": true
}
}'
# Check the status of a synced table
databricks database get-synced-database-table "database_catalog.schema.synced_table"
curl
Maak een gesynchroniseerde tabel in een databasecatalogus.
export CATALOG_NAME=<Database catalog>
export SRC_TBL="source_catalog.source_schema.source_table"
export DEST_TBL="$CATALOG_NAME.some_schema.synced_table"
export PKS='["id"]'
export ST_CATALOG = "storage_catalog"
export ST_SCHEMA = "storage_schema"
curl -X POST https://$WORKSPACE/api/2.0/database/synced_tables \
-H "Content-Type: text/json" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--data-binary @- << EOF
{
"name": "$DEST_TBL",
"spec": {
"source_table_full_name": "$SRC_TBL",
"primary_key_columns": $PKS,
"scheduling_policy": "TRIGGERED",
},
"new_pipeline_spec": {
"storage_catalog": "$ST_CATALOG",
"storage_schema": "$ST_SCHEMA",
}
}
EOF
Maak een gesynchroniseerde tabel in een standaardcatalogus van Unity Catalog.
export CATALOG_NAME=<Standard catalog>
export DATABASE_INSTANCE=<database instance>
export POSTGRES_DATABASE=$CATALOG_NAME
export SRC_TBL="source_catalog.source_schema.source_table"
export DEST_TBL="$CATALOG_NAME.some_schema.sync_table"
export PKS='["id"]'
export ST_CATALOG = "storage_catalog"
export ST_SCHEMA = "storage_schema"
curl -X POST https://$WORKSPACE/api/2.0/database/synced_tables \
-H "Content-Type: text/json" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--data-binary @- << EOF
{
"name": "$DEST_TBL",
"database_instance_name": "$DATABASE_INSTANCE",
"logical_database_name": "$POSTGRES_DATABASE",
"spec": {
"source_table_full_name": "$SRC_TBL",
"primary_key_columns": $PKS,
"scheduling_policy": "TRIGGERED",
},
"new_pipeline_spec": {
"storage_catalog": "$ST_CATALOG",
"storage_schema": "$ST_SCHEMA",
}
}
EOF
Controleer de status van een gesynchroniseerde tabel.
export SYNCEDTABLE='pg_db.silver.sbtest1_online'
curl --request GET \
"https://e2-dogfood.staging.cloud.databricks.com/api/2.0/database/synced_tables/$SYNCEDTABLE" \
--header "Authorization: Bearer dapi..."
Uitleg van synchronisatiemodi
Er kan een gesynchroniseerde tabel worden gemaakt met een van de volgende synchronisatiemodi, waarmee wordt bepaald hoe gegevens van de bron worden gesynchroniseerd met de gesynchroniseerde tabel in Postgres:
| Synchronisatiemodus | Description | Performance |
|---|---|---|
| Momentopname | De pijplijn wordt eenmaal uitgevoerd om een momentopname van de brontabel te maken en deze naar de gesynchroniseerde tabel te kopiëren. Latere pijplijnuitvoeringen kopiëren alle brongegevens naar de bestemming en vervangen deze op een atomische manier. De pijplijn kan handmatig worden geactiveerd via een API of volgens een schema. | Deze modus is 10 keer efficiënter dan geactiveerde of continue synchronisatiemodi, omdat hiermee gegevens helemaal opnieuw worden gemaakt. Als u meer dan 10% van de brontabel wijzigt, kunt u overwegen deze modus te gebruiken. |
| Geactiveerd | De pijplijn wordt eenmaal uitgevoerd om een momentopname van de brontabel te maken en deze naar de gesynchroniseerde tabel te kopiëren. In tegenstelling tot de synchronisatiemodus voor momentopnamen, worden bij het vernieuwen van de gesynchroniseerde tabel alleen wijzigingen doorgevoerd sinds de laatste pijplijnuitvoering wordt opgehaald en toegepast op de gesynchroniseerde tabel. De incrementele vernieuwing kan handmatig worden geactiveerd via een API of volgens een schema. | Deze modus is een goed compromis tussen vertraging en kosten, omdat deze op aanvraag wordt uitgevoerd en alleen wijzigingen toepast sinds de laatste uitvoering. Voer deze pijplijn direct na het bijwerken van de brontabel uit om vertraging te minimaliseren. Als u dit vaker dan elke 5 minuten uitvoert, kan het duurder zijn dan de doorlopende modus vanwege de kosten van het starten en stoppen van de pijplijn telkens. |
| Doorlopend | De pijplijn wordt eenmaal uitgevoerd om een momentopname van de brontabel te maken en deze te kopiëren naar de gesynchroniseerde tabel, waarna de pijplijn continu wordt uitgevoerd. Volgende wijzigingen in de brontabel worden incrementeel toegepast op de gesynchroniseerde tabel in realtime. Handmatig vernieuwen is niet nodig. | Deze modus heeft de laagste vertraging, maar hogere kosten, omdat deze continu wordt uitgevoerd. |
Opmerking
Om de modus Geactiveerde of Continue synchronisatie te ondersteunen, moet voor de brontabel de wijzigingsgegevens-feed ingeschakeld zijn. Bepaalde bronnen (zoals Weergaven) bieden geen ondersteuning voor wijzigingen in de gegevensfeed, zodat ze alleen kunnen worden gesynchroniseerd in de momentopnamemodus.
Ondersteunde bewerkingen
Databricks raadt aan alleen de volgende bewerkingen uit te voeren in Postgres voor gesynchroniseerde tabellen om onbedoelde overschrijven of inconsistenties van gegevens te voorkomen:
- Query's met het kenmerk Alleen-lezen
- Indexen maken
- De tabel verwijderen (om ruimte vrij te maken na het verwijderen van de gesynchroniseerde tabel uit Unity Catalog)
Hoewel u deze tabel op andere manieren kunt wijzigen, kan deze de synchronisatiepijplijn verstoren.
Een gesynchroniseerde tabel verwijderen
Als u een gesynchroniseerde tabel wilt verwijderen, moet u deze verwijderen uit Unity Catalog en vervolgens de tabel in het database-exemplaar verwijderen. Als u de gesynchroniseerde tabel verwijdert uit Unity Catalog, wordt de registratie van de tabel opgeheven en worden gegevensvernieuwingen stopgezet. De tabel blijft echter aanwezig in de onderliggende Postgres-database. Als u ruimte wilt vrijmaken in uw database-exemplaar, maakt u verbinding met het exemplaar en gebruikt u de DROP TABLE opdracht.
UI (Gebruikersinterface)
- Klik op Catalogus in de zijbalk van de werkruimte.
- Zoek en selecteer de gesynchroniseerde tabel die u wilt verwijderen.
- Klik op
>Verwijderen.
- Maak verbinding met de instantie met
psql, de SQL-editor of vanuit een notitieboekinterface. - Zet de tabel neer met PostgreSQL.
DROP TABLE synced_table_database.synced_table_schema.synced_table
Python SDK
from databricks.sdk import WorkspaceClient
# Initialize the Workspace client
w = WorkspaceClient()
# Delete a synced table from UC
synced_table_name = "catalog.schema.synced_table"
w.database.delete_synced_database_table(name=synced_table_name)
print(f"Deleted synced table from UC: {synced_table_name}")
# To free up space in your database instance, you need to connect to the
# instance and drop the table using PostgreSQL:
#
# DROP TABLE synced_table_database.synced_table_schema.synced_table;
CLI (Command Line Interface)
# Delete a synced table from UC
databricks database delete-synced-database-table "catalog.schema.synced_table"
# To free up space in your database instance, you need to connect to the
# instance and drop the table using PostgreSQL:
#
# DROP TABLE synced_table_database.synced_table_schema.synced_table;
curl
# Delete a synced table from UC
curl -X DELETE --header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
https://$WORKSPACE/api/2.0/database/synced_tables/$SYNCED_TABLE_NAME
# To free up space in your database instance, you need to connect to the
# instance and drop the table using PostgreSQL:
#
# DROP TABLE synced_table_database.synced_table_schema.synced_table;
Eigendom en machtigingen
Als u een nieuwe Postgres-database, -schema of -tabel maakt, wordt het eigendom van Postgres als volgt ingesteld:
- Eigendom wordt toegewezen aan de gebruiker die de database, het schema of de tabel maakt, als hun Azure Databricks-aanmelding bestaat als een rol in Postgres. Zie Postgres-rollen beheren om een Azure Databricks-identiteitsrol toe te voegen in Postgres.
- Anders wordt het eigendom toegewezen aan de eigenaar van het ouderobject in Postgres (meestal het
databricks_superuser).
Gesynchroniseerde tabeltoegang beheren
Nadat een gesynchroniseerde tabel is gemaakt, kan de databricks_superuser een gesynchroniseerde tabel uit Postgres READ. De databricks_superuser heeft pg_read_all_data, waarmee deze rol alle tabellen kan lezen. Het heeft ook de pg_write_all_data bevoegdheid, waarmee deze rol naar alle tabellen kan schrijven. Dit betekent dat een databricks_superuser kan ook schrijven naar een gesynchroniseerde tabel in Postgres. Lakebase ondersteunt dit schrijfgedrag voor het geval u dringende wijzigingen moet aanbrengen in uw doeltabel. Databricks raadt u echter aan om in plaats daarvan oplossingen te maken in uw brontabel.
De
databricks_superusergebruiker kan deze bevoegdheden ook verlenen aan andere gebruikers:GRANT USAGE ON SCHEMA synced_table_schema TO user;GRANT SELECT ON synced_table_name TO user;De
databricks_superuservolgende bevoegdheden kunnen worden ingetrokken:REVOKE USAGE ON SCHEMA synced_table_schema FROM user;REVOKE {SELECT | INSERT | UPDATE | DELETE} ON synced_table_name FROM user;
Gesynchroniseerde tabelbewerkingen beheren
Hiermee databricks_superuser kunt u beheren welke gebruikers gemachtigd zijn om specifieke bewerkingen uit te voeren op een gesynchroniseerde tabel. De ondersteunde bewerkingen voor gesynchroniseerde tabellen zijn:
CREATE INDEXALTER INDEXDROP INDEXDROP TABLE
Alle andere DDL-bewerkingen worden geweigerd voor gesynchroniseerde tabellen.
Als u deze bevoegdheden wilt verlenen aan extra gebruikers, moet u databricks_superuser eerst een extensie maken op databricks_auth:
CREATE EXTENSION IF NOT EXISTS databricks_auth;
Vervolgens kan de databricks_superuser gebruiker een gebruiker toevoegen om een gesynchroniseerde tabel te beheren:
SELECT databricks_synced_table_add_manager('"synced_table_schema"."synced_table"'::regclass, '[user]');
Het databricks_superuser kan een gebruiker verwijderen zodat deze geen gesynchroniseerde tabel meer beheert.
SELECT databricks_synced_table_remove_manager('[table]', '[user]');
De databricks_superuser kan alle managers bekijken.
SELECT * FROM databricks_synced_table_managers;
Koppeling van gegevenstypen
In deze tabel voor typetoewijzing wordt gedefinieerd hoe elk gegevenstype in de bron-Unity Catalog-tabel wordt toegewezen aan de doelsynchronisatietabel in Postgres:
| Bronkolomtype | Postgres-kolomtype |
|---|---|
| BIGINT | BIGINT |
| BINAIR | BYTEA |
| BOOLEAANS | BOOLEAN |
| DATUM | DATE |
| DECIMAL(p,s) | NUMERIEK |
| DUBBEL | DUBBELE PRECISIE |
| FLOAT | WERKELIJK |
| INT | INTEGER |
| INTERVAL intervalQualifier | interval |
| SMALLINT | SMALLINT |
| TEKENREEKS | Tekst |
| TIJDSTEMPEL | TIJDSTEMPEL MET TIJDZONE |
| TIMESTAMP_NTZ | TIJDSTEMPEL ZONDER TIJDZONE |
| TINYINT | SMALLINT |
| GEOGRAFIE(srid) | NIET ONDERSTEUND |
| GEOMETRIE(srid) | NIET ONDERSTEUND |
| ARRAY-elementtype <> | JSONB |
| MAP < keyType,valueType > | JSONB |
| STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, ...]] > | JSONB |
| VARIANT | JSONB |
| OBJECT | NIET ONDERSTEUND |
Opmerking
- De mapping voor de types ARRAY, MAP en STRUCT is gewijzigd in mei 2025. Tabellen die eerder zijn gemaakt, blijven deze typen aan JSON toewijzen.
- De mapping voor TIMESTAMP is gewijzigd in augustus 2025. Synchronisatietabellen die eerder zijn gemaakt, blijven deze toewijzen aan TIMESTAMP ZONDER TIJDZONE.
Ongeldige tekens verwerken
Bepaalde tekens, zoals de null-byte (0x00), zijn toegestaan in STRING, ARRAYof MAPSTRUCT kolommen in Delta-tabellen, maar worden niet ondersteund in Postgres TEXT of JSONB kolommen. Als gevolg hiervan kan het synchroniseren van dergelijke gegevens van Delta naar Postgres leiden tot invoegfouten met foutmeldingen.
org.postgresql.util.PSQLException: ERROR: invalid byte sequence for encoding "UTF8": 0x00
org.postgresql.util.PSQLException: ERROR: unsupported Unicode escape sequence DETAIL: \u0000 cannot be converted to text.
- De eerste fout treedt op wanneer een null-byte wordt weergegeven in een tekenreekskolom op het hoogste niveau, die rechtstreeks wordt toegewezen aan Postgres
TEXT. - De tweede fout treedt op wanneer een null-byte wordt weergegeven in een tekenreeks die is genest in een complex type (
STRUCT,ARRAYofMAP), dat azure Databricks serialiseert alsJSONB. Tijdens de serialisatie worden alle tekenreeksen naar PostgresTEXTgecast, waar\u0000niet is toegestaan.
Oplossing:
U kunt dit probleem op een van de volgende manieren oplossen:
Tekenreeksvelden opschonen
Verwijder of vervang niet-ondersteunde tekens uit alle tekenreeksvelden, inclusief tekens in complexe typen, voordat u naar Postgres synchroniseert.
Als u null-bytes uit een kolom op het hoogste niveau
STRINGwilt verwijderen, gebruikt u deREPLACEfunctie:SELECT REPLACE(column_name, CAST(CHAR(0) AS STRING), '') AS cleaned_column FROM your_table;Converteren naar binair (alleen voor
STRINGkolommen)Als het behouden van de onbewerkte byte-inhoud nodig is, converteert u de betreffende
STRINGkolommen naarBINARY.
Beperkingen en overwegingen
Ondersteunde brontabellen
Afhankelijk van de synchronisatiemodus van een gesynchroniseerde tabel worden verschillende typen brontabellen ondersteund:
Voor de momentopnamemodus moet de brontabel ondersteuning bieden
SELECT *. Voorbeelden hiervan zijn Delta-tabellen, Iceberg-tabellen, weergaven, gerealiseerde weergaven en andere vergelijkbare typen.Voor geactiveerde of continue synchronisatiemodi moet voor de brontabel ookwijzigingsgegevensfeed zijn ingeschakeld.
Naamgevings- en id-beperkingen
-
Toegestane tekens: Postgres-database-, schema- en tabelnamen voor gesynchroniseerde tabellen mogen alleen alfanumerieke tekens en onderstrepingstekens (
[A-Za-z0-9_]+) bevatten. Afbreekstreepjes (-) en andere speciale tekens worden niet ondersteund. - Kolom- en tabel-id's: Vermijd het gebruik van hoofdletters of speciale tekens in kolom- of tabelnamen in de bron-Unity Catalog-tabel. Indien bewaard, moet u deze id's citeren wanneer u ernaar verwijst in Postgres.
Prestaties en synchronisatie
- Synchronisatiesnelheid: Het synchroniseren van gegevens in gesynchroniseerde tabellen kan langzamer zijn dan het rechtstreeks schrijven van gegevens naar het database-exemplaar met een systeemeigen PostgreSQL-client vanwege extra verwerking. De modus Continue synchronisatie vernieuwt gegevens uit de beheerde tabel in Unity Catalog met een minimuminterval van 15 seconden naar de gesynchroniseerde tabel.
- Gebruik van verbinding: Elke tabelsynchronisatie kan maximaal 16 verbindingen met het database-exemplaar gebruiken, wat telt voor de verbindingslimiet van het exemplaar.
- API-idempotentie: Gesynchroniseerde tabel-API's zijn idempotent en moeten mogelijk opnieuw worden geprobeerd als er fouten optreden om te zorgen voor tijdige bewerkingen.
-
Schemawijzigingen: Voor gesynchroniseerde tabellen in
TriggeredofContinuousmodus worden alleen toevoegende schemawijzigingen (bijvoorbeeld het toevoegen van een nieuwe kolom) uit de Unity Catalog-tabellen weergegeven in de gesynchroniseerde tabel. - Dubbele sleutels: Als twee rijen dezelfde primaire sleutel in de brontabel hebben, mislukt de synchronisatiepijplijn, tenzij u ontdubbeling configureert met een Timeseries-sleutel. Het gebruik van een Timeseries Key gaat echter gepaard met prestatieverlies.
- Updatesnelheid: De synchronisatiepijplijn ondersteunt doorlopende schrijfbewerkingen bij ongeveer 1200 rijen per seconde per capaciteitseenheid (CU) en bulksgewijs schrijven bij maximaal 15.000 rijen per seconde per CU.
Capaciteit en limieten
-
Tabellimieten:
- Limiet van 20 gesynchroniseerde tabellen per brontabel.
- Voor elke tabelsynchronisatie kunnen maximaal 16 databaseverbindingen worden gebruikt.
-
Groottelimieten en volledige vernieuwing:
- Als u een gesynchroniseerde tabel volledig vernieuwt, wordt de oude versie in Postgres pas verwijderd nadat de nieuwe tabel is gesynchroniseerd. Beide versies tellen tijdelijk mee voor de limiet voor de grootte van de logische database tijdens het vernieuwen.
- Afzonderlijke gesynchroniseerde tabellen hebben geen limiet, maar de totale limiet voor logische gegevensgrootte voor alle tabellen in het exemplaar is 2 TB. Als u echter vernieuwingen nodig hebt in plaats van volledige tabelrecreatie, raadt Databricks aan om niet meer dan 1 TB te overschrijden.
- Als de niet-gecomprimeerde grootte van de Unity Catalog-tabel de grootte van de database-instantie overschrijdt (2 TB), mislukt de synchronisatie. U moet de gesynchroniseerde tabel in Postgres verwijderen voordat u verder schrijft naar de instance.
Catalogusintegratie
- Catalogusduplicatie: Als u een gesynchroniseerde tabel maakt in een standaardcatalogus die is gericht op een Postgres-database die ook is geregistreerd als een afzonderlijke databasecatalogus, wordt de gesynchroniseerde tabel weergegeven in Unity Catalog onder zowel de standaard- als de databasecatalogus.