9P by GN⁺ 2일전 | ★ favorite | 댓글 2개
  • Instant SQL은 SQL 쿼리를 작성할 때 결과를 실시간으로 미리보기하여 쿼리 작성 및 디버깅을 가속화하는 도구
  • 복잡한 CTE나 컬럼 수식을 손쉽게 분해하고 분석할 수 있으며, AI 기반 편집 제안을 즉시 미리볼 수 있어, 쿼리 작성 및 수정이 더욱 효율적임
  • MotherDuckDuckDB Local UI에서 사용 가능하며, DuckDB 기반으로 다양한 외부 데이터 소스까지 실시간 탐색 가능
  • DuckDB의 로컬 우선 설계와 성능 최적화, 캐싱 전략, AST 기반 커서 매핑 등 고급 기술 조합 덕분에 실현 가능했음
  • MotherDuck은 데이터 분석을 위한 다양한 도구를 제공하는 관리형 DuckDB 클라우드 서비스

Instant SQL 소개

  • Instant SQL은 SQL 쿼리 결과를 타이핑하는 즉시 실시간으로 업데이트해주는 새로운 기능임
  • 별도의 실행 버튼(run button) 없이, 0초 대기 시간(zero-latency) 으로 결과를 미리 확인할 수 있음
  • 현재 MotherDuck 플랫폼과 DuckDB Local UI에서 사용 가능함

왜 Instant SQL이 필요한가

  • SQL 작성은 구문이 아니라 데이터를 이해하고 질문을 구성하는 과정이 핵심임
  • 기존에는 텍스트 에디터에 쿼리를 쓰고, 실행 버튼을 누르고, 결과를 기다리는 느린 반복 작업이 필수였음
  • Instant SQL은 이 과정을 즉각적이고 자연스럽게 탐색하는 흐름으로 바꿔줌

주요 기능

  • 작성하면서 실시간으로 결과 미리보기

    • SQL 쿼리를 타이핑할 때마다 결과 세트 미리보기가 실시간으로 업데이트됨
    • 간단한 변환부터 복잡한 집계까지 데이터 탐색을 끊김 없이 진행 가능함
  • CTE(공통 테이블 표현식) 실시간 디버깅

    • CTE를 클릭하여 즉시 시각화 가능
    • 수정사항이 즉시 모든 종속 노드에 반영되어, CTE 디버깅이 매우 쉬워짐
  • 복잡한 컬럼 수식 분해

    • 컬럼 수식 오류를 빠르게 찾을 수 있도록 결과 테이블에서 수식 분해 가능
    • 수식 로직이나 데이터 문제를 즉각 식별할 수 있음
  • 다양한 데이터 소스 지원

    • DuckDB가 지원하는 모든 소스(DuckDB 테이블, S3의 parquet 파일, Postgres, SQLite, MySQL, Iceberg, Delta 등)에 대해 미리보기 가능
    • 외부 데이터 모델링과 탐색이 매우 빠르게 가능해짐
  • 최종 실행 전 빠른 쿼리 검증

    • 미리보기를 통해 쿼리를 다듬은 후, 만족스러우면 최종 실행 가능
    • SQL 작성-실행-대기 주기를 혁신적으로 단축시켜줌
  • AI 기능과의 결합

    • 선택한 텍스트에 대해 자연어 명령을 입력하면 AI가 수정 제안을 해줌
    • 제안 결과를 즉시 미리보기할 수 있어, 실수 위험 없이 수정을 수용할 수 있음

어떻게 가능했는가

  • 초저지연 쿼리 실행 기술

    • DuckDB의 로컬 우선 설계 덕분에 PC에서 직접 빠른 결과를 얻을 수 있음
    • MotherDuck의 듀얼 실행 아키텍처가 대용량 데이터도 저지연으로 지원함
  • 쿼리 재작성 기술

    • DuckDB JSON 확장 기능을 활용하여 SELECT 쿼리의 **AST(구문 트리)**를 추출하고 활용함
    • 쿼리 일부를 로컬 캐시 샘플 데이터로 대체하여 빠른 미리보기가 가능해짐
  • 스마트 캐싱 시스템

    • 미리 예측된 데이터 캐시를 사용해 키 입력 즉시 결과를 렌더링함
    • 다양한 캐싱 전략을 사용하여 사용자가 손가락을 떼기도 전에 결과가 나타남
  • 커서-구문트리 매핑

    • 사용자의 커서 위치를 AST에서 특정 SELECT 노드로 정확히 매핑하는 기능을 개발함
    • 복잡한 쿼리 안에서도 사용자가 작업 중인 SELECT문만 골라서 미리보기 제공 가능함

Instant SQL 이용 방법

  • MotherDuck이나 DuckDB Local UI에서 "공개 프리뷰"로 사용 가능
  • 새로운 프롬프트 기반 수정 기능도 MotherDuck 사용자에게 제공됨

이거 완전 신기하네요

Hacker News 의견
  • DataCouncil 컨퍼런스에서 이 기능과 블로그 포스트의 저자가 발표하는 것을 보았고, 이를 구축하는 데 많은 공예, 창의성, 그리고 세심함이 들어갔음을 알 수 있었음. Hamilton과 MotherDuck 팀의 멋진 출시를 축하함
  • DuckDB UI와 MotherDuck에서 멋진 비디오가 있음
  • SQL에 파이프 구문이 있으면 더 좋을 것 같음. SQL은 훌륭하지만, 그 순서는 직관적이지 않으며, 중간 결과를 미리 보기 위해서는 CTE만이 신뢰할 수 있는 방법임. 파이프를 사용하면 각 단계가 중간 출력을 명확히 보여줄 수 있음
    • 예시:
      • FROM orders
      • WHERE order_date >= '2024-01-01'
      • AGGREGATE SUM(order_amount) AS total_spent GROUP BY customer_id
      • WHERE total_spent > 1000
      • INNER JOIN customers USING(customer_id)
      • CALL ENRICH.APOLLO(EMAIL > customers.email)
      • AGGREGATE COUNT(*) high_value_customer GROUP BY company.country
  • DuckDB 엔지니어가 있다면, 당신의 도구가 생물정보학/생명공학에서 내 작업에 엄청난 도움이 되었음을 알리고 싶음. 생물학적 데이터(복잡하고, 끊임없이 변화하는)가 요구하는 유연성과 단순함을 가지고 있음
  • DuckDB가 kusto나 구글의 파이프 쿼리 구문과 같은 파이프 구문을 가지지 않은 것은 치명적인 기능이 빠진 것임
    • 왜 치명적인 기능인가? 우선, LLM은 왼쪽에서 오른쪽으로 텍스트를 완성함. 그것만으로도 치명적인 기능임
    • 하지만 컴퓨팅 파워가 적은 우리 인간에게는 파이프 구문이 (훨씬 더 나은) 코드 완성을 가능하게 함
    • 파이프 구문은 작업하기에 즐거우며 SQL로 돌아가는 것은 정말 실망스러운 순간임
  • DELETE 쿼리와 함께 작동하지 않기를 바람
  • DuckDB의 노트북을 탐색하는 것을 정말 좋아하며, 이 기능은 그것들을 더욱 멋지게 만듦. 그러나 공유, 내보내기 또는 git 저장소에 커밋할 수 없다는 점은 매우 제한적임. DuckDB 데이터베이스에 저장하고, 심지어 역사적 버전을 저장하는 것 같지만, 실제로 그것으로 할 수 있는 것이 없음
  • CTE 검사는 놀라움. 수동으로 너무 많은 시간을 소비함
  • 멋진 도구이며, SQL을 위한 매니폴드 프로젝트와 함께 사용하면 더욱 멋짐. 타입 안전하고 네이티브 DuckDB 구문에 대한 훌륭한 지원을 제공함
  • 멋져 보이지만, 쿼리하려는 전체 테이블을 보고 싶음. 항상 쿼리를 시작할 때 select * from table limit 10;을 빠르게 실행한 후 열과 조인을 추가함