19 ポイント 投稿者 GN⁺ 2024-05-31 | 2件のコメント | WhatsAppで共有
  • 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 ファイルには実データは含まれていないが、データをどう処理するかという指示が含まれている。
  • 共有方法: このファイルをBlobストレージにアップロードし、リンクを共有する。

データアクセス

  • データベース接続: 受信者はローカルの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を使えば、リレーショナルデータセットにハイパーリンク経由で簡単にアクセスできる。

2件のコメント

 
yangeok 2024-06-05

大規模データの中で小規模データのカタログと正確なパスさえあれば、サーバーリソースを少し節約できるかもしれませんね(笑)

 
GN⁺ 2024-05-31
Hacker Newsの意見
  • DuckDBとduckdb-wasmを使ってフォームビルダーSaaSの回答シートを効率的に処理: 回答データをS3に保存し、クライアント側でduckdb-wasmを通じてローカルDBとしてクエリすることで、ネットワークとメモリ使用を最適化している。

  • MotherDuckの紹介: サーバーレスのマネージドDuckDBデータウェアハウスで、ゼロコピークローン、安全な共有、クラウドデータとのハイブリッドモードなどを提供している。

  • DuckDBをqStudio SQLエディタに統合: さまざまなデータベースとのJOINをサポートしており、DuckDBを始めるのに適したIDEとして勧められている。

  • S3リンク経由でデータを提供する提案: 中間データベースやビューの価値に疑問を呈し、データアナリストが生データを直接扱うほうがより効率的かもしれないと主張している。

  • Data Tapの紹介: Lambda関数にDuckDBを組み込み、データをS3にParquet形式で保存するソリューションで、コスト効率とスケーラビリティを強調している。

  • データアクセス方式に対する混乱: データエンジニアは事前集計を避け、データアナリストは生データへのアクセスを好む傾向があると説明している。

  • ほとんどのデータベースがデータを含んでいないという主張への反応: この主張は誇張されていると考えている。

  • SQLクエリを同僚にメールで送る方法の提案: バイナリデータベースファイルの利点に疑問を投げかけている。

  • 新しいSQLツールの有用性への疑問: 永続的なデータウェアハウスにデータを保存し、必要なビューを作成するほうが適切だと考えている。

  • Presto/Trinoとの類似性: DuckDBのアプローチがPresto/Trinoに似ていると感じる意見。