DynamoDB Write Sharding
สมมติว่ามีกรณีการใช้งาน แอปพลิเคชันโหวต ที่ผู้ใช้สามารถโหวตให้ผู้สมัครสองคน: ผู้สมัคร A และผู้สมัคร B
- หากเราใช้ candidate ID เป็น partition key ข้อมูลทั้งหมดจะถูกแบ่งไปเพียง สองพาร์ติชัน คือของผู้สมัคร A และผู้สมัคร B
- การตั้งค่านี้จะทำให้เกิด hot partition ซึ่งส่งผลกระทบต่อทั้งการเขียน (write) และการอ่าน (read)

การแก้ปัญหา Hot Partition
วิธีแก้คือ กระจาย candidate ID ให้หลากหลายมากขึ้น โดยเพิ่ม suffix หรือ prefix เข้าไปในค่า partition key
- ตัวอย่าง: แทนที่จะใช้
"candidateA"หรือ"candidateB"เพียงอย่างเดียว - สามารถใช้
"candidateA11","candidateB17","candidateB18","candidateA20"
การทำแบบนี้จะทำให้ partition key มีความเป็นเอกลักษณ์มากขึ้น และกระจายข้อมูลไปยังหลายพาร์ติชันอย่างสม่ำเสมอ
- ส่งผลให้ข้อมูลสามารถเขียนและอ่านได้เต็มประสิทธิภาพโดยไม่เกิด hot partition
วิธีการสร้าง Suffix หรือ Prefix
มี 2 วิธีที่นิยมใช้:
- ใช้ suffix แบบสุ่ม (random suffix)
- ใช้ suffix จากการคำนวณด้วย hashing algorithm
ทั้งสองวิธีช่วยให้ partition key ถูกกระจายอย่างดี
สรุป
- การใช้ candidate ID เพียงอย่างเดียว เป็น partition key อาจทำให้เกิด hot partition เพราะพาร์ติชันมีจำกัด
- การเพิ่ม suffix หรือ prefix ช่วยกระจายข้อมูลให้พาร์ติชันสมดุล
- Suffix หรือ prefix สามารถสร้างแบบ สุ่ม หรือ hashing เพื่อให้ได้การกระจายที่ดีขึ้น
- การออกแบบ partition key ที่ดี เป็นสิ่งสำคัญสำหรับการปรับปรุงประสิทธิภาพการเขียนและอ่านใน DynamoDB