Hoje lançamos a versão 2.0 do driver ADBC do GizmoSQL, a maior mudança na experiência dos clientes GizmoSQL desde o lançamento do driver. O núcleo foi reescrito em Go e compilado como uma biblioteca compartilhada nativa, enquanto o pacote Python que você já conhece passou a ser uma camada fina sobre ela. Mesmos recursos, mesma API — agora qualquer linguagem com um gerenciador de drivers ADBC recebe a experiência completa do GizmoSQL, não só Python.
O novo endereço do projeto é github.com/gizmodata/gizmosql-adbc. O repositório anterior, exclusivo de Python 1.x (adbc-driver-gizmosql), foi arquivado. Mas o nome do pacote no PyPI não mudou, e a versão 2.0 foi projetada para substituir a anterior sem adaptações.
Por que reescrever em Go?
O driver 1.x era uma biblioteca Python. Funcionava muito bem, com fluxos OAuth/SSO no navegador, roteamento automático de DDL/DML e perfis de conexão. Mas todos esses recursos estavam no código Python e, portanto, disponíveis somente aos usuários de Python. Quem se conectava por Go, R, Rust ou C# recorria ao driver Flight SQL genérico e perdia os comportamentos específicos do GizmoSQL.
A arquitetura ADBC oferece uma solução melhor: implementar o driver uma vez como biblioteca compartilhada nativa e permitir que cada linguagem a carregue pelo gerenciador de drivers ADBC. Go é uma escolha natural: é a linguagem do driver Apache Arrow ADBC Flight SQL original, permite compilação cruzada para todas as plataformas do GizmoSQL e produz uma única biblioteca autossuficiente, sem dependências de runtime.
Essa é a versão 2.0: um núcleo Go para todas as linguagens. Python, Go, R, C/C++, C#, Rust e JavaScript carregam o mesmo driver e recebem o mesmo comportamento.
Os recursos do GizmoSQL, agora em toda parte
Tudo o que tornava o driver Python 1.x mais agradável que uma conexão Flight SQL genérica agora está no núcleo compartilhado:
- Autenticação OAuth / SSO — autenticação por provedor de identidade externo, com fluxo no navegador para uso interativo e modo sem interface para CI e serviços. Entre com o IdP da sua empresa em vez de distribuir senhas.
- Detecção automática de DDL/DML —
CREATE,INSERT,UPDATE,DELETEe semelhantes são detectados e encaminhados pelo caminhoDoPutdo Flight SQL para execução imediata no servidor. Você não precisa mais tentar entender por que sua "consulta" DDL retornou um conjunto vazio. - Suporte a RETURNING — os resultados de
INSERT / UPDATE / DELETE ... RETURNINGsão materializados imediatamente e retornados como qualquer outro conjunto de resultados. - Esquema de URI
gizmosql://— uma URI de conexão simples, com TLS ativado por padrão. - Perfis de conexão ADBC — os perfis TOML reutilizáveis introduzidos na 1.2.0 continuam disponíveis, com substituição por variáveis de ambiente para manter credenciais fora do código.
- Ingestão em massa — cargas de alta vazão com preservação de geometria via
cursor.adbc_ingest. - Observabilidade OpenTelemetry — rastreamento e logs herdados da base do driver Flight SQL original.
Python: mesmo pacote, atualização compatível
O pacote Python mantém seu nome no PyPI, e a API 2.x é compatível byte a byte com o driver 1.x. Seu código continua funcionando:
pip install --upgrade adbc-driver-gizmosql1from adbc_driver_gizmosql import dbapi as gizmosql
2
3with gizmosql.connect("gizmosql://localhost:31337",
4 username="gizmosql_username",
5 password="gizmosql_password") as conn:
6 with conn.cursor() as cur:
7 cur.execute("SELECT 42 AS answer")
8 print(cur.fetch_arrow_table())Por dentro, o wheel agora inclui a biblioteca compartilhada compilada em Go para sua plataforma e a carrega pelo gerenciador ADBC. Do ponto de vista do seu código, nada mudou.
Go: um cliente nativo completo
Desenvolvedores Go recebem seu próprio driver, com versionamento independente por tags go/vX.Y.Z:
go get github.com/gizmodata/gizmosql-adbc/go@latestdrv := gizmosql.NewDriver(memory.DefaultAllocator)
db, err := drv.NewDatabase(map[string]string{
"uri": "gizmosql://localhost:31337",
"username": "gizmosql_username",
"password": "gizmosql_password",
})Outras linguagens: o gerenciador de drivers
Para R, Rust, C#, C/C++ e JavaScript, instale a biblioteca compartilhada e referencie-a no gerenciador de drivers ADBC da linguagem com driver="gizmosql". Uma definição de driver, um conjunto de comportamentos, todos os ambientes de execução.
Todo o ecossistema de clientes acompanhou a mudança
Reescrever um driver só é útil se as ferramentas que você usa acompanharem a mudança. A partir de hoje, toda a família de pacotes e utilitários cliente do GizmoSQL foi atualizada para o driver 2.0:
- dbt-gizmosql — adaptador dbt
- sqlmesh-gizmosql — adaptador SQLMesh
- qgizmosql — plugin QGIS para dados espaciais
- sqlframe-gizmosql — API DataFrame do PySpark
- @gizmodata/gizmosql-client — cliente Node.js, que também sustenta o novo GizmoSQL UI
- …e o restante das integrações e adaptadores
Se você usa alguma dessas ferramentas, basta atualizar o pacote; o novo driver vem junto.
Atualizando da versão 1.x
Para usuários Python: pip install --upgrade adbc-driver-gizmosql. É só isso. A API é compatível, os perfis de conexão são preservados e as URIs grpc+tls:// continuam funcionando junto com o novo esquema gizmosql://.
Atualize seus favoritos: o repositório antigo, github.com/gizmodata/adbc-driver-gizmosql, agora está arquivado e somente para leitura. Issues, discussões e versões passam a ficar em github.com/gizmodata/gizmosql-adbc. O driver continua licenciado sob Apache 2.0, como o próprio GizmoSQL Core.
Experimente
Inicie um servidor GizmoSQL, execute pip install adbc-driver-gizmosql (ou go get para o módulo Go) e aponte-o para gizmosql://your-host:31337. Se encontrar algum problema, fale conosco no Slack da comunidade GizmoData. Queremos saber o que você está construindo.
— Philip Moore
Fundador, GizmoData