จากบทความเรื่อง Reducing Database Loading
อธิบายถึงแนวทางการลดการใช้งาน database ได้อย่างไรบ้าง
รวมทั้งแนวทางให้ database มีความยืดหยุ่นต่อการใช้งานมากยิ่งขึ้น
มาดูว่ามีวิธีการอะไรที่น่าสนใจบ้าง
เป็นเรื่องพื้นฐานที่สำคัญมาก ๆ
มาเริ่มกันเลย
วิธีการแรก ใช้ caching data สำหรับการอ่านข้อมูล
เพื่อช่วยลดการอ่านข้อมูลจาก database ตรง ๆ
แสดงการทำงานดังรูป
ปัญหาของการใช้งาน caching data คือ ความถูกต้องของข้อมูล
ถ้าข้อมูลใน database มีการเปลี่ยนแปลง
ข้อมูลใน caching ต้องเปลี่ยนแปลงด้วยเช่นกัน
มิเช่นนั้นอาจจะก่อให้เกิดปัญหาตามมาได้
วิธีการที่สอง Denormalization
ปกติข้อมูลมักจะออกแบบในรูปแบบ normalization
ซึ่งมีประโยชน์ต่อการจัดเก็บ
แต่ในเรื่องของการอ่าน จะทำให้อ่านจากหลาย ๆ ตาราง
หรือแยกกันหลาย ๆ ที่
ทำให้การอ่านช้าลงอย่างมาก
ยิ่งมีการใช้งานมากขึ้น และ จำนวนข้อมูลสูงขึ้น
ดังนั้น จะดีกว่าไหม ถ้ารวมข้อมูลไว้ที่เดียวกัน
ยกตัวอย่างการสร้างข้อมูลสำหรับการอ่านขึ้นมาแบบ synchornous
หรืออาจจะทำการ replication ข้อมูลแบบ asynchronous ก็ได้
มีวิธีการเพียง เช่น
- CQRS
- ETL
- CDC
- Streaming
วิธีการที่สาม Async Request/Response
แสดงการทำงานดังรูป
จะทำการส่ง event จาก request ต่าง ๆ ไปยัง event handler
เพื่อลดความกดดันจาก request ปริมาณมาก ๆที่เข้าใช้งาน database
ถ้าเป็นแบบปกติคือ synchronous เมื่อมี request มาเยอะ ๆ
ระบบจะทำการสร้าง thread ขึ้นมา เพื่อรองรับ request เหล่านั้น
ซึ่งอาจจะส่งผลต่อ performance นั่นเอง
ดังนั้น ถ้าแยกออกมา และ ติดต่อสื่อสารแบบ asynchronous
น่าจะช่วยลดปัญหาลง
แต่การทำงานต้องไม่ช้า หรือ ส่งผลต่อผู้ใช้งานมากจนเกินไป
หรืออาจจะต้องมีการออกแบบ process การใช้งานให้เหมาะสมอีกด้วย