Sobre o projeto
duckbridge é um plugin de conector Trino que permite executar consultas SQL em bancos de dados DuckDB – sejam arquivos incorporados ou servidores remotos que utilizam o protocolo Quack RPC – com pushdown de projeções, predicados de domínio, LIMIT/ORDER BY … LIMIT e uma ampla gama de funções escalares. Ao contrário dos conectores típicos baseados em JDBC, o duckbridge empurra as operações suportadas para o DuckDB em vez de puxar os dados para o Trino para avaliação, e garante a correção verificando se o DuckDB avalia as expressões de forma idêntica ao Trino (incluindo NULLs, Unicode e regras de data/fuso horário). O conector é empacotado como um plugin padrão do Trino para implantação no coordenador e nos workers.
**Principais características:**
- **Conectividade:** DuckDB incorporado via JDBC (`jdbc:duckdb:`) ou DuckDB remoto via protocolo Quack (`jdbc:quack://`). Servidores remotos simplesmente executam `CALL quack_serve(…)`; nenhuma instalação no lado do conector é necessária.
- **Pushdown:** Pushdown de projeção e predicado sempre ativado. LIMIT, TopN e um amplo catálogo de funções escalares são empurrados como SQL nativo do DuckDB. Um pequeno conjunto de funções (ex: ICU case folding, hashes criptográficos) que o DuckDB não consegue corresponder nativamente é suportado pela extensão opcional `trino_parity` do DuckDB.
- **Modos de pushdown de string:** Um ajuste configurável controla como os predicados de string são tratados – desde nenhum pushdown (`NULL_ONLY`) até pushdown total com verificação em tempo de execução (`PARITY`). O modo `PARITY` padrão sonda a colação binária e a disponibilidade de extensões do DuckDB na primeira conexão, falhando explicitamente se for detectada divergência.
- **Extensão:** A extensão `trino_parity` é publicada no repositório de extensões comunitárias do DuckDB. Para o modo incorporado, os binários assinados para Linux estão incluídos no release; em outras plataformas, você pode instalá-la uma vez ou executar no modo `GUARDED`. Servidores remotos devem carregar a extensão na inicialização (ou fornecer um caminho no lado do servidor).
- **Varredura de dados opcional:** Funções de tabela experimentais para conjuntos de dados Lance e arquivos Vortex, incluindo busca vetorial, de texto completo e híbrida, podem ser habilitadas por catálogo.
- **Gerenciamento dinâmico de catálogo:** Catálogos podem ser criados em tempo de execução via `CREATE CATALOG … USING duckbridge` quando o gerenciamento dinâmico de catálogos do Trino está habilitado.
- **Mapeamento de tipos:** Mapeamento sem perdas para tipos DuckDB, incluindo UUID, `TIMESTAMPTZ`, `UBIGINT` (como `DECIMAL(20,0)`) e `VARBINARY`. Tipos não suportados, como `HUGEINT`, são rejeitados.
O Duckbridge foi construído para o Trino 483 e incorpora o DuckDB 1.5.5. O projeto inclui um motor colunar experimental baseado em Arrow para transferência direta de dados, e os planos futuros incluem pushdown de agregados e uma variante compatível com Doris.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.