Con el lanzamiento de la estructura de datos MemoryStoreHashMap, Roblox eliminó todos los límites existentes para estructuras de datos individuales y los reemplazó con un único límite de "throttling por partición" global. El límite exacto fluctúa según valores internos y cómo el proceso automático de particionamiento distribuye tus datos, pero, en general, permite un uso mucho más alto antes de limitarse, particularmente para mapas hash. Este nuevo límite permite un uso flexible de los almacenes de memoria en todas las estructuras de datos.
Particiones
La API de MemoryStores almacena datos en particiones, que son simplemente subdivisiones de almacenamiento. Siempre que escribas un elemento en un almacén de memoria, ese elemento se almacena en exactamente una partición. Las particiones son completamente gestionadas por la API de MemoryStores; no necesitas gestionarlas tú mismo.
Asignación de particiones
El almacenamiento de particiones es diferente según la estructura de datos en la que se está almacenando un elemento. Para mapas ordenados y colas, cada estructura de datos se asigna a una única partición.
Por ejemplo, considera un juego de carnaval con un mapa ordenado llamado PlayerScores y una cola llamada PlayerLine de jugadores que están esperando para jugar:

A diferencia de los mapas ordenados y las colas, los mapas hash se asignan múltiples particiones, y los datos se distribuyen automáticamente entre estas particiones. Si agregas un mapa hash llamado Prizes, las particiones podrían verse así:

Observa cómo el mapa hash existe en todas las particiones y cada partición tiene un subconjunto de elementos.
Límites
Tener un límite por partición permite un mayor rendimiento a todas las estructuras de datos. También favorece a los mapas hash, porque están distribuidos en todas las particiones.
Por ejemplo, considera un ejemplo de límite por partición de 50,000 solicitudes por minuto (RPM):
- En el mejor de los casos, un mapa ordenado y una cola están limitados a 50,000 RPM, porque cada uno reside en una única partición.
- Las solicitudes a los mapas hash se distribuyen entre las claves de los elementos, que a su vez están esparcidas a través de las particiones, por lo que los mapas hash pueden tener un límite efectivo mucho más alto antes de ser limitados, muchas veces superior al de las otras estructuras de datos asumiendo que las solicitudes se distribuyan entre muchas claves de elementos.
- Aunque los mapas hash pueden lograr un mayor rendimiento general al distribuir solicitudes entre particiones, las claves individuales de los elementos aún están limitadas por la tasa para mantener la estabilidad del sistema. Si la mayor parte de tu tráfico se dirige a una sola clave de elemento, esa clave puede seguir siendo limitada.
- Para escalar de manera efectiva y evitar estos límites por clave, implementa el "sharding" de claves. Distribuye las lecturas y escrituras de manera uniforme entre múltiples claves de elementos para reducir cuellos de botella y mantener un rendimiento fluido.

Por esta razón, si no necesitas funcionalidad de ordenamiento o "primero en llegar, primero en ser atendido", los mapas hash son generalmente la mejor opción para una estructura de datos de almacén de memoria. Para más información, consulta las mejores prácticas.