Voltar ao blog
    Arquitetura
    Chris Wones
    11 de setembro de 2026
    5 min de leitura

    GizmoSQL + DuckLake: computação elástica sobre estado compartilhado

    Escalar computação sem estado é fácil. O desafio da análise de dados é escalar nós independentes que precisam dos mesmos dados mutáveis. Com o catálogo transacional no DuckLake e os arquivos Parquet em armazenamento de objetos, um cluster GizmoSQL pode crescer de um para cinco nós e voltar, sem copiar dados, reconstruir metadados ou reconciliar estado. O consultor estratégico Chris Wones explica por que o catálogo simplifica esse escalonamento.

    DuckLake
    GizmoSQL
    Arquitetura
    Escalonamento automático
    Lakehouse
    DuckDB
    PostgreSQL
    Parquet
    Kubernetes
    GizmoSQL + DuckLake: cinco nós GizmoSQL, alguns efêmeros, compartilham um catálogo PostgreSQL do DuckLake e um conjunto de arquivos Parquet no armazenamento de objetos. Computação elástica sobre estado compartilhado.

    Sobre o autor: Chris Wones é consultor estratégico da GizmoData. Ao longo de 34 anos, liderou iniciativas de dados corporativos e engenharia na James River, Retek, dunnhumby e Kroger/84.51°, e traz ao GizmoSQL e ao GizmoData Cloud a perspectiva de quem compra plataformas de dados.

    Escalar computação sem estado é fácil. Escalar nós de computação independentes que precisam compartilhar o mesmo estado mutável dos dados é mais interessante — e é a realidade da análise de dados moderna.

    A GizmoData executa cargas de trabalho SQL analíticas em nós GizmoSQL independentes. Um cluster pode operar com um nó quando há pouca concorrência, crescer para cinco com o aumento da demanda e voltar a diminuir quando a capacidade adicional não for mais necessária.

    Esse é um dos cenários em que GizmoSQL e DuckLake se destacam juntos.

    Catálogo compartilhado, dados compartilhados

    O DuckLake mantém os dados das tabelas em arquivos Parquet comuns e armazena os metadados do lakehouse em um catálogo SQL transacional. Esse catálogo acompanha esquemas, tabelas, colunas, arquivos de dados, snapshots, estatísticas e tudo o que é necessário para interpretar os arquivos subjacentes. Para um lakehouse com vários usuários e clientes remotos, a orientação do próprio DuckLake é usar PostgreSQL como banco do catálogo.

    Em uma implantação GizmoData, vários nós GizmoSQL se conectam ao mesmo catálogo DuckLake e ao mesmo armazenamento de objetos:

    Cinco nós GizmoSQL (N1 a N5, com N4 e N5 tracejados para indicar que são efêmeros) conectados a um catálogo PostgreSQL do DuckLake, sobre arquivos Parquet no armazenamento de objetos
    Cada nó conecta o mesmo catálogo DuckLake e o mesmo armazenamento de objetos. Os nós entram e saem; os dados e seus metadados permanecem.

    Um novo nó se conecta diretamente ao catálogo e ao armazenamento de objetos existentes. Ele não copia o lakehouse nem reconstrói seus metadados antes de atender consultas. Isso importa quando os nós são efêmeros: a GizmoData pode adicionar computação para absorver um pico e removê-la quando a demanda cair, sem mover ou duplicar os dados subjacentes. O escalonamento continua rápido e simples de operar, evitando o custo de armazenamento, o trabalho de sincronização e o risco de inconsistência de manter cópias separadas dos mesmos dados.

    Na prática, cada nó executa o mesmo pequeno conjunto de instruções para acessar o lakehouse. Esta é a configuração do guia de integração do GizmoSQL com DuckLake, idêntica no primeiro ou no quinto nó:

    INSTALL ducklake; LOAD ducklake;
    INSTALL postgres; LOAD postgres;
    
    -- The shared catalog
    CREATE OR REPLACE SECRET postgres_secret (
      TYPE postgres,
      HOST 'localhost',
      PORT 5432,
      DATABASE 'ducklake_catalog',
      USER 'postgres',
      PASSWORD 'your_password'
    );
    
    -- The shared data
    CREATE OR REPLACE SECRET ducklake_secret (
      TYPE DUCKLAKE,
      METADATA_PATH '',
      DATA_PATH 's3://my-bucket/lakehouse/',
      METADATA_PARAMETERS MAP {
        'TYPE': 'postgres',
        'SECRET': 'postgres_secret'
      }
    );
    
    ATTACH 'ducklake:ducklake_secret' AS my_lakehouse;
    USE my_lakehouse;

    A computação cresce conforme a demanda, enquanto o estado compartilhado dos dados permanece no mesmo lugar.

    Os nós também podem gravar

    Não se trata apenas de acesso compartilhado de leitura.

    Vários nós GizmoSQL podem ler e gravar nas mesmas tabelas mantidas pelo DuckLake. O DuckLake oferece transações ACID com isolamento por snapshot e lida com gravações concorrentes como se espera de um sistema transacional: quando duas transações confirmam alterações que não têm conflito lógico (inserções simultâneas na mesma tabela, por exemplo), a posterior é repetida contra o catálogo sem regravar nenhum arquivo de dados. Quando há um conflito real, como duas transações excluindo linhas do mesmo arquivo de dados, uma delas é abortada e o cliente recebe o motivo. Os detalhes estão na documentação de resolução de conflitos do DuckLake.

    Isso dá à GizmoData uma propriedade importante: adicionar um nó significa adicionar outro processo independente de computação que pode participar imediatamente do trabalho no mesmo lakehouse transacional.

    Não é preciso criar uma cópia separada dos dados para cada nó, e não há nada para reconciliar depois. Todos os nós leem e gravam o mesmo conjunto de snapshots.

    Por que o catálogo importa

    O catálogo é mais do que uma lista de esquemas.

    Ele contém informações estruturais suficientes para que cada nó opere sobre a mesma representação do lakehouse: quais tabelas existem, quais arquivos pertencem a elas, qual é o esquema atual e qual snapshot está visível no momento. Como esse estado reside em um único banco transacional, em vez da memória ou do disco local de cada nó, o nó não carrega estado que precise ser preservado. Ele pode ser criado ou destruído conforme necessário.

    Isso simplifica o escalonamento automático. A GizmoData escala a camada de computação de forma independente, enquanto o DuckLake mantém o estado persistente e compartilhado que a sustenta.

    DuckLake fornece o lakehouse transacional compartilhado.

    GizmoSQL fornece a computação SQL elástica sobre ele.

    Quer uma solução pronta para usar?

    Tenha um DuckLake pronto para usar com computação DuckDB e escalonamento automático no GizmoData Cloud

    O GizmoData Cloud provisiona o catálogo DuckLake, o armazenamento de objetos e o cluster GizmoSQL para você na AWS, no Google Cloud ou no Azure, e aumenta ou reduz a camada de computação sob demanda (réplicas mínimas/máximas, metas de CPU e memória ou agendamento). O serviço está disponível para o público: cadastre-se gratuitamente em app.gizmodata.com.

    Da equipe GizmoData: essa é exatamente a arquitetura do escalonamento horizontal do GizmoSQL: um pool de nós gerenciados pelo Kubernetes, sessões balanceadas por round-robin e um único DuckLake compartilhado com catálogo PostgreSQL. Funciona da mesma forma no Core (Apache-2.0) e no Enterprise. Para experimentar, siga o guia de integração com DuckLake depois de instalar o GizmoSQL Core, ou fale conosco sobre operar um cluster elástico em produção.

    Pronto para experimentar o GizmoSQL?

    Experimente análises de dados ultrarrápidas com nosso mecanismo SQL de código aberto

    Agende uma demonstração!Agendamento via Calendly