Con il rilascio della struttura dati MemoryStoreHashMap, Roblox ha rimosso tutti i limiti esistenti per le singole strutture dati e li ha sostituiti con un singolo limite globale di "throttling per partizione". Il limite esatto varia in base a valori interni e a come il processo di partizionamento automatico distribuisce i tuoi dati, ma generalmente consente un utilizzo molto più elevato prima del throttling, in particolare per le hash map. Questo nuovo limite consente un utilizzo flessibile dei memory store in tutte le strutture dati.
Partizioni
L'API MemoryStores memorizza i dati su partizioni, che sono semplici suddivisioni di archiviazione. Ogni volta che scrivi un elemento in un memory store, quell'elemento viene memorizzato su esattamente una partizione. Le partizioni sono completamente gestite dall'API MemoryStores; non è necessario gestirle tu stesso.
Assegnazione delle partizioni
L'archiviazione delle partizioni è diversa a seconda della struttura dati su cui un elemento viene memorizzato. Per le mappe ordinate e le code, ogni struttura dati viene assegnata a una singola partizione.
Ad esempio, considera un gioco da luna park con una mappa ordinata chiamata PlayerScores e una coda chiamata PlayerLine di giocatori in attesa di giocare:

A differenza delle mappe ordinate e delle code, le hash map sono allocate su più partizioni e i dati vengono distribuiti automaticamente tra queste partizioni. Se aggiungessi una hash map chiamata Prizes, le partizioni potrebbero apparire così:

Nota come la hash map esista su tutte le partizioni e ogni partizione ha un sottoinsieme di elementi.
Limiti
Avere un limite per partizione consente un throughput più elevato per tutte le strutture dati. Favorisce inoltre le hash map, poiché sono distribuite su tutte le partizioni.
Ad esempio, considera un limite per partizione di 50.000 richieste al minuto (RPM):
- Nel caso migliore, una mappa ordinata e una coda sono limitate a 50.000 RPM, poiché ciascuna risiede su una singola partizione.
- Le richieste alle hash map vengono diffuse tra le chiavi degli elementi, che sono a loro volta diffuse tra le partizioni, quindi le hash map possono avere un limite efficace molto più elevato prima del throttling, molte volte superiore rispetto ad altre strutture dati, a condizione che le richieste siano distribuite su più chiavi di elementi.
- Sebbene le hash map possano raggiungere un throughput complessivo più elevato distribuendo le richieste tra le partizioni, le singole chiavi di elementi sono ancora soggette a limitazioni di frequenza per mantenere la stabilità del sistema. Se la maggior parte del tuo traffico è indirizzato a una singola chiave di elemento, quella chiave potrebbe comunque essere sottoposta a throttling.
- Per scalare in modo efficace ed evitare questi limiti per chiave, implementa lo sharding delle chiavi. Diffondi letture e scritture uniformemente tra più chiavi di elementi per ridurre i colli di bottiglia e mantenere prestazioni fluide.

Per questo motivo, se non hai bisogno di ordinamento o funzionalità "primo in arrivo, primo fuori", le hash map sono generalmente la scelta migliore per una struttura dati di memory store. Per ulteriori informazioni, consulta le migliori pratiche.