19 puntos por GN⁺ 2024-05-31 | 2 comentarios | Compartir por WhatsApp
  • DuckDB puede funcionar como una base de datos incluso si los datos no están almacenados internamente dentro de la base de datos
  • Los datos se almacenan en un repositorio separado, y la base de datos opera haciendo referencia a ellos
  • El archivo de base de datos no incluye los datos reales; solo contiene instrucciones sobre cómo procesarlos

Ejemplo: servicio de robotaxis

  • Descripción de la situación: En un servicio de robotaxis, es necesario compartir con analistas los datos que se generan cada día.
  • Problema: Los datos son demasiado grandes para enviarlos por correo electrónico, y compartirlos mediante un enlace también resulta complicado.
  • Solución: Se crea un archivo de base de datos con DuckDB y luego se comparte.
# 데이터베이스 생성  
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: El archivo weird_rides.db no contiene los datos reales, pero sí incluye instrucciones sobre cómo procesarlos.
  • Cómo se comparte: Este archivo se sube a un blob storage y se comparte el enlace.

Acceso a los datos

  • Conexión a la base de datos: El receptor inicia una sesión local de DuckDB y se conecta al archivo de base de datos compartido.
# 데이터베이스 연결  
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")  
  • Descarga de datos: Al ejecutar la consulta, solo se descargan desde S3 los datos necesarios.
  • Procesamiento eficiente de datos: Solo se leen las columnas necesarias y se aplican filtros para excluir datos innecesarios.

Ventajas de DuckDB

  • Resistente a los cambios: Aunque cambien el formato de los datos, la estrategia de particionado o el esquema, la forma en que el receptor accede a los datos no cambia.
  • Navegador de datos en la nube: Con DuckDB, se puede acceder fácilmente a datasets relacionales mediante hipervínculos.

2 comentarios

 
yangeok 2024-06-05

Oh, entonces incluso con datos grandes, si solo tienes el catálogo y la ruta exacta de los datos pequeños, quizá también se puedan ahorrar un poco los recursos del servidor jaja

 
GN⁺ 2024-05-31
Opiniones de Hacker News
  • Procesamiento eficiente de hojas de respuestas de un SaaS de creación de formularios con DuckDB y duckdb-wasm: Los datos de respuestas se almacenan en S3 y se consultan en una base de datos local desde el cliente mediante duckdb-wasm, optimizando el uso de red y memoria.

  • Introducción a MotherDuck: Un data warehouse administrado y serverless basado en DuckDB que ofrece clones sin copia, compartición segura y modo híbrido con datos en la nube.

  • Integración de DuckDB en el editor SQL qStudio: Soporta joins con varias bases de datos y se recomienda como un buen IDE para empezar con DuckDB.

  • Propuesta de entregar datos mediante enlaces de S3: Se cuestiona el valor de las bases de datos y vistas intermedias, y se argumenta que puede ser más eficiente que los analistas de datos trabajen directamente con datos en bruto.

  • Introducción a Data Tap: Una solución que incrusta DuckDB en funciones Lambda y almacena los datos en S3 en formato Parquet, destacando la eficiencia de costos y la escalabilidad.

  • Confusión sobre los enfoques de acceso a datos: Se explica que los ingenieros de datos tienden a evitar la preagregación, mientras que los analistas de datos prefieren acceder a los datos en bruto.

  • Reacción a la afirmación de que la mayoría de las bases de datos no contienen datos: Se considera que esa afirmación es exagerada.

  • Propuesta sobre cómo enviar consultas SQL por correo electrónico a colegas: Se pone en duda la ventaja de los archivos de base de datos binarios.

  • Dudas sobre la utilidad de las nuevas herramientas SQL: Se considera más apropiado almacenar los datos en un data warehouse persistente y crear las vistas necesarias.

  • Similitud con Presto/Trino: Algunas opiniones sienten que el enfoque de DuckDB es similar al de Presto/Trino.