สรุปจากการอ่านบทความ How Quora scaled MySQL to 100k+ Queries Per Second ?
เห็นใน feed มีการ share บทความเรื่อง How Quora scaled MySQL to 100k+ Queries Per Second เป็นการ scale MySQL database ของระบบ Quora ซึ่งเป็นระบบถามตอบปัญหาต่าง ๆ นั่นเอง โดยมีการใช้งานคร่าว ๆ คือ
ข้อมูลต่าง ๆ จะเก็บไว้ใน MySQL นั่นเอง ดังนั้นมาดูกันว่าทางระบบทำการ scale กันอย่างไร
ในการจัดการนั้น จะแบ่งออกเป็น 3 เรื่องตามรูปแบบของการใช้งาน
มารายละเอียดแต่ละหัวข้อดังนี้
เรื่องที่ 1 จำนวนการอ่านข้อมูล (Select)
เนื่องจากระบบ Quora นั้นมีอัตราการอ่านข้อมูลที่สูงมาก ๆ การ scale ด้านอ่านข้อมูลจึงสำคัญมาก ๆ
ซึ่งจะแบ่งการจัดการหรือปรับปรุงเป็น 2 เรื่องหลัก ๆ คือ
โดยรวม ๆ แล้ว ต้องให้ database ทำงานเท่าที่จำเป็นเท่านั้น ไม่ควรให้ทำงานอะไรที่เยอะเกินไป
ยกตัวอย่างเช่น
ส่วนในการใช้งาน caching ก็ต้องระวังการ cache ที่ไม่ดีด้วยเช่นกันไม่ใช่ต้อง caching ข้อมูลทั้งหมดเสมอไป
ใน table ใด มีข้อมูลที่เยอะ ๆ ก็ต้องระวังเพราะว่า เปลือง resource มาก ๆ performance ก็แย่
การ backup ก็ลำบาก
ดังนั้น ต้องเข้าใจก่อนว่าข้อมูลอะไรที่ต้องการใช้งาน หรือ ใช้งานจริง ๆ อะไรที่ไม่ใช้ก็ลบทิ้งไปบ้าง (retention policy) หรือต้อง split ข้อมูลเป็นกลุ่ม ๆ ตามการใช้งานเป็นต้น
ส่วนเรื่องการจัดการ storage ของ database จะใช้งาน RockDB
เรื่องที่ 2 จำนวนการเขียนข้อมูล (Insert, Update, Delete)
ในระบบมีการเขียนข้อมูลที่ไม่เยอะมากนักโดย MySQL จะเป็น cluster (master/slave) ก็ยังมีปัญหาการ sync ข้อมูลจาก master ไปยัง slave ที่ช้า เมื่อมีการใช้งานเยอะขึ้น เลยปรับมาใช้การ sunc แบบ parallel แทน ถ้าส่วนงานไหนที่ต้องเขียนเยอะ ๆ จะใช้งาน HBase แทน รายละเอียดการ optimize database เพิ่มเติม