จะดึงข้อมูลยังไงดี? Batch, Streaming, Push หรือ Pull

จะดึงข้อมูลยังไงดี? 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