Limitações do conector baseado em consulta
Esta página lista limitações e considerações para conectores baseados em query no Databricks Lakeflow Connect, incluindo requisitos de tabela de origem, recomendações de particionamento e indexação, e recursos que estão disponíveis apenas por meio da API.
Limitações gerais
As seguintes limitações se aplicam a todos os conectores baseados em query, independentemente da origem.
- Os conectores baseados em consultas consultam a fonte em um programador. Eles não proporcionam ingestão contínua. Se você precisar de menor latência, use um conector de banco de dados CDC .
- A coluna do cursor deve ser uma única coluna. Cursores compostos (combinando várias colunas) não são suportados. O valor da coluna deve ser monotonicamente crescente. As linhas com valores de cursor iguais ou inferiores à marca d'água máxima armazenada não são reingeridas.
- Linhas com uma coluna de cursor NULL não são incluídas.
Requisitos e recomendações da tabela de origem
Considere as seguintes características da tabela de origem ao projetar uma carga de trabalho de ingestão baseada em consulta. Eles afetam a forma como uma tabela é ingerida e o desempenho da carga de trabalho.
Chave primária, chave exclusiva e cursor
Conectores baseados em query usam uma chave primária (PK) ou chave exclusiva (UK) para identificar linhas e uma coluna de cursor para detectar alterações. O comportamento de ingestão depende de quais destes estão disponíveis na tabela de origem:
Tabela de origem | Comportamento de ingestão |
|---|---|
PK ou UK no cursor | Snapshot regular e ingestão incremental. |
PK ou UK sem um cursor | Modo de snapshot em lote ( |
Sem PK ou UK, cursor disponível | O conector gera uma chave sintética a partir de todas as colunas. Isso funciona para tabelas sem linhas duplicadas. Para tabelas com linhas totalmente duplicadas, use o modo de armazenamento |
Sem PK ou UK, sem cursor | O conector gera uma chave sintética a partir de todas as colunas. Utilize o modo de armazenamento |
Recomendações de particionamento e indexação
Siga estas recomendações para que o conector possa paralelizar leituras e executar queries incrementais de forma eficiente.
-
O conector seleciona automaticamente uma coluna para particionar a query de origem para leituras paralelas. Ele tenta primeiro a coluna de chave primária principal, desde que seja do tipo numérico, strings, data ou Timestamp. Se essa coluna não for adequada, ele seleciona uma coluna de chave única. Para um particionamento equilibrado, a coluna deve ter:
- Alta cardinalidade : É recomendado ter no mínimo 1.000 valores distintos para tabelas que se aproximam de 1 TB.
- Baixa assimetria de dados : Evite colunas cujos valores se **clusters** fortemente em torno de poucos valores. Colunas distorcidas criam partições superdimensionadas que podem causar tempos limite de consulta e perder o progresso quando uma execução é reiniciada.
Se a coluna selecionada automaticamente não atender a esses critérios, entre em contato com a equipe de contas da Databricks para solicitar uma substituição da coluna de particionamento.
-
Indexe a coluna do cursor no banco de dados de origem com um índice B-tree. Durante a fase incremental, o conector filtra na coluna do cursor (
cursor_column > last_value). Sem um índice B-tree na coluna do cursor, cada leitura incremental verifica a tabela completa, o que degrada o desempenho à medida que a tabela cresce.
Recurso exclusivo da API
Os seguintes recursos são suportados para conectores baseados em consultas, mas apenas usando a API:
- Filtragem de linhas
- Acompanhamento de exclusão reversível (
deletion_condition) - Acompanhamento de exclusão definitiva (Beta). Suportado apenas para colunas de cursor de timestamp.
- Ingestão somente de anexos (modo SCD
APPEND_ONLY) - Catálogo e esquema de múltiplos destinos