19P by neo 5달전 | favorite | 댓글 2개
  • DuckDB는 데이터가 실제로 데이터베이스에 내부적으로 저장하지 않아도 데이터베이스처럼 작동할 수 있음
  • 데이터는 별도의 저장소에 저장되고, 데이터베이스는 이를 참조하는 방식으로 동작
  • 데이터베이스 파일에는 실제 데이터를 포함하지 않고, 데이터를 어떻게 처리할지에 대한 지침만 포함함

예시: 로보택시 서비스

  • 상황 설명: 로보택시 서비스에서 매일 생성되는 데이터를 분석가와 공유해야 하는 상황.
  • 문제점: 데이터가 너무 커서 이메일로 보내기 어렵고, 링크로 공유하기도 복잡함.
  • 해결책: DuckDB를 사용하여 데이터베이스 파일을 생성하고 이를 공유함.
# 데이터베이스 생성  
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()  
  • 결과: weird_rides.db 파일은 실제 데이터를 포함하지 않지만, 데이터를 어떻게 처리할지에 대한 지침을 포함함.
  • 공유 방법: 이 파일을 블롭 저장소에 업로드하고 링크를 공유함.

데이터 접근

  • 데이터베이스 연결: 수신자는 로컬 DuckDB 세션을 시작하고 공유된 데이터베이스 파일에 연결함.
# 데이터베이스 연결  
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")  
  • 데이터 다운로드: 쿼리를 실행할 때 필요한 데이터만 S3에서 다운로드함.
  • 효율적인 데이터 처리: 필요한 열만 읽고, 필터를 적용하여 불필요한 데이터를 제외함.

DuckDB의 장점

  • 변경에 강함: 데이터 형식, 파티셔닝 전략, 스키마 변경에도 수신자의 데이터 접근 방식은 변하지 않음.
  • 데이터 클라우드 브라우저: DuckDB를 사용하면 관계형 데이터셋을 하이퍼링크를 통해 쉽게 접근할 수 있음.

오 라지 데이터에서 스몰 데이터의 카탈로그와 정확한 경로만 있으면 서버 리소스를 조금 아낄 수도 있겠네요 ㅎㅎ

Hacker News 의견
  • DuckDB와 duckdb-wasm을 사용하여 폼 빌더 SaaS의 응답 시트를 효율적으로 처리함: 응답 데이터를 S3에 저장하고, 클라이언트에서 duckdb-wasm을 통해 로컬 DB로 쿼리하여 네트워크와 메모리 사용을 최적화함.

  • MotherDuck 소개: 서버리스 관리형 DuckDB 데이터 웨어하우스로, 무복사 클론, 보안 공유, 클라우드 데이터와의 하이브리드 모드 등을 제공함.

  • DuckDB를 qStudio SQL 에디터에 통합: 다양한 데이터베이스와의 조인을 지원하며, DuckDB를 시작하기 좋은 IDE로 추천함.

  • S3 링크를 통해 데이터 제공 제안: 중간 데이터베이스와 뷰의 가치를 의문시하며, 데이터 분석가가 원시 데이터를 직접 다루는 것이 더 효율적일 수 있다고 주장함.

  • Data Tap 소개: Lambda 함수에 DuckDB를 내장하여 데이터를 S3에 Parquet 형식으로 저장하는 솔루션으로, 비용 효율성과 확장성을 강조함.

  • 데이터 접근 방식에 대한 혼란: 데이터 엔지니어는 사전 집계를 피하고, 데이터 분석가는 원시 데이터 접근을 선호하는 경향이 있다고 설명함.

  • 대부분의 데이터베이스가 데이터를 포함하지 않는다는 주장에 대한 반응: 이 주장이 과장되었다고 생각함.

  • SQL 쿼리를 동료에게 이메일로 보내는 방법 제안: 바이너리 데이터베이스 파일의 장점에 대해 의문을 제기함.

  • 새로운 SQL 도구의 유용성에 대한 의문: 영구적인 데이터 웨어하우스에 데이터를 저장하고 필요한 뷰를 생성하는 것이 더 적절하다고 생각함.

  • Presto/Trino와의 유사성: DuckDB의 접근 방식이 Presto/Trino와 유사하다고 느끼는 의견.