จาก blog ก่อนหน้านี้เรื่องของ caching data หรือข้อมูลชั่วคราว
ช่วยทำให้การดึงหรือจัดการข้อมูลได้รวดเร็วขึ้น
รวมทั้งช่วยลดภาระงานต่าง ๆ ลงไปด้วย
(แต่ไปเพิ่มงานให้ที่อื่น)

มีคำถามเรื่องรูปแบบของ caching data ว่าเป็นอย่างไรบ้าง ?
ขยายความเรื่องรูปแบบของ caching data
คือรูปแบบของการสร้างข้อมูลนั่นเองว่าเป็นอย่างไร
ยกตัวอย่างเช่น

ข้อมูลของ cacheing data จะเพิ่มขึ้นเรื่อย ๆ จากการใช้งาน

เช่นข้อมูลของผู้ใช้งาน จะถูกสร้างใน cached ก็ต่อเมื่อ
ผู้ใช้งานนั้นถูกเรียกใช้ทำให้ครั้งต่อไป
ไม่จำเป็นต้องไปดึงข้อมูลจาก database หลักอีก
ไปจนกว่าข้อมูลใน cache จะหายไป หรือ หมดอายุ
แบบนี้จะเรียกว่า เป็นการสร้าง cached แบบ Hot data หรือ incremental data นั่นเอง

ดูคร่าว ๆ แล้วเหมือนจะดี !!
แต่เมื่อมีผู้ใช้งานจำนวนมาก ๆ เข้ามาใช้งานพร้อม ๆ กัน
ลองคิดดูว่าจะเกิดอะไรขึ้น ?
แน่นอนว่า ข้อมูลใน cached นั้นจะไม่มีเลย
ดังนั้นภาระจะไปตกอยู่กับ database และที่จัดเก็บข้อมูลหลัก
ซึ่งปัจจุบันก็มีปัญหาหรือเปล่านะ
ถ้าไม่มีปัญหาคงไม่ใช้ cached มั้ง ?

ดังนั้นเราจำเป็นต้องแก้ไขปัญหานี้เช่นกัน
แต่ก็ต้องดูในเรื่องของ data workflow ด้วย ว่า
เป็นอย่างไร มิเช่นนั้นอาจจะก่อให้เกิดปัญหาตามมาได้

ตัวอย่างการแก้ไขปัญหานี้ก็เช่น การสร้าง cached ขึ้นมาก่อนจะถูกใช้งาน

เช่นการดึงข้อมูลทั้งหมด หรือ ข้อมูลที่คิดว่าจะถูกใช้งาน
นำข้อมูลมาจากประวัติการใช้งานก็ได้
ทำให้เมื่อผู้ใช้งานต้องการข้อมูลก็จะได้ข้อมูลจาก cached เร็วขึ้น
ประสิทธิภาพก็เร็วขึ้นแต่ก็ไม่ง่ายนะ !!
แบบนี้เราจะเรียกว่า การ Warm data นั่นเอง

ต่อมาข้อมูลใน cached มักจะมี expired time หรือวันหมดอายุ​

ก็จะทำให้ข้อมูลหาย และอาจจะหายเยอะ
ส่งผลต่อประสิทธิภาพของ cached ที่ลดลงอีกด้วย
และอาจจะกลับไปอยู่ในสถานการณ์แบบ Hot data ก็เป็นได้
ถ้ามีข้อมูลที่หมดอายุพร้อม ๆ กันจำนวนมาก

ดังนั้นจำเป็นต้องคิดวิธีจัดการ
นั่นคือ เมื่อข้อมูลชุดใด ๆ ก็ตามจะหมดอายุระบบ cached ก็จะต้องไปดึงข้อมูลมาใหม่
หรือ การ refresh ข้อมูลใน cached นั่นเอง
หรือทำการ reload caching data
อาจจะทำแบบ sync หรือ async ก็ได้

น่าจะทำให้เห็นรูปแบบการใช้งาน caching data มากยิ่งขึ้น

Tags: