โดย Raghotham Murthy
ตอนที่เราสร้าง batch data pipelines จะมีโมเดลอยู่ 2 แบบคือ
- Data Time Window (DTW) Batching Model
- Arrival Time Window (ATW) Batching Model
Data Time Window Batching Model
โมเดลแบบนี้เราจะถึงข้อมูลจาก source โดยใช้ timestamp จาก source เลย เช่น ถ้าข้อมูลเก็บตอนวันที่ 2023-03-24 เราก็ดึงข้อมูลพวกนี้โดยใช้วันที่ 2023-03-24 เลย ซึ่งชีวิตของ data analyst ก็จะง่ายขึ้น เพราะเหมือนกับเรารับประกันว่าเราจะได้ข้อมูลของวันที่ 2023-03-24 ทั้งหมด
แต่ว่าโมเดล DTW จะไม่ค่อย predictable เท่าไหร่ เพราะว่าอาจจะมีข้อมูลที่ out-of-order อยู่ เช่นข้อมูลของวันนั้น ๆ ยังเก็บเข้า source ไม่ครบทั้งหมด ก็จะทำให้การดึงข้อมูลของเราล่าช้าได้ เพราะต้องรอข้อมูลของวันนั้นให้ครบก่อน (ไม่งั้นต้องมาดึงย้อนหลังเอง)
Arrival Time Window Batching Model
ATW จะเป็นเวลาที่เราได้รับข้อมูลจากการดึงข้อมูลนั้น ๆ คือประมาณว่าเราจะตั้ง schedule ดึงข้อมูล ณ เวลาหนึ่ง เช่น 8:00 น. แล้วข้อมูลที่เข้ามาที่ source ก่อนเวลา 8:00 น. ก็จะถูกดึงเข้ามา แบบนี้ก็จะมีข้อดีขึ้นไม่ต้องรอข้อมูลที่ out-of-order อยู่ ถ้าข้อมูลนั้นมีเมื่อไหร่ มันก็จะถูกดึงมาใน time window ถัดไป
ทั้งนี้ทั้งนั้น เราไม่ต้องเลือกข้างว่าจะทำ DTW หรือ ATW นะ จริง ๆ เราสามารถทำควบคู่กันไปได้เลย คือ เราอาจจะเริ่มที่ ATW ก่อน แล้วเก็บข้อมูลทั้ง data_timestamp
กับ arrival_timestamp
ไว้ที่ table เดียวกันตอนที่เราดึงข้อมูลมา ประมาณนี้
เสร็จแล้วก็อาจจะตั้ง schedule ทำ query อีกรอบหนึ่ง
เพื่อไปสร้าง table ที่เป็นแบบ DTW ตามรูปด้านล่าง และสุดท้ายเราก็ให้ data analyst มา query ที่ table นี้ที่เป็น DTW ได้เลย
สุดท้ายแล้ว data analyst สามารถเลือกได้ว่าเค้าจะ query ข้อมูลจาก table ไหน ถ้าอยากได้ข้อมูลเร็ว ๆ ก็ query จาก arrival_time_table
ได้ แต่ถ้าอยากได้ข้อมูลครบ ๆ หน่อยก็ query จาก closed_books_table
แทน