19 Punkte von GN⁺ 2024-05-31 | 2 Kommentare | Auf WhatsApp teilen
  • DuckDB kann wie eine Datenbank funktionieren, auch wenn die Daten nicht tatsächlich intern in der Datenbank gespeichert sind
  • Die Daten werden in einem separaten Speicher abgelegt, und die Datenbank arbeitet, indem sie darauf verweist
  • Die Datenbankdatei enthält keine eigentlichen Daten, sondern nur Anweisungen dazu, wie die Daten verarbeitet werden sollen

Beispiel: Robotaxi-Service

  • Beschreibung der Situation: In einem Robotaxi-Service müssen die täglich erzeugten Daten mit Analysten geteilt werden.
  • Problem: Die Daten sind zu groß, um sie per E-Mail zu verschicken, und auch das Teilen per Link ist umständlich.
  • Lösung: Mit DuckDB wird eine Datenbankdatei erstellt und anschließend geteilt.
# 데이터베이스 생성  
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()  
  • Ergebnis: Die Datei weird_rides.db enthält keine echten Daten, sondern Anweisungen dazu, wie die Daten verarbeitet werden sollen.
  • Art der Freigabe: Die Datei wird in einen Blob-Speicher hochgeladen und der Link dazu geteilt.

Datenzugriff

  • Verbindung zur Datenbank: Der Empfänger startet eine lokale DuckDB-Session und verbindet sich mit der freigegebenen Datenbankdatei.
# 데이터베이스 연결  
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")  
  • Daten-Download: Beim Ausführen der Query werden nur die aus S3 benötigten Daten heruntergeladen.
  • Effiziente Datenverarbeitung: Es werden nur die benötigten Spalten gelesen, und durch Filter werden unnötige Daten ausgeschlossen.

Vorteile von DuckDB

  • Robust gegenüber Änderungen: Selbst wenn sich Datenformat, Partitionierungsstrategie oder Schema ändern, bleibt die Art des Datenzugriffs für den Empfänger gleich.
  • Daten-Cloud-Browser: Mit DuckDB lassen sich relationale Datensätze über Hyperlinks einfach aufrufen.

2 Kommentare

 
yangeok 2024-06-05

Oh, bei großen Datenmengen könnte man vielleicht ein paar Server-Ressourcen sparen, wenn schon der Katalog und der genaue Pfad zu den kleinen Daten ausreichen, haha.

 
GN⁺ 2024-05-31
Hacker-News-Kommentare
  • Effiziente Verarbeitung von Antwort-Sheets eines Form-Builder-SaaS mit DuckDB und duckdb-wasm: Antwortdaten werden in S3 gespeichert und auf dem Client über duckdb-wasm als lokale DB abgefragt, um Netzwerk- und Speichernutzung zu optimieren.

  • Vorstellung von MotherDuck: Ein serverloses, verwaltetes DuckDB-Data-Warehouse, das Zero-Copy-Clones, sicheres Sharing und einen Hybridmodus mit Cloud-Daten bietet.

  • Integration von DuckDB in den SQL-Editor qStudio: Unterstützt Joins mit verschiedenen Datenbanken und wird als guter IDE-Einstieg für DuckDB empfohlen.

  • Vorschlag, Daten über S3-Links bereitzustellen: Der Wert von zwischengeschalteten Datenbanken und Views wird infrage gestellt; stattdessen wird argumentiert, dass Datenanalysten effizienter direkt mit Rohdaten arbeiten könnten.

  • Vorstellung von Data Tap: Eine Lösung, die DuckDB in Lambda-Funktionen einbettet und Daten im Parquet-Format in S3 speichert, wobei Kosteneffizienz und Skalierbarkeit betont werden.

  • Verwirrung über Datenzugriffsansätze: Es wird erklärt, dass Data Engineers Voraggregation eher vermeiden, während Datenanalysten tendenziell den Zugriff auf Rohdaten bevorzugen.

  • Reaktion auf die Behauptung, die meisten Datenbanken enthielten keine Daten: Diese Aussage wird als übertrieben angesehen.

  • Vorschlag, SQL-Abfragen per E-Mail an Kollegen zu senden: Dabei wird der Nutzen binärer Datenbankdateien infrage gestellt.

  • Zweifel am Nutzen neuer SQL-Tools: Es wird für sinnvoller gehalten, Daten in einem persistenten Data Warehouse zu speichern und die benötigten Views dort zu erzeugen.

  • Ähnlichkeit mit Presto/Trino: Es wird die Meinung geäußert, dass der Ansatz von DuckDB dem von Presto/Trino ähnelt.