PT EN
Voltar ao site

Drivers JDBC — Catálogo Oficial e Governança

Baixar driver de banco em site duvidoso, descobrir a incompatibilidade só em produção e nunca saber se aquele JAR carrega uma vulnerabilidade conhecida: esse era o custo invisível de conectar cada fonte nova. O DATTA elimina esse risco com um catálogo oficial de 39 drivers JDBC e uma esteira de validação de segurança pela qual todo JAR passa — baixado automaticamente ou enviado por você — antes de ficar disponível para qualquer conexão.

A gestão fica em SistemaDrivers JDBC, restrita a administradores. Este guia cobre suas responsabilidades sobre o catálogo: instalação inicial, envio manual, validação, ciclo de vida e monitoramento.


Quem faz o quê

MomentoQuem executaO que acontece
Instalação da plataformaScript setup-datta.sh (Fase 7)Baixa, valida e registra os drivers de licença aberta
Driver com licença click-throughAdministradorBaixa do site do fornecedor e envia pela tela
Depois de instaladoAdministrador, pela telaAprova, descontinua, coloca em quarentena, remove, revalida

A plataforma não faz mais bootstrap automático no backend — toda a inicialização foi movida para o setup-datta.sh (commit 277661e, "refactor: move all initial setup from backend to setup-datta.sh"). Uma vez instalados, os drivers passam a ser gerenciados em runtime pela tela e pela API de administração.


O que já vem no catálogo (39 drivers)

  • Relacionais open-source: PostgreSQL, MySQL, MariaDB, SQLite, H2, HSQLDB, Apache Derby, CockroachDB (usa o driver PostgreSQL) e TimescaleDB (idem).
  • Analíticos / colunares: DuckDB, ClickHouse, Apache Druid (via Avatica), Apache Pinot, Apache Doris e StarRocks (ambos compatíveis com MySQL).
  • Data warehouse / nuvem: Snowflake, Amazon Redshift, Azure Synapse (compatível com SQL Server), Databricks (download manual), IBM Db2.
  • Enterprise: Oracle (manual), Microsoft SQL Server, SAP HANA, Teradata (manual), IBM Informix (manual), SAP ASE jConnect (manual), Firebird (Jaybird), Vertica, Exasol.
  • Query engines: Trino, PrestoDB, Apache Spark Thrift (via Hive JDBC), Apache Hive, Apache Impala (Cloudera, manual), Apache Phoenix, Apache Drill.
  • Séries temporais: QuestDB (compatível com PostgreSQL), Apache IoTDB, InfluxDB 3.x (via Flight SQL).

São 39 entradas no catálogo oficial, versionado por uma tag de versão que o desenvolvedor incrementa a cada mudança estrutural (campo novo, troca de licença).

Dialetos SQL: você escreve uma vez, a plataforma traduz

Cada driver do catálogo tem um dialeto correspondente registrado na biblioteca de dialetos da plataforma — hoje 39 dialetos, alguns compartilhados (CockroachDB reaproveita o do PostgreSQL, Synapse o do SQL Server). O dialeto absorve as diferenças de cada fornecedor:

  • introspecção de catálogo (ALL_TABLES contra information_schema);
  • sensibilidade a maiúsculas (Oracle trabalha em caixa alta);
  • aspas em identificadores;
  • paginação (LIMIT/OFFSET, FETCH ou ROWNUM);
  • tipos de data (TIMESTAMP, DATETIME2, TIMESTAMPTZ);
  • sintaxe de MERGE/UPSERT.

Regra de arquitetura: lógica específica de fornecedor mora no dialeto e em nenhum outro lugar.


Instalação inicial (Fase 7 do setup-datta.sh)

Quando o operador roda ./setup-datta.sh, a Fase 7 — "Download e upload dos drivers JDBC oficiais" — faz, em sequência:

  1. Autentica como administrador para obter as credenciais da sessão.
  2. Para cada driver do catálogo que não seja alias nem exija download manual: baixa o JAR da URL oficial do fornecedor para o diretório de logs da instalação e o envia à plataforma junto dos metadados (chave, versão, fornecedor). O endpoint de envio de driver está descrito na referência de API.
  3. A esteira de validação roda na hora; passando, o driver é registrado como Aprovado.
  4. Drivers de licença click-through são pulados com aviso — cabe a você baixá-los e enviá-los pela tela (próxima seção).

A flag --skip-drivers pula a Fase 7 inteira: use quando precisar rodar o setup de novo sem refazer os downloads.


Download manual: drivers com licença click-through

Alguns fornecedores exigem aceite explícito de licença no próprio site. Para esses, o download automático é pulado e o driver aparece na tabela com a badge Download manual e link direto para a página oficial:

DriverPágina oficialObservação
Oracle (OTN)<https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html>Aceitar o OTN License Agreement
Databricks<https://www.databricks.com/spark/jdbc-drivers-download>Login Databricks + EULA
Teradata<https://downloads.teradata.com/download/connectivity/jdbc-driver>Registro no portal
Cloudera Impala<https://www.cloudera.com/downloads/connectors/impala/jdbc.html>Login Cloudera + licença comercial
IBM Informix<https://www.ibm.com/support/pages/download-information-informix-jdbc-driver-version-4>IBM ID + IPLA
SAP ASE (Sybase)<https://help.sap.com/docs/SAPASEJCONNECT>Parte do SAP ASE client
BigQuery (Simba)<https://cloud.google.com/bigquery/docs/reference/odbc-jdbc-drivers>Apenas se você exigir JDBC — o DATTA usa conector nativo

Passo a passo: enviando o driver Oracle

  1. Abra a página oficial pelo link da linha do driver e baixe o JAR, aceitando a licença OTN.
  2. Em SistemaDrivers JDBC, clique em Adicionar driver.
  3. Selecione o arquivo .jar e informe nome, fornecedor, versão e a classe do driver.
  4. Confirme o envio. A esteira de validação roda na hora; passando, o driver entra como Aprovado e já pode ser usado em novas conexões.

Se o mesmo JAR já tiver sido enviado antes, a plataforma reconhece pelo hash SHA-256 e reaproveita o registro existente, sem criar duplicata — o evento fica registrado como DRIVER.UPLOAD_DEDUP.


Validação de segurança: nenhum JAR entra sem passar pela esteira

Todo JAR — vindo do setup ou enviado por você — atravessa cinco etapas em sequência:

  1. Análise estática de bytecode: classes com chamadas perigosas (Runtime.exec, ProcessBuilder, System.loadLibrary) são rejeitadas, assim como JARs pequenos demais para serem um driver real.
  2. Varredura de vulnerabilidades contra a base local de CVEs (Trivy / Grype): achado HIGH ou CRITICAL não mitigado bloqueia o driver.
  3. Verificação de assinatura digital, quando o fornecedor publica .asc ou hash .sha256.
  4. Teste de carga isolado: a classe do driver é carregada em um carregador de classes isolado, para garantir que ela sobe sem exceção não tratada antes de qualquer conexão real.
  5. Extração segura do JAR e inferência de metadados, que completam a ficha do driver.

Falhou em qualquer etapa? O resultado da validação é registrado com o motivo e o driver vai para Quarentena — nunca fica exposto para uso.


Ciclo de vida e governança

Os três status

StatusSignificado
AprovadoEm uso, disponível para toda a plataforma
DescontinuadoAinda carrega, mas não é recomendado; a tela mostra a badge
QuarentenaBloqueado — qualquer tentativa de uso gera erro e registro de auditoria

Driver recém-enviado que passa na validação vai direto para Aprovado; falha de validação vai direto para Quarentena. Não existe estado intermediário de revisão pendente.

Ações do administrador

AçãoEfeito
AprovarPromove um driver em quarentena a aprovado — é um override da validação, e a justificativa fica na auditoria
DescontinuarMarca o driver como descontinuado; novas conexões passam a receber aviso em português desencorajando o uso
Colocar em quarentenaBloqueia o driver. Havendo conexões ativas, a auditoria registra o impacto e você tem 48 horas para migrar ou revogar
RemoverExclusão definitiva, permitida apenas sem conexões ativas (ou forçada, com justificativa na auditoria)
RevalidarRoda a esteira de validação de novo sobre um driver já instalado — faça isso sempre que a base local de CVEs for atualizada

Documentação do fornecedor para o Copilot

A plataforma reindexa a documentação do fabricante de cada driver para alimentar as respostas sobre a fonte. A ingestão roda em segundo plano: o pedido responde na hora e o progresso é consultado em seguida (RUNNING / COMPLETED / FAILED) — os dois endpoints estão na referência de API. O rastreamento baixa as páginas de um mesmo nível em paralelo, controlado por datta.doc-ingest.crawl-concurrency (padrão 6), com teto global de tempo em datta.doc-ingest.crawl-timeout-seconds (padrão 120).

Trilha de auditoria

Toda ação de governança emite evento:

EventoQuando
DRIVER.UPLOADJAR enviado e validado
DRIVER.UPLOAD_DEDUPJAR idêntico a um já instalado (hash SHA-256 coincide)
DRIVER.APPROVEPromovido a aprovado
DRIVER.DEPRECATEMarcado como descontinuado
DRIVER.QUARANTINEBloqueado
DRIVER.DELETERemovido fisicamente
DRIVER.FETCH_DOCSDocumentação do fornecedor reindexada
DRIVER.FETCH_DOCS_FAILEDIngestão de documentação falhou (com URL e erro)
DRIVER.RESCANEsteira rodada novamente sobre driver existente

Monitoramento

As métricas Micrometer de drivers ficam no endpoint de métricas Prometheus da plataforma e cobrem:

  • latência de validação — pelas métricas de requisição HTTP, ou por métrica dedicada quando exposta;
  • quantidade de drivers por statusdatta_drivers_by_status quando implementada; caso contrário, derivada de leitura do grafo;
  • resultados da esteiradatta_drivers_validation_outcome.

Três sinais merecem alerta:

SinalO que costuma significar
Pico de DRIVER.QUARANTINE em pouco tempoCVE novo publicado afetando dependências já instaladas — revalide o parque
DRIVER.DELETE em operaçãoDeve ser raro; confira na auditoria quem removeu e por quê
Nenhum DRIVER.UPLOAD há muitos dias, com catálogo esperando entrada novaProvável falha na Fase 7 do setup-datta.sh

Fontes nativas ficam fora do catálogo JDBC

Fontes com capacidades que um driver JDBC genérico não alcança usam conectores nativos do motor de execução da plataforma — de propósito. Empacotar um wrapper JDBC para elas seria trocar o melhor de cada engine por um mínimo denominador comum:

FonteConector nativoCapacidade que se perderia via JDBC
Neo4jorg.neo4j:neo4j-java-driverCypher, caminhos de comprimento variável, algoritmos de grafo (GDS)
Apache Cassandracom.datastax.oss:java-driver-corePaginação assíncrona, balanceamento token-aware
MongoDBorg.mongodb:mongodb-driver-syncPipeline de agregação, change streams
BigQuerygoogle-cloud-bigquery + Storage Read APILeitura 10–100x mais rápida, estimativa de custo em dry-run
OpenSearchorg.opensearch.client:opensearch-javaBusca vetorial (KNN), highlight, scripting
Elasticsearchcliente oficialKNN de primeiro nível, autenticação por ApiKey
Kafka / Pulsarclientes nativosStreaming contínuo e captura de mudanças (CDC)

Drivers JDBC para essas fontes não entram no catálogo oficial.


Incluir um driver novo no catálogo oficial é mudança de código, feita na lista oficial de drivers da plataforma:

  1. Declare a entrada com a chave do driver.
  2. Preencha nome, fornecedor, versão, classe do driver, página de origem, URL da documentação, tipo de licença, exemplo de URL JDBC, porta padrão e tags.
  3. Se o JAR puder ser baixado direto (Maven Central, por exemplo), informe a URL de download; quando o fornecedor publica .sha256, registre o hash esperado.
  4. Licença click-through: marque o driver como de download manual e como exigindo aceite de licença.
  5. Alias: aponte para a chave base (CockroachDB aponta para postgresql).
  6. Registre o dialeto correspondente na biblioteca de dialetos, se ainda não existir.
  7. Incremente a tag de versão do catálogo.
  8. Ajuste a Fase 7 do setup-datta.sh apenas se o driver exigir tratamento especial — o laço genérico cobre o caso normal.
  9. Sempre que possível, adicione um teste da esteira de validação.

Referências

  • Runbook de streaming (Kafka/Debezium): Runbook — Streaming (F9).
  • Operação das conexões, incluindo backup e reencriptação de credenciais: Runbook — Gestão de Conexões.
  • Endpoints de catálogo, envio e documentação de drivers: referência de API.