Mit der Veröffentlichung der MemoryStoreHashMap Datenstruktur hat Roblox alle bestehenden Limits für individuelle Datenstrukturen entfernt und diese durch ein einziges, globales "pro-Partition" Drosselungslimit ersetzt. Das genaue Limit schwankt basierend auf internen Werten und wie der automatische Partitionierungsprozess Ihre Daten verteilt, erlaubt jedoch im Allgemeinen eine viel höhere Nutzung vor der Drosselung, insbesondere für Hash-Maps. Dieses neue Limit ermöglicht eine flexible Nutzung von Speichermethoden über alle Datenstrukturen hinweg.
Partitionen
Die MemoryStores API speichert Daten in Partitionen, die einfach Unterteilungen des Speichers sind. Jedes Mal, wenn Sie ein Element in einem Speicher speichern, wird dieses Element auf genau einer Partition gespeichert. Partitionen werden vollständig von der MemoryStores API verwaltet; Sie müssen sich nicht selbst darum kümmern.
Partitionenzuweisung
Die Partitionierung des Speichers ist unterschiedlich, je nach der Datenstruktur, auf der ein Element gespeichert wird. Bei sortierten Karten und Warteschlangen erhält jede Datenstruktur eine einzelne Partition.
Betrachten Sie zum Beispiel ein Jahrmarktspiel mit einer sortierten Karte namens PlayerScores und einer Warteschlange namens PlayerLine von Spielern, die warten, um zu spielen:

Im Gegensatz zu sortierten Karten und Warteschlangen werden Hash-Maps mehreren Partitionen zugewiesen, und die Daten werden automatisch über diese Partitionen verteilt. Wenn Sie eine Hash-Map namens Prizes hinzufügen würden, könnten die Partitionen so aussehen:

Beachten Sie, wie die Hash-Map auf allen Partitionen existiert und jede Partition eine Teilmenge von Elementen hat.
Limits
Ein pro-Partition Limit ermöglicht eine höhere Durchsatzrate für alle Datenstrukturen. Es begünstigt auch Hash-Maps, da sie über alle Partitionen verteilt sind.
Betrachten Sie zum Beispiel ein pro-Partition Limit von 50.000 Anfragen pro Minute (RPM):
- Im besten Fall sind eine sortierte Karte und eine Warteschlange auf 50.000 RPM beschränkt, da jede auf einer einzelnen Partition verweilt.
- Anfragen an Hash-Maps werden über die Schlüssel der Elemente verteilt, die sich wiederum über die Partitionen erstrecken, sodass Hash-Maps ein viel höheres effektives Limit vor der Drosselung haben können, viele Male höher als die anderen Datenstrukturen, vorausgesetzt, die Anfragen werden über viele Elementschlüssel verteilt.
- Obwohl Hash-Maps durch das Verteilen von Anfragen über die Partitionen einen höheren Gesamtdurchsatz erreichen können, sind die einzelnen Elementschlüssel dennoch drosselungsbeschränkt, um die Systemstabilität aufrechtzuerhalten. Wenn der Großteil Ihres Verkehrs auf einen einzigen Elementschlüssel abzielt, kann es sein, dass dieser Schlüssel dennoch gedrosselt wird.
- Um effektiv zu skalieren und diese Limits pro Schlüssel zu vermeiden, implementieren Sie Schlüssel-Sharding. Verteilen Sie Lese- und Schreibvorgänge gleichmäßig über mehrere Elementschlüssel, um Engpässe zu verringern und eine reibungslose Leistung aufrechtzuerhalten.

Aus diesem Grund sind Hash-Maps normalerweise die beste Wahl für eine Datenstruktur im Speicher, wenn Sie keine Sortierung oder "First In, First Out"-Funktionalität benötigen. Für weitere Informationen siehe die Best Practices.