Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Lakebase Provisioned je původní nabídka Lakebase, která používá zřízené výpočetní prostředky, které škálujete ručně. Podporované oblasti najdete v tématu Dostupnost oblastí. Nejnovější verzi Lakebase s automatickým škálováním výpočetních prostředků, škálováním na nulu, větvení a okamžitým obnovením najdete v tématu Automatické škálování Lakebase.
Od 12. března 2026 se nové instance Lakebase vytvářejí jako projekty automatického škálování. Stávající zřízené instance se upgradují automaticky na automatické škálování od června 2026. Podrobnosti najdete v tématu Upgrade na automatické škálování LakeBase.
Synchronizované tabulky umožňují obsluhovat data lakehouse prostřednictvím instancí Lakebase s povolenou službou Postgres. Tabulky katalogu Unity se synchronizují s Postgres, aby aplikace mohly dotazovat data Lakehouse přímo s nízkou latencí. Tento proces se běžně označuje jako reverzní ETL. Lakehouse je optimalizovaný pro analýzy a rozšiřování, zatímco Lakebase je určená pro provozní úlohy, které vyžadují rychlé vyhledávací dotazy a transakční konzistenci.
Co jsou synchronizované tabulky?
Synchronizované tabulky umožňují obsluhovat data na úrovni analýz z katalogu Unity prostřednictvím Postgres zřízeného Lakebase a zpřístupnit je aplikacím, které potřebují dotazy s nízkou latencí a úplné transakce ACID. Překlenou mezeru mezi analytickým úložištěm a provozními systémy tím, že vaše data zůstanou připravená k poskytování v aplikacích v reálném čase.
Kanály synchronizace používají spravované kanály Lakeflow k průběžné aktualizaci synchronizované tabulky Katalogu Unity i tabulky Postgres se změnami ze zdrojové tabulky. Po vytvoření je možné synchronizované tabulky dotazovat přímo pomocí nástrojů Postgres.
Klíčové charakteristiky synchronizovaných tabulek jsou následující:
- Spouštějte nad tabulkou v databázi Postgres pouze dotazy pro čtení, abyste zachovali integritu dat se zdrojem
- Automatická synchronizace pomocí spravovaných kanálů Lakeflow
- Dotazovatelné prostřednictvím standardních rozhraní PostgreSQL
- Spravováno prostřednictvím Unity Catalog pro správu, řízení a životní cyklus.
Výstraha
I když je možné upravit synchronizovanou tabulku přímo v Postgresu, Azure Databricks důrazně doporučuje spouštět pouze dotazy pro čtení, aby se chránila integrita dat se zdrojem. Podporované operace se synchronizovanými tabulkami najdete v tématu Podporované operace.
Než začnete
- V libovolném katalogu máte tabulku katalogu Unity.
-
CAN USEMáte oprávnění k instanci databáze.
Vytvoření synchronizované tabulky
uživatelské rozhraní
Pokud chcete synchronizovat tabulku katalogu Unity do Postgres, postupujte takto:
Na bočním panelu pracovního prostoru klikněte na Katalog .
Najděte a vyberte tabulku katalogu Unity, ve které chcete vytvořit synchronizovanou tabulku.
Klikněte na Vytvořit>synchronizovanou tabulku.
Vyberte katalog, schéma a zadejte název tabulky pro novou synchronizovanou tabulku.
- Synchronizované tabulky je možné vytvořit také v katalogech Standard s určitou další konfigurací. Vyberte katalog Standard, schéma a zadejte název tabulky pro nově vytvořenou synchronizovanou tabulku.
Vyberte instanci databáze a zadejte název databáze Postgres, ve které chcete vytvořit synchronizovanou tabulku. Pole databáze Postgres ve výchozím nastavení odkazuje na aktuálně vybraný cílový katalog. Pokud databáze Postgres pod tímto názvem neexistuje, Azure Databricks vytvoří novou databázi.
Vyberte primární klíč. Primární klíč se vyžaduje , protože umožňuje efektivní přístup k řádkům pro čtení, aktualizace a odstranění.
Důležité
Sloupce v primárním klíči nemohou obsahovat hodnotu null v této synchronizované tabulce. Proto jsou řádky s hodnotami null ve sloupcích primárního klíče vyloučeny ze synchronizace.
Pokud mají dva řádky ve zdrojové tabulce stejný primární klíč, vyberte klíč Timeseries a nakonfigurujte odstranění duplicit. Při zadání klíče Timeseries obsahuje synchronizovaná tabulka pouze řádky s nejnovější hodnotou klíče timeseries pro každý primární klíč.
Vyberte režim synchronizace ze snímku, aktivovaného a průběžného režimu. Další informace o jednotlivých režimech synchronizace najdete v tématu Vysvětlení režimů synchronizace.
Zvolte, jestli chcete tuto synchronizovanou tabulku vytvořit z nového nebo existujícího kanálu.
- Pokud vytváříte nový datový kanál a používáte spravovaný katalog, zvolte umístění úložiště pro přechodnou tabulku. Pokud používáte standardní katalog, pracovní tabulka se automaticky ukládá do katalogu.
- Pokud používáte existující kanál, zkontrolujte, jestli nový režim synchronizace odpovídá režimu kanálu.
(Volitelné) Vyberte zásadu použití bez serveru. Pokud chcete vytvořit zásady použití bez serveru, přečtěte si téma Použití atributů se zásadami použití bez serveru. To vám umožní přiřazovat využití fakturace ke konkrétním zásadám využití bez serveru.
- U synchronizovaných tabulek je fakturovatelná entita podkladovým kanálem. Pokud chcete upravit zásady použití, upravte základní objekt kanálu. Viz Konfigurace bezserverového kanálu.
Jakmile je stav synchronizované tabulkyonline, přihlaste se k instanci databáze a zadejte dotaz na nově vytvořenou tabulku. Dotazování tabulky pomocí editoru SQL, externích nástrojů nebo poznámkových bloků
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
# 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"
kroucení
Vytvořte synchronizovanou tabulku v katalogu databází.
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
Vytvořte synchronizovanou tabulku ve standardním katalogu 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
Zkontrolujte stav synchronizované tabulky.
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..."
Vysvětlení režimů synchronizace
Synchronizovanou tabulku je možné vytvořit pomocí jednoho z následujících režimů synchronizace, které určují, jak se data synchronizují ze zdroje do synchronizované tabulky v Postgresu:
| Režim synchronizace | Description | Kdy ho použít | Performance |
|---|---|---|---|
| Snímek | Potrubí se spustí jednou, aby pořídilo snímek zdrojové tabulky a zkopírovalo jej do synchronizované tabulky. Následující běhy kanálu zkopírují veškerá zdrojová data do cílového umístění a atomicky nahradí původní data. Pipeline lze aktivovat ručně, přes API nebo podle plánu. | Zdroj změní >10% řádků na cyklus nebo zdroj nepodporuje změnu datového kanálu (zobrazení, tabulky Iceberg). | 10krát efektivnější než přírůstkové režimy pro tabulky s vysokou četností změn. |
| Aktivované | Potrubí se spustí jednou, aby pořídilo snímek zdrojové tabulky a zkopírovalo jej do synchronizované tabulky. Na rozdíl od synchronizačního režimu Snapshot se při aktualizaci synchronizované tabulky načtou a aplikují pouze změny provedené od posledního spuštění kanálu. Přírůstkovou aktualizaci je možné aktivovat ručně prostřednictvím rozhraní API nebo podle plánu. | Zdrojové řádky se inkrementálně mění podle známé frekvence. Při každé aktualizaci se všechny vložení, aktualizace a odstranění šíří. | Dobrý kompromis mezi náklady a prodlevou při synchronizaci na vyžádání nebo plánované synchronizaci Spouštění častěji než každých 5 minut může stát více než průběžný režim. |
| Nepřetržité | Kanál se spustí jednou, aby pořídil snímek zdrojové tabulky a zkopíroval ho do synchronizované tabulky, pak kanál běží nepřetržitě. Následné změny zdrojové tabulky se postupně použijí na synchronizovanou tabulku v reálném čase. Není nutná žádná ruční aktualizace. | Změny se musí v LakeBase objevit téměř v reálném čase. | Nejnižší prodleva, nejvyšší náklady. |
Poznámka:
Aby bylo možné podporovat režim aktivované nebo průběžné synchronizace, musí mít zdrojová tabulka povolený datový kanál změn. Některé zdroje (jako například Views) nepodporují změnové datové kanály, a proto je lze synchronizovat pouze v režimu snímkování.
Naplánování nebo aktivace následných synchronizací
Počáteční snímek se automaticky spustí při vytváření. V případě režimů Snapshot a Triggered je nutné následné synchronizace explicitně aktivovat. Průběžný režim je automaticky řízený.
Úloha procesu synchronizace tabulky databáze
Úloha potrubí synchronizace tabulek databáze v úlohách Lakeflow spouští potrubí synchronizované tabulky jako krok pracovního postupu. Nakonfigurujte úlohu pomocí triggeru aktualizace tabulky nebo plánu.
Aktivace aktualizací zdrojové tabulky
Aktivuje úlohu při aktualizaci zdrojové tabulky katalogu Unity. V režimu Aktivované se postupně použijí pouze nové změny, které poskytují aktuálnost téměř v reálném čase bez nepřetržitých nákladů na nepřetržitý režim.
- Na bočním panelu klikněte na Pracovní postupy.
- Klikněte na Vytvořit úlohu nebo otevřete existující úlohu.
- Na kartě Úkoly klikněte na + Přidat další typ úkolu.
- V části Příjem dat a transformace vyberte kanál Synchronizace tabulek databáze.
- V poli Kanál vyberte kanál přidružený k synchronizované tabulce.
- V části Plány a triggery klikněte na Přidat aktivační událost.
- Jako typ triggeru vyberte Aktualizovat tabulku .
- V části Tabulky vyberte zdrojovou tabulku katalogu Unity, která se má monitorovat.
- Klikněte na Uložit.
Aktivace podle plánu
Spustí synchronizaci s pevným tempem. Vhodné pro režim Snapshot, kdy noční nebo týdenní úplná aktualizace je obvykle nejúčinnější postup.
- Pokud chcete do úlohy přidat úlohu kanálu synchronizace tabulek databáze , postupujte podle kroků 1 až 5 výše.
- V části Plány a triggery klikněte na Přidat aktivační událost.
- Jako typ triggeru vyberte Scheduled (Naplánovano ).
- Nastavte plán cron a časové pásmo a potom klikněte na Uložit.
Použití sady SDK
Aktivujte spuštění synchronizace programově, například na konci nadřazeného notebooku nebo výpočetního řetězce.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# Get the pipeline ID from the synced table
table = w.database.get_synced_database_table(name="catalog.schema.synced_table")
pipeline_id = table.data_synchronization_status.pipeline_id
# Trigger a sync run
w.pipelines.start_update(pipeline_id=pipeline_id)
Podporované operace
Azure Databricks doporučuje provádět pouze následující operace v Postgres pro synchronizované tabulky, aby se zabránilo nechtěným přepisům nebo nekonzistencí dat:
- Dotazy jen pro čtení
- Vytváření indexů
- Vyřazení tabulky (uvolnění místa po odebrání synchronizované tabulky z katalogu Unity)
I když je možné upravit synchronizované tabulky v Postgres jinými způsoby, může to narušovat kanál synchronizace.
Odstranění synchronizované tabulky
Pokud chcete odstranit synchronizovanou tabulku, musíte ji odstranit z katalogu Unity a pak ji odstranit v instanci databáze. Odstranění synchronizované tabulky z katalogu Unity zruší registraci tabulky a zastaví všechny aktualizace dat. Tabulka však zůstává v podkladové databázi Postgres. Pokud chcete uvolnit místo v instanci databáze, připojte se k instanci a použijte DROP TABLE příkaz.
uživatelské rozhraní
- Na bočním panelu pracovního prostoru klikněte na Katalog .
- Najděte a vyberte synchronizovanou tabulku, kterou chcete odstranit.
- Klikněte na
>Odstranit.
- Připojte se k instanci pomocí
psqleditoru SQL nebo z poznámkového bloku. - Odstraňte tabulku pomocí 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
# 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;
kroucení
# 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;
Vlastnictví a oprávnění
Pokud vytvoříte novou databázi, schéma nebo tabulku Postgres, nastaví se vlastnictví Postgres následujícím způsobem:
- Vlastnictví je přiřazeno uživateli, který vytváří databázi, schéma nebo tabulku, pokud jeho Azure Databricks přihlášení existuje jako role v Postgres. Pokud chcete v Postgresu přidat roli identity služby Azure Databricks, viz Role Postgresu.
- Jinak je vlastnictví přiřazeno vlastníkovi nadřazeného objektu v Postgres (obvykle
databricks_superuser).
Spravovat synchronizovaný přístup k tabulce
Po vytvoření synchronizované tabulky může databricks_superuser synchronizovat tabulku z Postgresu.
databricks_superuser má pg_read_all_data, což této roli umožňuje číst ze všech tabulek. Má také pg_write_all_data oprávnění, které této roli umožňuje zapisovat do všech tabulek. To znamená, že databricks_superuser může také zapisovat do synchronizované tabulky v Postgresu. Lakebase podporuje toto chování při psaní v případě, že potřebujete v cílové tabulce provést naléhavé změny. Databricks ale místo toho doporučuje provádět opravy ve zdrojové tabulce.
Tato
databricks_superuseroprávnění můžete také udělit ostatním uživatelům:GRANT USAGE ON SCHEMA synced_table_schema TO user;GRANT SELECT ON synced_table_name TO user;databricks_superusermůže tato oprávnění odvolat:REVOKE USAGE ON SCHEMA synced_table_schema FROM user;REVOKE {SELECT | INSERT | UPDATE | DELETE} ON synced_table_name FROM user;
Spravovat synchronizované tabulkové operace
Může databricks_superuser spravovat, kteří uživatelé mají oprávnění provádět konkrétní operace v synchronizované tabulce. Podporované operace pro synchronizované tabulky jsou:
CREATE INDEXALTER INDEXDROP INDEXDROP TABLE
Všechny ostatní operace DDL jsou pro synchronizované tabulky odepřeny.
Pokud chcete udělit tato oprávnění dalším uživatelům, databricks_superuser musíte nejprve vytvořit rozšíření pro databricks_auth:
CREATE EXTENSION IF NOT EXISTS databricks_auth;
databricks_superuser Potom může přidat uživatele pro správu synchronizované tabulky:
SELECT databricks_synced_table_add_manager('"synced_table_schema"."synced_table"'::regclass, '[user]');
databricks_superuser může odebrat uživatele ze správy synchronizované tabulky.
SELECT databricks_synced_table_remove_manager('[table]', '[user]');
Mohou se zobrazit všichni manažeři:
SELECT * FROM databricks_synced_table_managers;
Mapování datových typů
Tato tabulka mapování typů definuje, jak se jednotlivé datové typy ve zdrojové tabulce Katalogu Unity mapují na cílovou synchronizační tabulku v Postgresu:
| Typ zdrojového sloupce | Typ sloupce Postgres |
|---|---|
| BIGINT | BIGINT |
| BINÁRNÍ | BYTEA |
| BOOLEAN | BOOLEAN |
| RANDE | DATE |
| DECIMAL(p;s) | ČÍSELNÝ |
| DVOJITÝ | DVOJITÁ PŘESNOST |
| FLOAT | SKUTEČNÝ |
| INT | INTEGER |
| INTERVALQualifier | INTERVAL |
| SMALLINT | SMALLINT |
| ŘETĚZEC | TEXT |
| ČASOVÁ ZNAČKA | ČASOVÉ RAZÍTKO S ČASOVÝM PÁSMEM |
| TIMESTAMP_NTZ | ČASOVÉ RAZÍTKO BEZ ČASOVÉHO PÁSMA |
| TINYINT | SMALLINT |
| GEOGRAPHY(srid) | NEPODPOROVÁNO |
| GEOMETRY(srid) | NEPODPOROVÁNO |
| ARRAY < elementType > | JSONB |
| MAP < keyType, valueType > | JSONB |
| STRUCT < [fieldName: fieldType [NOT NULL][COMMENT str][, ...]] > | JSONB |
| VARIANTA | JSONB |
| OBJEKT | NEPODPOROVÁNO |
Poznámka:
- Mapování pro typy ARRAY, MAP a STRUCT bylo změněno v květnu 2025. Tabulky synchronizované před tímto datem budou i nadále mapovat tyto typy na JSON.
- Mapování pro TIMESTAMP bylo změněno v srpnu 2025. Synchronizované tabulky vytvořené předtím se nadále mapují na ČASOVÉ RAZÍTKO BEZ ČASOVÉHO PÁSMA.
Zpracování neplatných znaků
Některé znaky, například null bajt (0x00), jsou povoleny ve sloupcích STRING, ARRAY, MAP nebo STRUCT v tabulkách Delta, ale nejsou podporovány ve sloupcích Postgres TEXT nebo JSONB. V důsledku toho může synchronizace těchto dat z Delta do Postgres vést k selhání vložení s chybami.
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.
- První chyba nastane, když se v řetězcovém sloupci nejvyšší úrovně zobrazí bajt null, který se mapuje přímo na Postgres
TEXT. - K druhé chybě dochází, když se v řetězci vnořeném uvnitř komplexního typu zobrazí bajt null (
STRUCT,ARRAYneboMAP), který Azure Databricks serializuje jakoJSONB. Během serializace se všechny řetězce přetypují na datový typ PostgresTEXT, kde\u0000není povolen.
Řešení:
Tento problém můžete vyřešit jedním z následujících způsobů:
Sanitizace řetězcových polí
Před synchronizací s Postgresem odeberte nebo nahraďte nepodporované znaky ze všech řetězcových polí, včetně těch uvnitř složitých typů.
Pokud chcete odebrat bajty null ze sloupce nejvyšší úrovně
STRING, použijteREPLACEfunkci:SELECT REPLACE(column_name, CAST(CHAR(0) AS STRING), '') AS cleaned_column FROM your_table;Převod na binární (pouze pro
STRINGsloupce)Pokud je nutné zachovat nezpracovaný obsah bajtů, převeďte ovlivněné
STRINGsloupce naBINARY.
Omezení a důležité informace
Podporované zdrojové tabulky
V závislosti na režimu synchronizace synchronizované tabulky se podporují různé typy zdrojových tabulek:
V režimu snímku musí zdrojová tabulka podporovat
SELECT *. Mezi příklady patří tabulky Delta, tabulky Iceberg, zobrazení, materializovaná zobrazení a další podobné typy.Pro režimy aktivované nebo průběžné synchronizace musí mít zdrojová tabulka taképovolenou změnu datového kanálu .
Omezení pojmenování a identifikátorů
-
Povolené znaky: Názvy databází, schémat a tabulek postgres pro synchronizované tabulky můžou obsahovat pouze alfanumerické znaky a podtržítka (
[A-Za-z0-9_]+). Spojovníky (-) a další speciální znaky nejsou podporovány. - Identifikátory sloupců a tabulek: Nepoužívejte velká písmena nebo speciální znaky v názvech sloupců nebo tabulek ve zdrojové tabulce Katalogu Unity. Pokud jsou tyto identifikátory zachovány, musíte je při odkazování na ně v Postgresu uvozovat.
Výkon a synchronizace
- Rychlost synchronizace: Synchronizace dat do synchronizovaných tabulek může být pomalejší než zápis dat přímo do instance databáze s nativním klientem PostgreSQL kvůli dalšímu zpracování. Režim průběžné synchronizace aktualizuje data ze spravované tabulky Unity Catalog do synchronizované tabulky v minimálním intervalu 15 sekund.
- Využití připojení: Každá synchronizace tabulek může používat až 16 připojení k instanci databáze, což se počítá do limitu připojení instance.
- Idempotence rozhraní API: Synchronizovaná rozhraní API tabulek jsou idempotentní a pokud dojde k chybám, může být potřeba operace opakovat, aby se zajistilo jejich včasné dokončení.
-
Změny schématu: U synchronizovaných tabulek v režimu
TriggeredneboContinuousse v synchronizované tabulce projeví pouze doplňkové změny schématu (například přidání nového sloupce) z tabulek Unity Catalog. - Duplicitní klíče: Pokud mají dva řádky ve zdrojové tabulce stejný primární klíč, kanál synchronizace selže, pokud nenakonfigurujete odstranění duplicitních dat pomocí klíče timeseries. Použití klíče časové řady má však negativní dopad na výkon.
- Rychlost aktualizace: U zřízené služby Lakebase kanál synchronizace podporuje průběžné a řízené zápisy přibližně 1200 řádků za sekundu na jednotku kapacity (CU) a zápisy snímků až do 15 000 řádků za sekundu na CU.
Kapacita a limity
-
Omezení tabulek:
- Limit 20 synchronizovaných tabulek na zdrojnou tabulku
- Každá synchronizace tabulek může používat až 16 databázových připojení.
-
Omezení velikosti a úplná aktualizace:
- Pokud plně aktualizujete synchronizovanou tabulku, stará verze v Postgresu se neodstraní, dokud se nová tabulka nesynchronizuje. Obě verze se během aktualizace dočasně započítávají do limitu velikosti logické databáze.
- Jednotlivé synchronizované tabulky nemají limit, ale celkový limit velikosti logických dat ve všech tabulkách v instanci je 2 TB. Pokud ale vyžadujete aktualizace místo úplné obnovy tabulek, databricks doporučuje, aby nepřekračovala 1 TB.
- Pokud nekomprimovaná velikost tabulky Katalogu Unity překročí limit velikosti instance databáze (2 TB), synchronizace selže. Před zápisem do instance musíte synchronizovanou tabulku v Postgresu odstranit.
Integrace katalogu
- Duplikace katalogu: Vytvoření synchronizované tabulky ve standardním katalogu zaměřeném na databázi Postgres, která je zaregistrovaná také jako samostatný katalog databází, způsobí, že se synchronizovaná tabulka zobrazí v katalogu Unity v rámci standardního i databázového katalogu.