หลายคนอาจจะได้ยินคำว่า Materialized View กัน แล้วอาจจะนึกว่ามันคือ View ปกติหรือเปล่า อันนี้ต้องบอกว่าไม่ใช่ครับ มันมีความต่างกัน
ต่างกันอย่างไร?
View เหมือนเป็น Virtual Table ที่ไม่มีเก็บ Physical Data ไว้เลย ดังนั้นเวลาที่เราเรียก View เมื่อไหร่ เราก็จะไปดึงข้อมูลทุกครั้ง
ส่วน Materialized View นี่ เราอาจจะมองว่ามันคือลูกผสมระหว่าง View กับ Table ก็ได้นะ คือมันจะคล้าย ๆ กับ View แต่ต่างตรงที่ว่า Materialized View จะเก็บ Result ที่ได้มาไว้ใน Table จริง ๆ (Physical Data) จนกว่าจะมีการ Refresh ดังนั้นเวลาที่เราใช้ Materialized View เราก็จะต้องคิดเรื่องการ Refresh ด้วย
Use Case ในงานใช้งานล่ะ?
- View ใช้ตอนที่เราไม่ค่อยได้ Access ข้อมูล แต่ว่าข้อมูลในตารางมีการอัพเดทอยู่บ่อยครั้ง
- ส่วน Materialized View ใช้ตอนที่เรา Access ข้อมูลบ่อย ๆ แต่ว่าข้อมูลใน Table ไม่ค่อยได้ถูกอัพเดท
ส่วนใหญ่เราจะใช้ Materialized View เหมือนเป็น Cache ของข้อมูลที่เรา Join มาแล้ว หรือเอามาประมวลผลแล้วนั่นเอง ซึ่งก็จะทำให้เราดึงข้อมูลได้รวดเร็วขึ้น
เราต้องมาคอย Refresh ข้อมูล?
ถ้าเอาจริง ๆ ก็ใช่ อย่างไรก็ดี Data Warehouse หรือ Database ส่วนใหญ่จะมีกระบวนการนี้โดยอัตโนมัติกันอยู่แล้ว
- อย่างของ BigQuery ก็จะ Refresh ตอนที่ Base Table มีการอัพเดท
- ส่วนของ ClickHouse ก็เช่นกัน จะ Refresh ตอนที่มีข้อมูลใหม่เข้ามาที่ Base Table ซึ่งในอนาคต เราจะสามารถตั้งเวลา Refresh ได้
ใครที่กำลังมองหาวิธีเพิ่มความเร็วในการดึงข้อมูลอยู่ การใช้ Materialized View ก็เป็นตัวเลือกที่น่าสนใจอยู่นะครับ