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 storage แล้วแชร์ลิงก์

การเข้าถึงข้อมูล

  • การเชื่อมต่อฐานข้อมูล: ผู้รับเริ่มต้นเซสชัน 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 เพื่อเพิ่มประสิทธิภาพการใช้เครือข่ายและหน่วยความจำ

  • แนะนำ MotherDuck: คลังข้อมูล DuckDB แบบจัดการให้และไร้เซิร์ฟเวอร์ ที่มีฟีเจอร์อย่างการโคลนแบบไม่ต้องคัดลอก การแชร์อย่างปลอดภัย และโหมดไฮบริดกับข้อมูลบนคลาวด์

  • ผสาน DuckDB เข้ากับ qStudio SQL editor: รองรับการ join กับฐานข้อมูลหลากหลายประเภท และแนะนำว่าเป็น IDE ที่เหมาะสำหรับการเริ่มต้นใช้งาน DuckDB

  • ข้อเสนอให้ให้ข้อมูลผ่านลิงก์ S3: ตั้งคำถามต่อคุณค่าของฐานข้อมูลและวิวที่อยู่ตรงกลาง และมองว่านักวิเคราะห์ข้อมูลอาจทำงานได้มีประสิทธิภาพกว่าหากจัดการข้อมูลดิบโดยตรง

  • แนะนำ Data Tap: โซลูชันที่ฝัง DuckDB ไว้ในฟังก์ชัน Lambda และบันทึกข้อมูลลง S3 ในรูปแบบ Parquet โดยเน้นเรื่องความคุ้มค่าและการขยายระบบ

  • ความสับสนเกี่ยวกับแนวทางการเข้าถึงข้อมูล: อธิบายว่าวิศวกรข้อมูลมักหลีกเลี่ยงการสรุปผลล่วงหน้า ขณะที่นักวิเคราะห์ข้อมูลมักชอบการเข้าถึงข้อมูลดิบ

  • ปฏิกิริยาต่อข้ออ้างที่ว่าฐานข้อมูลส่วนใหญ่ไม่ได้เก็บข้อมูลไว้: มองว่าคำกล่าวนี้เกินจริง

  • ข้อเสนอวิธีส่ง SQL query ให้เพื่อนร่วมงานทางอีเมล: ตั้งข้อสงสัยเกี่ยวกับข้อดีของไฟล์ฐานข้อมูลแบบไบนารี

  • ตั้งคำถามต่อประโยชน์ของเครื่องมือ SQL แบบใหม่: มองว่าการเก็บข้อมูลไว้ในคลังข้อมูลถาวรและสร้างวิวตามต้องการน่าจะเหมาะสมกว่า

  • ความคล้ายกับ Presto/Trino: มีความเห็นว่าแนวทางของ DuckDB ให้ความรู้สึกคล้ายกับ Presto/Trino