10 integrações de código aberto

    Integrações do Hardcharger™

    Drivers para Python, Go, Java e JavaScript, um cliente de linha de comando e uma interface web, um servidor MCP para o Claude, dbt, DataFrames no estilo PySpark e replicação a partir de outros bancos de dados. Todos falam Warp SQL, então os resultados chegam em Apache Arrow, e todos são Apache-2.0.

    01Drivers

    Driver para Python, Go e ADBC

    adbc-driver-hardcharger: consulte o Hardcharger a partir de Python, Go, C/C++, R, Rust ou qualquer linguagem ADBC.

    Um driver nativo em Go, construído sobre o driver ADBC do Warp SQL e compilado em uma única biblioteca compartilhada que toda linguagem ADBC carrega. O Python ganha uma interface DB-API 2.0 com resultados em Arrow; programas em Go o importam diretamente; C/C++, R e Rust o carregam por meio de um gerenciador de drivers ADBC como driver = "hardcharger".

    Sobre o Warp SQL, ele acrescenta o que é específico do Hardcharger: URIs hardcharger://, tags de consulta e de sessão, configurações hardcharger.*, login pelo navegador (SSO) e login por certificado de cliente. Por padrão, resultados grandes são lidos por várias conexões ao mesmo tempo e as ingestões em massa são enviadas em partes paralelas.

    O que oferece

    • URIs hardcharger://, porta 31337 por padrão, TLS por padrão (?tls=false para HTTP simples)
    • Parâmetros de bind e resultados em Arrow de ponta a ponta
    • Ingestão em massa (adbc_ingest) em partes paralelas, tudo ou nada
    • Senha, token, login pelo navegador (auth_type="external") e mTLS
    • Leituras particionadas e lz4/zstd escolhidos a partir da latência de ida e volta do link
    • Pacote Go github.com/gizmodata/hardcharger-adbc/go/v2/hardcharger
    Instalação
    pip install adbc-driver-hardcharger
    # Go
    go get github.com/gizmodata/hardcharger-adbc/go/v2
    Consulta
    1from adbc_driver_hardcharger import dbapi as hardcharger
    2
    3with hardcharger.connect(uri="hardcharger://localhost?tls=false", username="hardcharger", password="change-me") as conn:
    4    with conn.cursor() as cur:
    5        cur.execute(operation="SELECT 42 AS answer, ? AS greeting", parameters=["hello"])
    6        print(cur.fetch_arrow_table())

    Python 3.11 ou posterior. pip install "hardcharger[adbc]" também instala o pacote Python do servidor.

    02Drivers

    Driver JDBC

    hardcharger-jdbc: o Hardcharger para aplicações Java, DBeaver e outras ferramentas JDBC, em um único jar.

    Um único jar independente para Java 17 e posterior, sem gRPC, Netty nem protobuf dentro: URLs jdbc:hardcharger://host[:port] sobre o driver JDBC do Warp SQL. Ele se apresenta como “Hardcharger JDBC Driver” às ferramentas que mostram esse nome, e o DatabaseMetaData informa o servidor como Hardcharger.

    O que oferece

    • URLs jdbc:hardcharger://, porta 31337 por padrão
    • TLS por padrão (useEncryption=false para HTTP simples)
    • Leituras particionadas (resultPartitions, 8 por padrão)
    • Login por senha, token e mTLS
    • Classe do driver com.gizmodata.hardcharger.jdbc.HardchargerDriver
    Coordenadas Maven
    <dependency>
      <groupId>com.gizmodata</groupId>
      <artifactId>hardcharger-jdbc</artifactId>
      <version><!-- the release version --></version>
    </dependency>
    Consulta
    Properties properties = new Properties();
    properties.setProperty("user", "hardcharger");
    properties.setProperty("password", "change-me");
    properties.setProperty("useEncryption", "false"); // plain HTTP on localhost
    try (Connection connection = DriverManager.getConnection("jdbc:hardcharger://localhost", properties);
         ResultSet rows = connection.createStatement().executeQuery("SELECT 42 AS answer")) {
      rows.next();
      System.out.println(rows.getInt("answer"));
    }

    Java 17 ou posterior. A ingestão em massa não tem API JDBC; use o driver ADBC para cargas.

    03Drivers

    Cliente JavaScript e TypeScript

    @gizmodata/hardcharger: URLs hardcharger:// na entrada, Arrow na saída, no Node, em navegadores, no Deno, no Bun e no Cloudflare Workers.

    Uma camada fina sobre o @gizmodata/warp-sql, o cliente JavaScript genérico para qualquer servidor Warp SQL, que ele reexporta. fetch simples e Apache Arrow JS, sem código nativo e sem gRPC, então o mesmo código roda em um servidor, em uma página no navegador (permita a origem dela com --cors-origins) ou na borda.

    O que oferece

    • Tabelas Arrow JS, ou streams de record batches para resultados grandes
    • Parâmetros de bind, transações e ingestão em massa
    • Resultados divididos entre várias conexões (8 no Node, 4 em navegadores)
    • Cancelamento com um AbortSignal
    • Login por senha, token e mTLS
    Instalação
    npm install @gizmodata/hardcharger apache-arrow
    Consulta
    import { connect } from "@gizmodata/hardcharger";
    
    const conn = await connect({ url: "hardcharger://localhost?tls=false", username: "hardcharger", password: "change-me" });
    const table = await conn.query("SELECT 42 AS answer, ? AS greeting", ["hello"]);
    console.log(table.toArray().map((row) => row.toJSON()));
    await conn.close();

    Node 22.19 ou posterior; apache-arrow é uma dependência peer.

    04Ferramentas

    Cliente de linha de comando hardcharger

    Um shell SQL interativo e uma ferramenta de scripts, incluídos em todo servidor.

    O hardcharger vem ao lado do hardcharger-server em todo tarball, MSI e imagem de contêiner. Execute-o sem instrução para um shell interativo com histórico, autocompletar com tab, realce de sintaxe e paginador, ou passe uma instrução, um arquivo ou um heredoc para scripts: o status de saída é 1 quando uma instrução falha.

    O que oferece

    • Saída em tabelas, CSV, JSON ou Markdown
    • Ctrl-C cancela a instrução em execução e mantém o shell
    • Resultados grandes lidos por até 8 conexões, em ordem
    • Login pelo navegador (--auth-type external) e certificados de cliente
    • URIs hardcharger:// com as regras do driver Python
    Vem com o servidor
    curl https://install.hardcharger.gizmodata.com | sh
    Execute uma instrução
    export HARDCHARGER_PASSWORD='change-me'
    hardcharger --host localhost --tls=false --username hardcharger --csv \
      --command "SELECT 42 AS answer"
    05Ferramentas

    Interface web

    Um editor SQL, grade de resultados, navegador de esquemas e upload de arquivos, integrados ao servidor.

    Inicie o servidor com --web-ui e abra /ui na própria porta e no próprio certificado dele. Cada aba do editor é uma sessão própria; o navegador de esquemas e o autocompletar mostram a cada usuário apenas o que os papéis dele permitem; Upload data carrega arquivos CSV, TSV, Excel, Parquet, JSON ou Arrow em uma tabela; e a página API mostra a API Warp SQL do servidor no Swagger UI.

    O que oferece

    • Até 20 abas de editor, scripts com uma aba de resultado por conjunto de resultados
    • Grade de resultados de até um milhão de linhas, cópia para Excel ou Google Sheets
    • Upload data com prévia e tipos de coluna editáveis
    • Downloads em CSV, TSV, JSON, Excel, Parquet ou Arrow
    • Login por SSO e por certificado
    Ative
    HARDCHARGER_ADMIN_PASSWORD='change-me' hardcharger-server --web-ui --database demo.duckdb
    # open http://localhost:31337/ui
    06IA e agentes

    Servidor MCP do Hardcharger™

    Explore e consulte o Hardcharger a partir do Claude Desktop, do Claude Code e de qualquer cliente MCP.

    Um servidor Model Context Protocol e extensão do Claude Desktop, a adaptação para o Hardcharger do servidor MCP do GizmoSQL. O Claude lista catálogos, esquemas e tabelas, descreve colunas, explica planos e executa SQL somente leitura em um servidor Hardcharger que você consiga acessar, e ele pode atender uma equipe via Streamable HTTP protegido por OAuth.

    O que oferece

    • Somente leitura por padrão; gravações apenas quando você as permite
    • Login por senha, token, mTLS e navegador
    • Várias conexões, alternáveis em uma mesma conversa
    • Um conector remoto via Streamable HTTP com OAuth 2.1
    • JavaScript puro, construído sobre o @gizmodata/hardcharger
    Claude Code
    claude mcp add hardcharger \
      -e HARDCHARGER_URI='hardcharger://localhost?tls=false' \
      -e HARDCHARGER_USERNAME=hardcharger \
      -e HARDCHARGER_PASSWORD=change-me \
      -- npx -y @gizmodata/hardcharger-mcp

    Node 22.19 ou posterior para o npx. Claude Desktop: instale o hardcharger-mcp.mcpb a partir das versões publicadas, sem precisar de Node.

    07Transformação

    dbt-hardcharger

    Construa o seu projeto dbt no Hardcharger: DuckDB 2.0 remoto, via Warp SQL.

    O adaptador dbt para o Hardcharger, a adaptação do dbt-gizmosql, que passa na mesma suíte de testes de adaptadores dbt. Ele se conecta pelo adbc-driver-hardcharger, então os modelos rodam no servidor e os seeds são carregados pelo próprio leitor de CSV do DuckDB.

    O que oferece

    • Todas as materializações, inclusive incremental (append, delete+insert, merge, microbatch) e snapshots
    • Modelos Python, executados localmente no DuckDB e carregados em massa
    • Arquivos externos gravados pelo servidor
    • Catálogos DuckLake, restrições aplicadas, persist_docs
    • Login por senha, token, mTLS e navegador
    Instalação
    pip install dbt-hardcharger
    profiles.yml
    shop:
      target: dev
      outputs:
        dev:
          type: hardcharger
          host: localhost
          port: 31337
          user: hardcharger
          password: "{{ env_var('HARDCHARGER_PASSWORD') }}"
          tls: false        # a local server without TLS
          database: demo
          schema: main
          threads: 4

    dbt-core 1.12, Python 3.11 ou posterior. A configuração grants ainda não é aplicada; use GRANT em um post-hook.

    08DataFrames

    SQLFrame para o Hardcharger

    Execute o seu código de DataFrame do PySpark no Hardcharger, sem cluster Spark.

    O backend do Hardcharger para o SQLFrame: transformações no estilo PySpark viram SQL do DuckDB que roda no servidor, então jobs de Spark e Databricks migram trocando o construtor da sessão. activate() permite que imports de pyspark sem alterações rodem no Hardcharger.

    O que oferece

    • A API de DataFrame do PySpark, mais activate() para imports sem alterações
    • Carga em massa com session.ingest()
    • spark.read.json / csv / parquet locais no cliente
    • Todos os métodos de login
    • Traces do OpenTelemetry
    Instalação
    pip install sqlframe-hardcharger
    Uma sessão
    1from sqlframe_hardcharger import HardchargerSession, functions as F
    2
    3spark = HardchargerSession.builder.config(map={
    4    "hardcharger.uri": "hardcharger://localhost?tls=false",
    5    "hardcharger.username": "hardcharger",
    6    "hardcharger.password": "change-me",
    7}).getOrCreate()
    8
    9spark.table("nation").groupBy("n_regionkey").agg(F.count("*").alias("nations")).show()

    Python 3.11 ou posterior. UDFs em Python não podem rodar no servidor.

    09Carga de dados

    adbc-replicate-hardcharger

    Copie esquemas inteiros do Oracle, PostgreSQL, Snowflake, DuckDB ou de outro Hardcharger, de forma agendada.

    Replicação de ADBC para ADBC no Hardcharger, guiada por configuração. Liste em um arquivo YAML os esquemas, as tabelas e as visões a copiar; ele os transmite como Arrow, mascara colunas dentro da origem, lê todas as tabelas no mesmo instante, copia apenas o que mudou nas execuções seguintes e traduz visões para SQL do DuckDB. Execute-o pela linha de comando, pela imagem de contêiner ou por um CronJob do Helm.

    O que oferece

    • Máscaras avaliadas dentro da origem: os valores brutos nunca saem dela
    • Snapshots consistentes e detecção de mudanças por fingerprint
    • Visões traduzidas com sqlglot
    • Trocas paralelas e atômicas por tabela e um log de execuções no destino
    • Imagem de contêiner e chart do Helm
    Instalação
    pip install "adbc-replicate-hardcharger[all]"   # or [oracle], [postgresql], [snowflake], [duckdb]
    replicate.yaml
    version: 1
    name: shop-to-hardcharger
    
    source:
      type: duckdb
      path: ./shop.duckdb
    
    target:
      type: hardcharger
      uri: hardcharger://localhost?tls=false
      username: hardcharger
      password: ${HARDCHARGER_PASSWORD}
    
    objects:
      - db_schemas: [sales]
    
    columns:
      - tables: [sales.customers]
        mask:
          ssn: hash
    
    parallelism: 2

    Execute com adbc-replicate-hardcharger run --config replicate.yaml (também plan, validate e test-connection). Python 3.11 ou posterior.

    10Clientes SQL

    DBeaver

    Navegue e consulte o Hardcharger no DBeaver por meio do driver JDBC.

    Adicione o jar JDBC do Hardcharger no Driver Manager do DBeaver e conecte-se com URLs jdbc:hardcharger://. O suporte integrado ao Hardcharger no DBeaver está a caminho; até lá, a configuração manual leva um minuto.

    O que oferece

    • Classe do driver com.gizmodata.hardcharger.jdbc.HardchargerDriver
    • Modelo de URL jdbc:hardcharger://{host}[:{port}][/{database}]
    • Porta padrão 31337
    • useEncryption=false para um servidor local sem TLS

    Outras ferramentas JDBC usam o mesmo jar, a mesma classe de driver e a mesma URL.

    Por qual driver do Hardcharger devo começar?

    Para Python, Go, R, Rust ou C/C++, use o driver ADBC (pip install adbc-driver-hardcharger). Para Java e ferramentas JDBC como o DBeaver, use o hardcharger-jdbc. Para Node, navegadores, Deno, Bun e Cloudflare Workers, use o @gizmodata/hardcharger. Para um shell, use o cliente hardcharger que vem com o servidor.

    Os drivers do GizmoSQL funcionam com o Hardcharger?

    Não. O GizmoSQL fala Arrow Flight SQL sobre gRPC; o Hardcharger fala Warp SQL sobre HTTP. Os principais têm equivalentes no Hardcharger: adbc-driver-gizmosql → adbc-driver-hardcharger, o driver JDBC do GizmoSQL → hardcharger-jdbc, dbt-gizmosql → dbt-hardcharger, o servidor MCP do GizmoSQL → hardcharger-mcp, o backend GizmoSQL do SQLFrame → sqlframe-hardcharger e adbc-replicate → adbc-replicate-hardcharger. O guia de migração em docs.hardcharger.gizmodata.com(abre em uma nova aba) explica a mudança.

    Posso chamar o Hardcharger sem um driver?

    Sim. O Warp SQL é HTTP simples: obtenha um token, abra uma sessão e envie uma instrução com o curl ou qualquer biblioteca HTTP, e peça Accept: application/vnd.apache.arrow.stream para receber as linhas como um stream Arrow IPC. Todo servidor publica sua descrição OpenAPI 3.1 em /warp/v1/openapi.json.

    Quais integrações suportam SSO?

    O driver ADBC (e, portanto, o dbt-hardcharger e o SQLFrame), o servidor MCP, o cliente de linha de comando hardcharger e a interface web podem entrar pelo login via navegador do próprio servidor, com o seu provedor OpenID Connect. O driver JDBC faz login com senha, token ou certificado de cliente.

    As integrações são de código aberto?

    Sim. Todos os drivers e integrações desta página são publicados pela GizmoData sob a licença Apache-2.0.

    Falta alguma integração?

    Qualquer coisa que fale HTTP pode conversar com o Hardcharger, e qualquer coisa que fale ADBC ou JDBC pode usar os drivers dele. Se a sua ferramenta não está na lista, conte para nós e nós vamos criá-la ou documentá-la.

    Agende uma demonstração!Agendamento via Calendly