จะดึงข้อมูลยังไงดี? Batch, Streaming, Push หรือ Pull
Data Ingestion คือกระบวนการ “พาข้อมูลจากต้นทาง (Source) เข้าสู่ระบบปลายทาง (Data Platform) เช่น Database, Data Warehouse, Data Lake หรือระบบ Analytics
การออกแบบ Ingestion จะคิดจาก 2 เรื่องหลัก
- ข้อมูลเข้ามาบ่อยแค่ไหน
- ใครเป็นฝ่ายเริ่มส่งข้อมูล
1. Batch Processing
แนวคิด: เก็บข้อมูลเป็นก้อน (batch) แล้วประมวลผลทีละชุด
ลักษณะ:
ใช้สำหรับงานที่ไม่ต้องการ real-time เช่น รายงานรายวัน, การอัปเดตข้อมูลทุกชั่วโมง
ตัวอย่าง: ดึงข้อมูลธุรกรรมทุกวันจากระบบ POS → Data Warehouse
ข้อดี:
- ง่ายต่อการจัดการ
- เหมาะกับงานที่มีปริมาณข้อมูลมาก
ข้อเสีย: มี latency สูง (ข้อมูลไม่สด)
2. Streaming Processing
แนวคิด: ประมวลผลข้อมูลทันทีที่เข้ามา (real-time หรือ near real-time)
ลักษณะ:
ใช้สำหรับงานที่ต้องการข้อมูลสด เช่น Fraud Detection, IoT Sensor Monitoring
ตัวอย่าง: ข้อมูลจากเซ็นเซอร์ส่งเข้ามาทุกวินาที → ระบบวิเคราะห์ทันที
ข้อดี:
- Latency ต่ำ
- เหมาะกับ use case ที่ต้องการตอบสนองเร็ว
ข้อเสีย:
- ซับซ้อนกว่า batch
- ต้องใช้เครื่องมือเฉพาะ เช่น Kafka, Flink, Spark Streaming
3. Push vs Pull
Push Model
Source → ส่งข้อมูลไปยัง Target โดยอัตโนมัติ
ตัวอย่าง: Webhook ส่ง event ไปยัง API ของระบบปลายทาง
ข้อดี: ลดการ polling, ข้อมูลถึงเร็ว
ข้อเสีย: ต้องจัดการ retry และ error handling ที่ฝั่ง source
Pull Model
Target → ดึงข้อมูลจาก Source ตามเวลาที่กำหนด
ตัวอย่าง: ระบบ ETL ดึงข้อมูลจาก Database ทุก 24 ชั่วโมง
ข้อดี: ควบคุมการดึงข้อมูลได้
ข้อเสีย: อาจเกิด latency และโหลดสูงถ้าดึงบ่อย
สรุป
- Batch + Pull → ใช้ในงานรายวัน เช่น สร้างรายงาน
- Streaming + Push → ใช้ในงาน real-time เช่น IoT, Fraud Detection