เมื่อตอนที่ปล่อยโครงสร้างข้อมูล MemoryStoreHashMap Roblox ได้ลบข้อจำกัดทั้งหมดที่มีอยู่สำหรับโครงสร้างข้อมูลแต่ละประเภทและแทนที่ด้วยข้อจำกัดการควบคุม "ต่อการแบ่งส่วน" ทั่วไปที่มีอยู่เพียงหนึ่งเดียว ข้อจำกัดที่แน่นอนจะแปรผันตามค่าภายในและวิธีการที่กระบวนการแบ่งส่วนอัตโนมัติจัดการข้อมูลของคุณ แต่โดยทั่วไปจะอนุญาตการใช้งานที่สูงกว่าก่อนการควบคุม โดยเฉพาะอย่างยิ่งสำหรับแฮชแมพ ข้อจำกัดใหม่นี้ทำให้การใช้งานพื้นที่จัดเก็บข้อมูลมีความยืดหยุ่นมากขึ้นทั่วทั้งโครงสร้างข้อมูลทั้งหมด
การแบ่งส่วน
API MemoryStores จะเก็บข้อมูลใน การแบ่งส่วน ซึ่งเป็นการแบ่งย่อยของพื้นที่จัดเก็บข้อมูล ทุกครั้งที่คุณเขียนรายการลงในพื้นที่จัดเก็บข้อมูล ข้อมูลนั้นจะถูกเก็บไว้ในการแบ่งส่วนเดียวเท่านั้น การแบ่งส่วนถูกจัดการอย่างเต็มที่โดย API MemoryStores; คุณไม่จำเป็นต้องจัดการมันด้วยตัวคุณเอง
การมอบหมายการแบ่งส่วน
การจัดเก็บในแต่ละการแบ่งส่วนจะแตกต่างกันตามโครงสร้างข้อมูลที่รายการนั้นถูกเก็บไว้ สำหรับแผนที่ที่เรียงลำดับและคิว แต่ละโครงสร้างข้อมูลจะถูกมอบหมายให้มีการแบ่งส่วนเดียว
ยกตัวอย่างเช่น เกมงานรื่นเริงที่มีแผนที่เรียงลำดับชื่อว่า PlayerScores และคิวชื่อว่า PlayerLine ของผู้เล่นที่รอเล่นเกม:

แตกต่างจากแผนที่เรียงลำดับและคิว แฮชแมพจะได้รับการแบ่งส่วนหลายส่วน และข้อมูลจะถูกกระจายอัตโนมัติไปยังการแบ่งส่วนนั้น หากคุณเพิ่มแฮชแมพชื่อว่า Prizes การแบ่งส่วนอาจมีลักษณะดังนี้:

โปรดสังเกตว่าแฮชแมพมีอยู่ในทุกการแบ่งส่วน และแต่ละการแบ่งส่วนมีบางชุดของรายการ
ข้อจำกัด
การมีข้อจำกัดต่อการแบ่งส่วนหนึ่งช่วยให้มีการส่งข้อมูลที่สูงขึ้นไปยังโครงสร้างข้อมูลทั้งหมด นอกจากนี้ยังเข้าข้างแฮชแมพเนื่องจากข้อมูลได้ถูกกระจายไปยังทุกการแบ่งส่วน
ยกตัวอย่างเช่น ข้อจำกัดต่อการแบ่งส่วนหนึ่งในตัวอย่างคือ 50,000 คำขอในหนึ่งนาที (RPM):
- ในกรณีที่ดีที่สุด แผนที่เรียงลำดับและคิวถูกจำกัดอยู่ที่ 50,000 RPM เนื่องจากแต่ละรายการอยู่ในการแบ่งส่วนเดียว
- คำขอไปยังแฮชแมพจะถูกกระจายตามคีย์รายการซึ่งเองก็ถูกกระจายไปยังการแบ่งส่วน ดังนั้นแฮชแมพจึงสามารถมีข้อจำกัดที่มีประสิทธิภาพสูงกว่าก่อนการควบคุมหลายเท่าของโครงสร้างข้อมูลอื่น ๆ หากคำขอกระจายไปตามคีย์รายการหลายตัว
- แม้ว่าแฮชแมพจะสามารถบรรลุการส่งข้อมูลโดยรวมที่สูงขึ้นโดยการกระจายคำขอไปยังการแบ่งส่วน แต่คีย์รายการแต่ละตัวก็ยังถูกจำกัดอัตราเพื่อรักษาความเสถียรของระบบ หากการจราจรส่วนใหญ่มุ่งเป้าไปที่คีย์รายการเดียว คีย์นั้นอาจยังถูกควบคุม
- เพื่อการขยายตัวอย่างมีประสิทธิภาพและหลีกเลี่ยงข้อจำกัดต่อคีย์ แนะนำให้ใช้การแบ่งชิ้นสำหรับคีย์ กระจายการอ่านและการเขียนให้สม่ำเสมอบนคีย์รายการหลายตัวเพื่อลดจุดขวดและรักษาประสิทธิภาพที่ราบรื่น

ด้วยเหตุนี้ หากคุณไม่ต้องการการเรียงลำดับหรือฟังก์ชัน "เข้าเป็นคนแรก ออกเป็นคนแรก" แฮชแมพมักจะเป็นทางเลือกที่ดีที่สุดสำหรับโครงสร้างข้อมูลพื้นที่จัดเก็บข้อมูล สำหรับข้อมูลเพิ่มเติม โปรดดูที่ แนวทางปฏิบัติที่ดีที่สุด.