13 คะแนน โดย GN⁺ 2024-03-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

DuckDB กำลังกลายเป็น jq ตัวใหม่

  • โปรเจกต์ DuckDB เป็นฐานข้อมูลลักษณะเดียวกับ SQLite สำหรับแอปพลิเคชันด้านข้อมูล โดยมีความสามารถในการนำเข้าข้อมูลได้หลากหลายรูปแบบโดยไม่ต้องพึ่งพา dependency เพิ่มเติม
  • สามารถอ่านและแยกวิเคราะห์ไฟล์ JSON เป็นตารางในฐานข้อมูลได้โดยตรง และแนวทางนี้ยังใช้ได้กับฟอร์แมตอื่นอีกมากมาย
  • เวลาทำงานกับ JSON ปกติจะใช้ jq เป็นหลัก แต่เมื่อเทียบกับไวยากรณ์ jq ที่ซับซ้อน การใช้ DuckDB สะดวกกว่าเพราะคุ้นเคยกับ SQL มากกว่า
  • ตัวอย่างเช่น สามารถใช้ GitHub API เพื่อดึงข้อมูลคลังเก็บขององค์กร golang มาเป็น JSON แล้วทำสถิติประเภทไลเซนส์โอเพนซอร์สได้อย่างง่ายดายด้วย SQL
  • การเขียนคำสั่ง SQL ด้วย DuckDB ทำได้ง่ายแม้ไม่ต้องเปิดเอกสารอ้างอิง และใช้ไวยากรณ์ที่คล้ายกับฟังก์ชัน JSON ของ PostgreSQL
  • DuckDB รองรับการส่งออกเป็น JSON ด้วย และหากต้องการก็สามารถใช้ jq เพื่อจัดรูปแบบผลลัพธ์ให้อ่านง่ายขึ้นได้
  • DuckDB ไม่ได้รองรับแค่ JSON เท่านั้น แต่ยังนำเข้าข้อมูลจาก CSV, parquet, ไฟล์ Excel และฟอร์แมตอื่น ๆ ได้อีกด้วย
  • หากไม่จำเป็นต้องเก็บข้อมูลแบบถาวร ก็สามารถคิวรีข้อมูลได้โดยไม่ต้องสร้างตาราง
  • DuckDB สามารถอ่าน JSON ได้โดยตรงไม่เพียงจากไฟล์ในเครื่อง แต่ยังรวมถึงจาก URL ด้วย

ความเห็นจาก GN⁺

  • DuckDB อาจเป็นเครื่องมือที่น่าสนใจสำหรับผู้ใช้ที่ทำงานเกี่ยวกับการวิเคราะห์ข้อมูลบ่อย ๆ โดยเฉพาะคนที่คุ้นเคยกับ SQL เพราะมันเป็นทางเลือกที่ทรงพลังสำหรับจัดการข้อมูล JSON ได้อย่างง่ายดาย
  • ความสามารถของ DuckDB ในการอ่านข้อมูล JSON ได้โดยตรง ช่วยทำให้กระบวนการเตรียมข้อมูลง่ายขึ้น และลดขั้นตอนการแปลงข้อมูลแยกต่างหากเมื่อต้องสร้าง data pipeline
  • หากการใช้งาน DuckDB แพร่หลายมากขึ้น ก็อาจช่วยลดเส้นโค้งการเรียนรู้และเพิ่มผลิตภาพได้ เมื่อเทียบกับเครื่องมือเดิมที่ซับซ้อนสำหรับการวิเคราะห์และประมวลผลข้อมูล
  • อย่างไรก็ตาม หาก DuckDB ยังไม่เป็นที่รู้จักในวงกว้าง หรือยังมีการสนับสนุนจากชุมชนไม่เพียงพอ ผู้ใช้อาจหาวิธีแก้ปัญหาได้ยากเมื่อเจออุปสรรค
  • โปรเจกต์โอเพนซอร์สอื่นที่มีความสามารถคล้ายกับ DuckDB ได้แก่ Apache Drill และ PrestoDB ซึ่งต่างก็รองรับการคิวรี SQL กับชุดข้อมูลขนาดใหญ่เช่นกัน

1 ความคิดเห็น

 
GN⁺ 2024-03-23
ความคิดเห็นจาก Hacker News
  • การผสาน jq กับเครื่องมือเชลล์พื้นฐาน

    • ไวยากรณ์และโมเดลข้อมูลของ jq นั้นสง่างามและทรงพลังมาก แต่การขาด standard library และความไม่ลงตัวด้านการออกแบบทำให้งานประจำวันอาจซับซ้อนได้
    • jq แปลงข้อมูลเป็นข้อความแบบทีละบรรทัดได้ดี จึงเหมาะกับการนำไปใช้ร่วมกับเครื่องมือเชลล์ของ Unix
    • ตัวอย่างเช่น งานดึง OSS license จากรายการโปรเจกต์และนับจำนวนการใช้งานของแต่ละรายการ สามารถทำได้ง่ายด้วย curl ... | jq '.[].license.key' | sort | uniq -c
  • Babashka และ Clojure

    • ถ้าคุณชอบ Lisp และ Clojure ก็ควรลองดู Babashka
    • มีตัวอย่างโค้ดที่ใช้ Babashka เพื่อประมวลผลไฟล์ JSON จัดกลุ่มข้อมูล และนับจำนวน
  • ClickHouse local CLI

    • ClickHouse local CLI เร็วมากในการ parse และ query ฟอร์แมตอย่าง JSON และ CSV
    • ถูกเรียกว่า "เครื่องมือ query JSON ที่เร็วที่สุดในโลก" และถูกแนะนำว่าเป็นเครื่องมือขนาดเล็กสำหรับการวิเคราะห์ข้อมูลแบบ serverless
  • การใช้ jq, DuckDB และ SQL

    • jq เหมาะอย่างยิ่งสำหรับงานอย่างการกรอง การแมป และการเชื่อมต่อ
    • ตัวอย่างเช่น สามารถใช้ jq เพื่อค้นหาลิงก์ดาวน์โหลดที่ต้องการ หรือดึง KUBE_CONFIG ของ Kubernetes cluster ออกจาก Terraform state
  • การ query Google Sheets

    • สามารถ query ข้อมูล Google Sheets ที่เปิดสาธารณะได้ในลักษณะคล้าย SQL
  • structured logging ด้วยฐานข้อมูล SQLite

    • สามารถเก็บ log event ที่สร้างขึ้นทุกวันเป็นอ็อบเจ็กต์ JSON สร้างดัชนีบนฟิลด์เฉพาะ และค้นหาด้วย SQL query ได้
  • Benthos

    • สามารถใช้ Benthos สำหรับการแปลงข้อมูล และการย้ายข้อมูลไปยัง message bus, webhook และฐานข้อมูล
  • Nushell

    • Nushell มีประโยชน์สำหรับการจัดการข้อมูลแบบเฉพาะกิจและงานเชลล์ทั่วไป
  • pq (prql-query)

    • มีการสร้าง pq ขึ้นโดยใช้ DuckDB, DataFusion และ PRQL เพื่อให้งานกับข้อมูลบนเทอร์มินัลทำได้ง่ายและสนุกขึ้น
    • ปัจจุบันอยู่ในสถานะ archived เพราะดูแลรักษาต่อได้ยาก แต่ถ้ามีคนมาร่วมมือก็อาจเปลี่ยนสถานการณ์ได้
  • การใช้ JSON และภาษาโปรแกรม

    • เมื่อเทียบกับการจัดการ JSON เป็นโครงสร้างข้อมูลอย่าง hash map ในภาษาโปรแกรม ก็ยังไม่ชัดเจนว่าข้อดีคืออะไร
    • ถ้าต้องการทำงานแบบโต้ตอบ ก็สามารถใช้ notebook หรือ REPL ได้