Wraz z wydaniem struktury danych MemoryStoreHashMap, Roblox usunął istniejące limity dla poszczególnych struktur danych i zastąpił je jednym, globalnym limitem "na partycję". Dokładny limit waha się w zależności od wartości wewnętrznych oraz od tego, jak proces automatycznego podziału rozdziela Twoje dane, ale zazwyczaj pozwala na znacznie wyższe wykorzystanie przed włączeniem ograniczeń, szczególnie w przypadku map haszowych. Ten nowy limit umożliwia elastyczne wykorzystanie pamięci w różnych strukturach danych.
Partycje
API MemoryStores przechowuje dane w partycjach, które są po prostu podziałami w pamięci. Kiedykolwiek zapisujesz element do pamięci, ten element jest przechowywany na dokładnie jednej partycji. Partycje są w pełni zarządzane przez API MemoryStores; nie musisz nimi zarządzać samodzielnie.
Przypisanie partycji
Przechowywanie w partycjach różni się w zależności od struktury danych, na której jest przechowywany element. Dla map posortowanych i kolejek każda struktura danych jest przypisana do jednej partycji.
Na przykład, rozważ grę karnawałową z posortowaną mapą o nazwie PlayerScores oraz kolejką o nazwie PlayerLine graczy czekających na grę:

W przeciwieństwie do map posortowanych i kolejek, mapy haszowe mają przypisanych wiele partycji, a dane są automatycznie rozdzielane pomiędzy te partycje. Jeśli dodasz mapę haszową o nazwie Prizes, partycje mogą wyglądać następująco:

Zauważ, że mapa haszowa istnieje na wszystkich partycjach, a każda partycja ma jakąś podgrupę elementów.
Limity
Posiadanie limitu na poziomie partycji pozwala na wyższą przepustowość wszystkich struktur danych. Sprzyja to również mapom haszowym, ponieważ są one rozdzielane pomiędzy wszystkie partycje.
Na przykład, rozważ przykładowy limit na poziomie partycji wynoszący 50 000 żądań na minutę (RPM):
- W najlepszym przypadku, mapa posortowana i kolejka są ograniczone do 50 000 RPM, ponieważ każda z nich znajduje się na jednej partycji.
- Żądania do map haszowych są rozproszone pomiędzy klucze elementów, które same są rozproszone pomiędzy partycjami, więc mapy haszowe mogą mieć znacznie wyższy efektywny limit przed włączeniem ograniczeń, wielokrotnie przewyższający inne struktury danych, zakładając, że żądania są rozdzielane pomiędzy wiele kluczy elementów.
- Chociaż mapy haszowe mogą osiągnąć wyższą ogólną przepustowość poprzez rozprzestrzenienie żądań pomiędzy partycjami, poszczególne klucze elementów są nadal ograniczone w celu utrzymania stabilności systemu. Jeśli większość Twojego ruchu kieruje się na pojedynczy klucz elementu, ten klucz może nadal zostać ograniczony.
- Aby skutecznie skalować i unikać tych limitów na poziomie klucza, wdrażaj sharding kluczy. Rozprzestrzeniaj odczyty i zapisy równomiernie pomiędzy wieloma kluczami elementów, aby zmniejszyć wąskie gardła i utrzymać płynność działania.

Z tego powodu, jeśli nie potrzebujesz sortowania ani funkcjonalności "pierwszy wchodzi, pierwszy wychodzi", mapy haszowe są zazwyczaj najlepszym wyborem dla struktury danych pamięci. Aby uzyskać więcej informacji, zapoznaj się z najlepszymi praktykami.