Redis - การแบ่งพาร์ติชัน

การแบ่งพาร์ติชันเป็นกระบวนการแบ่งข้อมูลของคุณออกเป็นอินสแตนซ์ Redis หลาย ๆ อินสแตนซ์ดังนั้นทุกอินสแตนซ์จะมีคีย์ของคุณเพียงบางส่วนเท่านั้น

ประโยชน์ของการแบ่งพาร์ติชัน

  • ช่วยให้ฐานข้อมูลมีขนาดใหญ่ขึ้นโดยใช้ผลรวมของหน่วยความจำของคอมพิวเตอร์หลายเครื่อง หากไม่มีการแบ่งพาร์ติชันคุณจะ จำกัด จำนวนหน่วยความจำที่คอมพิวเตอร์เครื่องเดียวสามารถรองรับได้

  • ช่วยให้สามารถปรับขนาดพลังการคำนวณไปยังหลายคอร์และคอมพิวเตอร์หลายเครื่องและแบนด์วิธเครือข่ายไปยังคอมพิวเตอร์หลายเครื่องและอะแดปเตอร์เครือข่าย

ข้อเสียของการแบ่งพาร์ติชั่น

  • โดยปกติจะไม่รองรับการทำงานที่เกี่ยวข้องกับหลายคีย์ ตัวอย่างเช่นคุณไม่สามารถทำการตัดกันระหว่างสองชุดได้หากเก็บไว้ในคีย์ที่แมปกับอินสแตนซ์ Redis ที่ต่างกัน

  • ไม่สามารถใช้การทำธุรกรรมซ้ำที่เกี่ยวข้องกับหลายคีย์ได้

  • รายละเอียดการแบ่งพาร์ติชันเป็นกุญแจสำคัญดังนั้นจึงเป็นไปไม่ได้ที่จะแบ่งชุดข้อมูลด้วยคีย์ขนาดใหญ่เพียงปุ่มเดียวเหมือนกับชุดที่เรียงขนาดใหญ่มาก

  • เมื่อใช้การแบ่งพาร์ติชันการจัดการข้อมูลจะซับซ้อนมากขึ้น ตัวอย่างเช่นคุณต้องจัดการไฟล์ RDB / AOF หลายไฟล์และในการสำรองข้อมูลของคุณคุณต้องรวบรวมไฟล์การคงอยู่จากอินสแตนซ์และโฮสต์หลาย ๆ

  • การเพิ่มและลบความจุอาจมีความซับซ้อน ตัวอย่างเช่น Redis Cluster สนับสนุนการปรับสมดุลข้อมูลแบบโปร่งใสเป็นส่วนใหญ่พร้อมความสามารถในการเพิ่มและลบโหนดขณะรันไทม์ อย่างไรก็ตามระบบอื่น ๆ เช่นการแบ่งพาร์ติชันฝั่งไคลเอ็นต์และพร็อกซีไม่รองรับคุณสมบัตินี้ เทคนิคที่เรียกว่าPresharding ช่วยในเรื่องนี้

ประเภทของการแบ่งพาร์ติชัน

มีการแบ่งพาร์ติชันสองประเภทใน Redis สมมติว่าเรามีอินสแตนซ์ Redis สี่อินสแตนซ์ R0, R1, R2, R3 และคีย์จำนวนมากที่แสดงถึงผู้ใช้เช่นผู้ใช้: 1, ผู้ใช้: 2, ... และอื่น ๆ

การแบ่งช่วง

การแบ่งช่วงสามารถทำได้โดยการแมปช่วงของวัตถุลงในอินสแตนซ์ Redis ที่ระบุ สมมติว่าในตัวอย่างของเราผู้ใช้จาก ID 0 ถึง ID 10000 จะเข้าสู่อินสแตนซ์ R0 ในขณะที่ผู้ใช้จาก ID 10001 ถึง ID 20000 จะเข้าสู่อินสแตนซ์ R1 และอื่น ๆ

การแบ่งพาร์ติชันแฮช

ในการแบ่งพาร์ติชันประเภทนี้ฟังก์ชันแฮช (เช่นฟังก์ชันโมดูลัส) ถูกใช้เพื่อแปลงคีย์เป็นตัวเลขจากนั้นข้อมูลจะถูกเก็บไว้ในอินสแตนซ์ Redis ที่แตกต่างกัน