19 pontos por GN⁺ 2024-05-31 | 2 comentários | Compartilhar no WhatsApp
  • O DuckDB pode funcionar como um banco de dados mesmo sem armazenar os dados de fato internamente
  • Os dados ficam armazenados em um repositório separado, e o banco de dados opera referenciando esses dados
  • O arquivo de banco de dados não inclui os dados reais, apenas instruções sobre como processá-los

Exemplo: serviço de robotáxi

  • Descrição da situação: em um serviço de robotáxi, é necessário compartilhar com analistas os dados gerados diariamente.
  • Problema: os dados são grandes demais para enviar por e-mail, e compartilhá-los por link também é complicado.
  • Solução: usar o DuckDB para criar um arquivo de banco de dados e compartilhá-lo.
# 데이터베이스 생성  
import duckdb  
db = duckdb.connect("weird_rides.db")  
db.sql("""  
    CREATE VIEW weird_rides  
    AS SELECT pickup_at, dropoff_at, trip_distance, total_amount  
    FROM 's3://robotaxi-inc/daily-ride-data/*.parquet'  
    WHERE fare_amount > 100 AND trip_distance < 10.0  
""")  
db.close()  
  • Resultado: o arquivo weird_rides.db não contém os dados reais, mas sim instruções sobre como processá-los.
  • Forma de compartilhamento: fazer upload desse arquivo para um armazenamento de blobs e compartilhar o link.

Acesso aos dados

  • Conexão com o banco de dados: o destinatário inicia uma sessão local do DuckDB e se conecta ao arquivo de banco de dados compartilhado.
# 데이터베이스 연결  
import duckdb  
conn = duckdb.connect()  
conn.sql("""  
    ATTACH 's3://robotaxi-inc/virtual-datasets/weird_rides.db'  
    AS rides_db (READ_ONLY)  
""")  
conn.sql("SELECT * FROM rides_db.weird_rides LIMIT 5")  
  • Download dos dados: ao executar a consulta, apenas os dados necessários são baixados do S3.
  • Processamento eficiente dos dados: apenas as colunas necessárias são lidas, e filtros são aplicados para excluir dados desnecessários.

Vantagens do DuckDB

  • Resistência a mudanças: mesmo com alterações no formato dos dados, na estratégia de particionamento ou no esquema, a forma de acesso aos dados pelo destinatário não muda.
  • Navegador de dados em nuvem: com o DuckDB, é possível acessar facilmente conjuntos de dados relacionais por meio de hyperlinks.

2 comentários

 
yangeok 2024-06-05

Ah, em dados grandes, se você tiver só o catálogo e o caminho exato dos dados pequenos, talvez dê até para economizar um pouco de recursos do servidor, hehe.

 
GN⁺ 2024-05-31
Comentários no Hacker News
  • Uso eficiente do DuckDB e do duckdb-wasm para processar planilhas de respostas de um SaaS de criação de formulários: os dados de resposta são armazenados no S3 e consultados no cliente por meio do duckdb-wasm em um banco de dados local, otimizando o uso de rede e memória.

  • Introdução ao MotherDuck: um data warehouse gerenciado e serverless baseado em DuckDB, que oferece clones sem cópia, compartilhamento seguro e modo híbrido com dados na nuvem.

  • Integração do DuckDB ao editor SQL qStudio: suporta joins com vários bancos de dados e é recomendado como uma boa IDE para começar a usar DuckDB.

  • Sugestão de fornecer dados por links do S3: questiona o valor de bancos de dados e views intermediárias, argumentando que pode ser mais eficiente para analistas de dados lidarem diretamente com os dados brutos.

  • Introdução ao Data Tap: uma solução que incorpora DuckDB em funções Lambda para armazenar dados no S3 em formato Parquet, destacando eficiência de custos e escalabilidade.

  • Confusão sobre a forma de acesso aos dados: explica que engenheiros de dados tendem a evitar pré-agregações, enquanto analistas de dados costumam preferir acesso aos dados brutos.

  • Reação à afirmação de que a maioria dos bancos de dados não contém dados: considera essa afirmação exagerada.

  • Sugestão de como enviar consultas SQL por e-mail a colegas: levanta dúvidas sobre as vantagens de arquivos binários de banco de dados.

  • Dúvida sobre a utilidade de novas ferramentas SQL: considera mais apropriado armazenar os dados em um data warehouse persistente e criar as views necessárias.

  • Semelhança com Presto/Trino: opinião de que a abordagem do DuckDB parece similar à do Presto/Trino.