DuckDB - โอเพนซอร์ส Embedded OLAP DB
(duckdb.org)"SQLite for Analytics"
-
Embedded RDBMS ที่ปรับแต่งมาสำหรับคิวรีวิเคราะห์ที่ซับซ้อน
-
เขียนด้วย C++11 เป็น single binary ที่ไม่มี dependency และทำงานภายใน host process
-
มี API สำหรับ Python/R/Java/C/C++/Node.js
-
จัดเก็บ DB ไว้ในไฟล์เดียวแบบเดียวกับ SQLite
-
Use case ที่เหมาะสม
→ ประมวลผลและจัดเก็บข้อมูลแบบตาราง เช่น CSV/Parquet
→ การวิเคราะห์ข้อมูลแบบ interactive ที่ทำ Join และ Aggregate กับตารางขนาดใหญ่หลายตาราง
→ เมื่อต้องทำการเปลี่ยนแปลงขนาดใหญ่กับตารางขนาดใหญ่หลายตารางพร้อมกัน (เช่น เพิ่มหลายแถว หรือเพิ่ม/ลบ/เปลี่ยนคอลัมน์ เป็นต้น)
6 ความคิดเห็น
ดูเหมือนว่ามีเป้าหมายจะแบ่งฝั่งฐานข้อมูลแบบฝังตัวออกเป็น OLTP ใช้ SQLite และ OLAP ใช้ DuckDB
ต่างจาก SQLite ที่ออกมาตั้งแต่ 20 ปีก่อนและตอนนี้แทบจะครองฝั่ง embedded ไปแล้ว นี่เป็นโอเพนซอร์สน้องใหม่ที่เพิ่งออกเวอร์ชัน 0.1 มาได้แค่ราว 1 ปีครึ่งเอง ^^
เมื่อไม่กี่วันก่อนก็เพิ่งเพิ่ม node.js API เข้ามาใหม่ เลยน่าจะเอาไปใช้งานได้สะดวกและหลากหลายขึ้น
ทุกครั้งที่เห็นก็รู้สึกเหมือนเดิมว่าผมยังไม่ค่อยเข้าใจความแตกต่างระหว่าง OLTP กับ OLAP แบบชัดเจนเท่าไรครับ ฮือ ดูเหมือนจะไม่ค่อยมีเนื้อหาที่อธิบายได้แบบเคลียร์ ๆ ให้หายข้องใจด้วย
ใช่ครับ เพราะคำอธิบายที่เรามักเจอกันก็คือธุรกรรมกับงานวิเคราะห์ตามชื่อนั่นแหละ เลยทำให้ RDB ชื่อดังทั่วไปทั้งเขียนทั้งลบก็เร็ว และงานวิเคราะห์ก็เร็วด้วย อย่างเช่น Oracle หรือ PostgreSQL ก็ไม่ได้มีฝั่งไหนที่เรียกได้ว่าถนัดเป็นพิเศษแบบชัดเจนอยู่แล้วด้วย... ส่วนการวิเคราะห์ในยุคบิ๊กดาต้าก็ให้ความรู้สึกว่าอย่างไรก็ไกลเกินขีดความสามารถของพวกนั้นไปมากแล้วอยู่ดี เลยแค่จะบอกว่าตอนนี้ก็ยังไม่ค่อยเข้าใจว่าการแยก OLTP กับ OLAP มันมีความหมายอะไรอยู่มากน้อยแค่ไหน ^^;
OLTP เหมาะกับงานอย่างการเพิ่ม ดึงออก ลบ ฯลฯ
ส่วน OLAP คือการนำข้อมูลที่มีอยู่ข้างในมาจัดการในรูปแบบต่าง ๆ เพื่อวิเคราะห์
มองคร่าว ๆ ได้ประมาณนี้ไหมครับ?
อืม.. วิธีที่ผมอธิบายคือ
OLTP คือแนวนอน: เป็นการเพิ่มอะไรบางอย่างทีละแถว (มีคำสั่งซื้อใหม่เข้ามา)
OLAP คือแนวตั้ง: เป็นการอ่านทั้งคอลัมน์เพื่อคำนวณหรือแก้ไขอะไรบางอย่าง (คำนวณค่าเฉลี่ยยอดขายรายวัน)
OLTP เป็นแนวนอน
OLAP เป็นแนวตั้งนะ